Инструменты пользователя

Инструменты сайта


articles:composite:3._добавление_xslt_функций

В composite c1 xslt функции являются очень удобный инструментом для выведении определенной информации

1. Добавление xslt функций

1. Для того, чтобы добавить новую функцию перейдите в раздел Функции и нажмите правой кнопкой мыши по папке XSLT функции (или по любой вложенной папке, в данном случае установлен Пакет News) рис.1.1.

Щёлкните, чтобы открыть

Рис.1.1.добавление xslt функции

2. Автоматический появление новостей с помощью xslt функции

В данном разделе разбирается пример написания простой xslt функции

ВНИМАНИЕ! Необходимо установить пакет Composite.News в разделе Система для того, чтобы пример заработал

После того, как добавили новую функцию и установили пакет кликните по ней и перейдите во вкладку Шаблон и впишите данный код из листинга 2.1

Листинг 2.1.

 <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="http://www.w3.org/1999/xhtml" xmlns:n="http://c1.composite.net/News"
 xmlns:df="#dateExtensions" xmlns:lang="http://www.composite.net/ns/localization/1.0" 
 xmlns:mp="#MarkupParserExtensions" exclude-result-prefixes="xsl in df n lang">
<xsl:param name="items" select="/in:inputs/in:result[@name='GetNewsItemXml']/*" />   <!-- items здесь обозначает все Новости добавленные на сайте  -->
<xsl:template match="/">
	<html>
		<head></head>
		<body>
			<xsl:if test="count($items) &gt; 0">          <!--  если на странице новостей отражено меньше чем указано (параметр Paze size в разделе "Вызовы функций" ), то вывести  -->
				<xsl:apply-templates mode="NewsItem" select="$items" /> <!-- отобразить мод NewsItem из выбранной новости -->
			</xsl:if>
		</body>
	</html>
</xsl:template>
<xsl:template mode="NewsItem" match="*">  <!--  мод NewsItem  -->
	<div>
	
		<p style="margin-left:145px;" class="textalignleft"> <!-- {n:GetPathInfo(@TitleUrl,@Date)} ф-я для получения url из входных параметров XML @TitleUrl и @Date   -->
			
			<a href="~/page({@PageId.Id}){n:GetPathInfo(@TitleUrl,@Date)}">  <!-- ~/page()  позволяет получить из параметра @PageId.Id ссылку страницы -->
				<xsl:value-of select="@Title" /> <!-- @Title это входное поле XML. Из входной информации XML ф-я XSLT обрабатывает её в HTML. -->
			</a>
		</p>
		<div style="clear:borh;" class="clear"></div>
	</div>
</xsl:template>
</xsl:stylesheet>

Сохраните шаблон и запустите данную функцию (добавьте ф-ю на любую страницу и посмотрите страницу с данной функцией в браузере), она не будет работает , т.к. не настроены Вызовы функций.

Для того чтобы вызывать стороннею ф-ю перейдите в раздел Вызовы функций нажмите Добавить и выберете функцию GetNewsItemXml (Composite→News→NewsItem→GetNewsItemXml) рис.2.1

Щёлкните, чтобы открыть

Рис.2.1. Вызов функции

Внимательно изучите поля в функции GetNewsItemXml.

Selected fields - в данном поле настраивается входные параметры XML (которые вызываются в коде Шаблона @PageId.Id вызовет PageId.Id и т.д.) Т.е. в этом поле выбираете только те поля, которые вам необходимы! для выведения определенной информации.

<a href="~/page({@PageId.Id})">  <!-- параметр PageId.Id и т.д. -->

В нашем примеры необходимы - PageId.Id , Title , TitleUrl , Date

После того как выбраны необходимые параметры функция заработает на сайте.

Если поле Filter выбрано по умолчанию , то в данной функции будут показываться все новости со всех страниц.

Если необходимо отображение только с одной страницы новостей , а не со всех страниц , то для этого необходимо настроить фильтр:

1) Выберите для filter функцию FieldPredicatesFilter (Composite→News→NewsItem→FieldPredicatesFilter)

2) В поле PageId filter выберете функцию GuidEquals (Composite→Utils→Predicates→GuidEquals) рис.2.2

Щёлкните, чтобы открыть

Рис.2.2. Добавление функции к Filter , которая проверяет по уникальному идентификатору страницы (если идентификатор равен определенному значению, то новость отобразится)

3) В значение функции GuidEquals вписывается идентификатор той страницы , с которой необходимы новости рис.2.2

articles/composite/3._добавление_xslt_функций.txt · Последнее изменение: 2022/11/29 18:40 — 127.0.0.1

Если не указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: CC Attribution 4.0 International
CC Attribution 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki