Nav linking to non-public pages

Rhythmyx 6.1 question: -
I have a problem on my published site where the navigation elements are creating links to landing pages which are not public. It seems that when the item filter being applied is “public” then it filters out non-public navons, but it does not filter based on the state of the landing page. The result is broken links on the site.

I guess I need to change my nav templates so that they test the state of the landing page, and depending on the current filter (preview / publish) it will determine whether to create a link or not. I can get a handle to the landing page from the template, but I’m not sure what property to look at to determine the type of state the content item is in (public, ignore, archive etc.) Or is there an altogether easier way of doing this?

Thanks in advance!
Tim

Tim,

One other way to do this is to change the relationship on the Nav Landing Page slot to “AA Mandatory”. Then you will not be allowed to approve a Navon whose landing page isn’t public.

I think it better not to allow people to add Nav Sections that don’t have public landing pages.

Dave

Thanks Dave, that sounds exactly what we need.

I think we’d also want to change the sys_UnpublishMandatory relationship effect to “force transition= yes” so that if the landing page expires it forces the navon to expire as well, if my understanding is correct.

I presume if I change the relationship type in the slot it’ll only affect new landing page relationships so I’ll have to go and update the existing relationships to the new type. Is it stored in PSX_OBJECTRELATIONSHIP.CONFIG_ID? That seems to tie in with the Id’s of the system relationship Types.

Cheers,

Tim

Tim,

You’re on the right track. You may wish to create a new “Custom Relationship” in the AA category and configure it the way you need rather than using the default AA Mandatory relationship.

You’re also correct that changing the relationship in the slot definition only affects new relationships, not existing ones. You’ll need to change the existing ones programmatically (or else remove and re-add the landing pages if the site is small enough).

Dave

Dave,

Thanks for your help. I created the custom relationship as described and it correctly prevents navons going public if their landing page is not public. It will also force a landing page to expire if the navon is unpublished.

The problems at the moment are: -

  • If the landing page is not set, then the navon can still be pushed public.
  • If the landing page expires, the navon remains public

In the first case the navigation node “nav:url” property is set to “#”, so I can easily filter this out in my Velocity code. In the second case the “nav:url” property is set to the old url, so if unpublishing has occurred, the link will be dead.

I am confused as to why Rhythmyx is setting the “nav:url” property to a url when the landing page is not public. From what I have read about the assembly process the parameters should be passed through to every item assembled. Rhythmyx should therefore pass the “sys_filter=public” parameter through to the landing page slot. The “public” filter should then be applied to the landing page slot and remove any non-public items. Rhythmyx would then act in the same way as if there were no landing page defined, i.e. set the “nav:url” property to “#”. This does not seem to be happening. Any ideas?

Many thanks,
Tim

Tim,

You can try adding validation to the landing page slot. Unless there is at least one item in the slot, fail the validation.

We used to do this in 5.x, but I’ve not had to actually implement in 6.x yet (there is a way, it’s just not at the top of my head right now).

One question: the behaviour of item filters changed in Patch Rx-11515, which was released in Mar 2007. Are you running a system that is older or newer than that?

Dave

Dave,

I’m currently testing on 6.5 Build 200705R01 (production is still 6.1, probably pre-March)

Thanks for the tip on slot validation, I’ll look into it.

Tim

Tim,

Some further investigation of the code shows that the item filters are not called when populating the landing page. We think that they should be.

Please let Tech Support know about your priorities as to resolution of this problem

Dave

Thanks Dave, we’ve reported this.
Tim