В прошлом посте, мы сделали модуль "Верхнее меню", но не разобрали, как же он работает?
Давай те по строчкам разберем листинг скрипта::
Строка 01:
Строка 02:
Строка 03-09:
Строка 10:
Строка 12:
Строка 15:
Строка 16:
Строка 20, 28:
Строка 21, 27:
$currentPage/ancestor-or-self::* [@level=$level]/* [@isDoc and string(umbracoNaviHide) != '1']
И получает все дочерние страницы уровня $level. А параметр string(umbracoNaviHide) != '1' говорит, что страница должна быть опубликована.
Строка 22-26:
Давай те по строчкам разберем листинг скрипта::
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xsl:stylesheet [ <!ENTITY nbsp " "> ]>
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxml="urn:schemas-microsoft-com:xslt"
xmlns:umbraco.library="urn:umbraco.library" xmlns:Exslt.ExsltCommon="urn:Exslt.ExsltCommon" xmlns:Exslt.ExsltDatesAndTimes="urn:Exslt.ExsltDatesAndTimes" xmlns:Exslt.ExsltMath="urn:Exslt.ExsltMath" xmlns:Exslt.ExsltRegularExpressions="urn:Exslt.ExsltRegularExpressions" xmlns:Exslt.ExsltStrings="urn:Exslt.ExsltStrings" xmlns:Exslt.ExsltSets="urn:Exslt.ExsltSets"
exclude-result-prefixes="msxml umbraco.library Exslt.ExsltCommon Exslt.ExsltDatesAndTimes Exslt.ExsltMath Exslt.ExsltRegularExpressions Exslt.ExsltStrings Exslt.ExsltSets ">
<xsl:output method="xml" omit-xml-declaration="yes" />
<xsl:param name="currentPage"/>
<!-- Input the documenttype you want here -->
<xsl:variable name="level" select="1"/>
<xsl:template match="/">
<!-- The fun starts here -->
<ul>
<xsl:for-each select="$currentPage/ancestor-or-self::* [@level=$level]/* [@isDoc and string(umbracoNaviHide) != '1']">
<li>
<a href="{umbraco.library:NiceUrl(@id)}">
<xsl:value-of select="@nodeName"/>
</a>
</li>
</xsl:for-each>
</ul>
</xsl:template>
</xsl:stylesheet>
Строка 01:
<?xml version="1.0" encoding="UTF-8"?>Стандартный заголовок XML-файла.
Строка 02:
<!DOCTYPE xsl:stylesheet [ <!ENTITY nbsp " "> ]>Здесь мы задаем, как будет отображаться специальная комбинация символов (пробел).
Строка 03-09:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxml="urn:schemas-microsoft-com:xslt" xmlns:umbraco.library="urn:umbraco.library" xmlns:Exslt.ExsltCommon="urn:Exslt.ExsltCommon" xmlns:Exslt.ExsltDatesAndTimes="urn:Exslt.ExsltDatesAndTimes" xmlns:Exslt.ExsltMath="urn:Exslt.ExsltMath" xmlns:Exslt.ExsltRegularExpressions="urn:Exslt.ExsltRegularExpressions" xmlns:Exslt.ExsltStrings="urn:Exslt.ExsltStrings" xmlns:Exslt.ExsltSets="urn:Exslt.ExsltSets" exclude-result-prefixes="msxml umbraco.library Exslt.ExsltCommon Exslt.ExsltDatesAndTimes Exslt.ExsltMath Exslt.ExsltRegularExpressions Exslt.ExsltStrings Exslt.ExsltSets ">Список подключаемых библиотек, функции которых мы можем использовать в этом примере мы используем ф-цию umbraco.library:NiceUrl(...).
Строка 10:
<xsl:output method="xml" omit-xml-declaration="yes" />Определяем метод вывода информации, в нашем случае XML (HTML).
Строка 12:
<xsl:param name="currentPage"/>Единственный наш параметр currentPage, его инициализирует Umbraco и присваивает ему значение объект текущая страница. Грубо говоря, каждая наша страница представляется, как XML файл определенной структуры.
Строка 15:
<xsl:variable name="level" select="1"/>Задаем параметр, который указывает страницы какого уровня мы выводим.
Строка 16:
<xsl:template match="/">Начало корневого Template, отсюда начинает выполняться наш скрипт.
Строка 20, 28:
<ul>....</ul>Часть верстки (не нумерованный список) в которую мы будем добавлять пункты меню.
Строка 21, 27:
<xsl:for-each select="$currentPage/ancestor-or-self::* [@level=$level]/* [@isDoc and string(umbracoNaviHide) != '1']"> ..... </xsl:for-each>Собственно сам цикл, который делает xpath запрос:
$currentPage/ancestor-or-self::* [@level=$level]/* [@isDoc and string(umbracoNaviHide) != '1']
И получает все дочерние страницы уровня $level. А параметр string(umbracoNaviHide) != '1' говорит, что страница должна быть опубликована.
Строка 22-26:
<li>
<a href="{umbraco.library:NiceUrl(@id)}">
<xsl:value-of select="@nodeName"/>
</a>
</li>
Выводим пункт меню. Функция umbraco.library:NiceUrl(@id) - по ID страницы возвращает "красивый" URL адрес это страницы.<xsl:value-of select="@nodeName"/>- Выводит название Нашей страницы со вкладки "Propertie", этот параметр можно заменить скажем на "nameField".
Комментариев нет:
Отправить комментарий