Search the FirstSpirit Knowledge Base
Hi.
is there a way to check inside the rules of a section tempate, if the uid of the pagetemplate in use equals to some string?
Below a non working example, like I would excpect it to be.
<RULE>
<IF>
<EQUAL>
<PROPERTY name="value" source="#global.page.template.uid"/>
<TEXT>homepage</TEXT>
</EQUAL>
</IF>
<WITH>
<FALSE/>
</WITH>
<DO>
<PROPERTY name="VISIBLE" source="#form.target_group"/>
</DO>
</RULE>
Hi sharzmeier,
you could try this:
Define a (hidden) text component within the (all) pagetemplates, which saves the template UID, e.g.
<CMS_INPUT_TEXT name="pt_templateuid" hidden="no">
<LANGINFOS>
<LANGINFO lang="*" label="templateuid"/>
</LANGINFOS>
</CMS_INPUT_TEXT>
<RULE when="ONLOCK">
<WITH>
<PROPERTY name="TEMPLATE" source="#global"/>
</WITH>
<DO>
<PROPERTY name="VALUE" source="test"/>
</DO>
</RULE>
Now you can use the FormDataValueService to copy this information to an appropriate (hidden) component within the section template
<CMS_INPUT_TEXT name="st_pagetemplate_uid" hidden="no">
<LANGINFOS>
<LANGINFO lang="*" label="pagetemplate uid"/>
</LANGINFOS>
</CMS_INPUT_TEXT>
<RULE>
<SCHEDULE delay="0" id="pagetemplate" service="FormDataValueService">
<PARAM name="UID">
<PROPERTY name="PAGE_UID" source="#global"/>
</PARAM>
<PARAM name="UIDTYPE">
<TEXT>PAGESTORE</TEXT>
</PARAM>
<PARAM name="FIELD">
<TEXT>pt_templateuid</TEXT>
</PARAM>
<PARAM name="LANGUAGE">
<TEXT>DE</TEXT>
</PARAM>
</SCHEDULE>
<DO>
<PROPERTY name="VALUE" source="st_pagetemplate_uid"/>
</DO>
</RULE>
Now you can use the content of this component within your rule
Best regards
Holger
Hint: This will only work for changed pages. The formDataValueService reads the stored information. So the page has to be saved once with the pagetemplate information - afterwards it will be available within the section template
Hi sharzmeier,
you could try this:
Define a (hidden) text component within the (all) pagetemplates, which saves the template UID, e.g.
<CMS_INPUT_TEXT name="pt_templateuid" hidden="no">
<LANGINFOS>
<LANGINFO lang="*" label="templateuid"/>
</LANGINFOS>
</CMS_INPUT_TEXT>
<RULE when="ONLOCK">
<WITH>
<PROPERTY name="TEMPLATE" source="#global"/>
</WITH>
<DO>
<PROPERTY name="VALUE" source="test"/>
</DO>
</RULE>
Now you can use the FormDataValueService to copy this information to an appropriate (hidden) component within the section template
<CMS_INPUT_TEXT name="st_pagetemplate_uid" hidden="no">
<LANGINFOS>
<LANGINFO lang="*" label="pagetemplate uid"/>
</LANGINFOS>
</CMS_INPUT_TEXT>
<RULE>
<SCHEDULE delay="0" id="pagetemplate" service="FormDataValueService">
<PARAM name="UID">
<PROPERTY name="PAGE_UID" source="#global"/>
</PARAM>
<PARAM name="UIDTYPE">
<TEXT>PAGESTORE</TEXT>
</PARAM>
<PARAM name="FIELD">
<TEXT>pt_templateuid</TEXT>
</PARAM>
<PARAM name="LANGUAGE">
<TEXT>DE</TEXT>
</PARAM>
</SCHEDULE>
<DO>
<PROPERTY name="VALUE" source="st_pagetemplate_uid"/>
</DO>
</RULE>
Now you can use the content of this component within your rule
Best regards
Holger
Hint: This will only work for changed pages. The formDataValueService reads the stored information. So the page has to be saved once with the pagetemplate information - afterwards it will be available within the section template
tricky, but it works 🙂
Thanks! Very helpful!