I understand the purpose of manual slots for linking together different content item (e.g. a slot for linking a contact to a press release.) The purpose being that, if the content item linked to is modified, the publisher part of Rhythmyx knows to re-publish the content item linked from.
My question is how does the system know to re-publish a page that includes an automated slot if one of the content items that the content finder returns has been modified? There isn’t a relationship established between these content items, they are merely the ones that match the query’s criteria (e.g. contacts automatically found for a press release, by searching based on a field in the contact content type, such as a department drop-down.) Should one set up all pages containing automated slots to be republished every time an edition is run?
A template containing an auto slot always publishes regardless of the edition (incremental/full). This is probably for the precise reason that you mentioned below…
Update:
I did a quick search on the 6.5.2 documentation and couldn’t find where it specifically says that templates with automated slots would always publish. (ie. the section in the implementation guide, pg 187, for automated slots didn’t seem to have it) This must be one of those things you pick up along the way…
Thank you for the replies. I think I’ve got the basic idea. If I’ve read the linked thread correctly, if a content type has an allowed template that contains a slot that uses a content finder other than sys_RelationshipContentFinder, it will publish all items of that type every time any site is published.
Is this correct? Or does it looks for slots which use a content finder other than sys_RelationshipContentFinder, and then publish any item of a type listed in the allowed content types list for that slot? The difference is subtle, but it may be important for us.
if a content type has an allowed template that contains a slot that uses a content finder other than sys_RelationshipContentFinder, it will publish all items of that type every time
All Slot Content finders have a property named “type”. This can be one of 3 values: “ACTIVE ASSEMBLY”, “COMPUTED” and “AUTOSLOT”. (you can see this in the JavaDoc for IPSSlotContentFinder)
The exact rule is that any Content Item which belongs to a Content Type which has at least one Template which contains a Slot whose Slot Finder is of type “AUTOSLOT” will be re-published every time (even on incremental editions).
It’s possible to get clever and define your own Slot finders that are “COMPUTED” rather than “AUTOSLOT”.
Sorry to take this thread past the point where 99% of people have no interest whatsoever, but how does it determine which slots are used by a template? Is it purely based on which slots have been the added to the “Contained Slots” list in the “Slots” tab of each template? If I add a call to a macro such as #slot_simple(“slotname”) to the source of a template, but do not add the same slot to the list of contained slots, will it pick up on that and check whether that slot is an AUTOSLOT? If I take it a further step, and create my own macro that then calls #initslot() using a slot name which is hardcoded in rx_assembly.vm, surely it cannot then know that a template which calls my macro is using that slot?
It uses the registrations. It is the implementers responsibility to make sure that the slots actually used in a template are properly registered with the template. There is no way to analyze the template source in the generic case and find all slots to auto register them.
I have found that you do not need to register auto slots in order for them to work. So if you have a content type where you don’t want to publish it in every incremental edition you can choose not to register the auto slots. If you want to find all the places where you have registered a slot which uses an AutoSlotContentFinder this SQL may help (works for r6.5.2): -
select ctp.contenttypeid,contenttypename,template_id, s.label, s.slottype
from
rxvariantslottype vs, rxslottype s, psx_contenttype_template ctp, contenttypes cty
where
vs.slotid = s.slotid
and vs.variantid = ctp.template_id
and finder =‘Java/global/percussion/slotcontentfinder/sys_AutoSlotContentFinder’
and ctp.contenttypeid = cty.contenttypeid
order by ctp.contenttypeid