Итак, мы создали метатип и добавили его элемент (мета-поле) на страницу. По умолчанию опция ShowDate включена.
Теперь изменим функцию ShowCreateDate, которую мы создали ранее, так, чтобы она показывала дату последнего изменения на конкретной странице сайта, только если опция ShowDate включена.
Сначала в эту функцию мы добавим вызов другой функции - функции получения элементов данных для метатипа ShowDateSettings: GetShowDateSettingsXml.
Так как эта функция будет возвращать все элементы этого метатипа, мы отфильтруем их так, чтобы возвращался только элемент добавленный на текущую страницу. Фильтр по странице работает и используется точно также, как и фильтр для функций, возвращающих элементы данных из папки данных (см. Создание и использование папок данных (2)).
В шаблоне функции мы будем проверять значение поля ShowDate: и если оно будет true, мы будем показывать дату, а если false - не будем.
- В разделе Функции, откроем для редактирования нашу функцию Demo.ShowChangeDate.
- На вкладке Вызовы функций добавим функцию Demo.ShowDateSettings.GetShowDateSettingsXml.
- У этой функции выберем параметр Filter и в качестве Типа параметра вызовем Функцию: Demo.ShowDateSettings.ActivePageReferenceFilter.
- Оставим значение по умолчанию для ее параметра Page Scope: Current page (текущая страница).
На вкладке Просмотр можно увидеть, что именно возвращает функция GetShowDateSettingsXml.
Теперь изменения в шаблоне.
- На вкладке Шаблон добавим переменную ShowDate (для удобства)...
<xsl:variable name="ShowDate" select="/in:inputs/in:result[@name='GetShowDateSettingsXml']/ShowDateSettings/@ShowDate" />
- … и между тегами <body></body> изменим код так, чтобы выполнялась проверка поля ShowDate:
<body>
<xsl:if test="$ShowDate='true'">Последнее изменение: <xsl:value-of select="$ChangeDate" />
</xsl:if></body>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:in="http://www.composite.net/ns/transformation/input/1.0"
xmlns:lang="http://www.composite.net/ns/localization/1.0"
xmlns:f="http://www.composite.net/ns/function/1.0"
xmlns:de="#dateExtensions"
xmlns="http://www.w3.org/1999/xhtml"
exclude-result-prefixes="xsl in lang f">
<xsl:variable name="ChangeDate" select="/in:inputs/in:result[@name='GetIPageXml']/IPage/@ChangeDate" />
<xsl:variable name="ShowDate" select="/in:inputs/in:result[@name='GetShowDateSettingsXml']/ShowDateSettings/@ShowDate" />
<xsl:template match="/">
<html>
<head />
<body>
<xsl:if test="$ShowDate='true'">
<div id="LastModifiedDate">
Последнее изменение: <xsl:value-of select="de:ShortDateFormat($ChangeDate)" />
</div>
</xsl:if>
</body>
</html>
</xsl:template>
</xsl:stylesheet>:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:in="http://www.composite.net/ns/transformation/input/1.0"
xmlns:lang="http://www.composite.net/ns/localization/1.0"
xmlns:f="http://www.composite.net/ns/function/1.0"
xmlns:de="#dateExtensions"
xmlns="http://www.w3.org/1999/xhtml"
exclude-result-prefixes="xsl in lang f">
<xsl:variable name="ChangeDate" select="/in:inputs/in:result[@name='GetIPageXml']/IPage/@ChangeDate" />
<xsl:variable name="ShowDate" select="/in:inputs/in:result[@name='GetShowDateSettingsXml']/ShowDateSettings/@ShowDate" />
<xsl:template match="/">
<html>
<head />
<body>
<xsl:if test="$ShowDate='true'">
<div id="LastModifiedDate">
Последнее изменение: <xsl:value-of select="de:ShortDateFormat($ChangeDate)" />
</div>
</xsl:if>
</body>
</html>
</xsl:template>
</xsl:stylesheet>:
Так как мы ее уже добавили в шаблоны страниц сайта, можно сразу проверить, как все будет работать.
- Откроем несколько страниц для редактирования в разделе Контент.
- На вкладке Метаданные уберем “галочку” из поля ShowDate.
- Сохраним и опубликуем изменения.
- Посмотрим эти страницы в браузере (или на вкладке Просмотр).
На этих страницах дат не будет.
На этом все про метатипы.
Это достаточно простой пример про метатипы, но он дает неплохое начальное представление о их функции и возможностях.
Комментариев нет:
Отправить комментарий