Доброго времени суток.
У меня такая ситуация, есть страница на которой текст в блоках с разным оформлением (всего их будет 7), решила эту проблему создав типы данных для создаваемых страниц и с помощью usel вывожу данные. Но проблема в том, что они выводятся как указала по шаблону для страницы сперва 143, потом 142...
Как сделать или что переделать, чтобы выводилось в том порядке, в котором создавались сами страницы?
<?xml version="1.0" encoding="utf-8"?>
<selection>
<target result="pages">
<type id="142"/> <!-- для друго блока 143 -->
<category depth="{3}">{2}</category>
</target>
<extended>
<properties>h1, content</properties>
</extended>
</selection>
Вот шаблон на страницу:
<xsl:template match="result" mode="contentbar-content">
<div class="block-text">
<xsl:value-of select=".//property[@name = 'content']/value" disable-output-escaping="yes"/>
</div>
<xsl:apply-templates select="/" mode="simple-content" />
<xsl:apply-templates select="/" mode="title-content" />
</xsl:template>
Вот шаблон одного из текстового блока:
<xsl:template match="result" mode="simple-content" >
<!-- так же подставляется 143 -->
<xsl:apply-templates select="document(concat('usel://simple-content/142/', page/@id))/udata" mode="simple-content_block"/>
</xsl:template>
<xsl:template match="udata" mode="simple-content_block">
<xsl:apply-templates select="page" mode="simple-content_block"/>
</xsl:template>
<xsl:template match="page" mode="simple-content_block" >
<!-- тут еще вызывается доп поле для типа 143-->
<div class="block-text">
<xsl:value-of select=".//property[@name = 'content']/value" disable-output-escaping="yes"/>
</div>
</xsl:template>
Уиии...
Я решила проблему
<selection>
<target result="pages">
<type id="142"/>
<type id="143"/>
<category depth="{3}">{2}</category>
</target>
<extended>
<properties>h1, content, separate_title_block_text</properties>
</extended>
</selection>
<xsl:template match="result" mode="block-content">
<xsl:apply-templates select="document(concat('usel://block-content/142,143/', page/@id))/udata" mode="block-content_block"/>
</xsl:template>
<xsl:template match="udata" mode="block-content_block">
<xsl:apply-templates select="page" mode="block-content_block"/>
</xsl:template>
<xsl:template match="page" mode="block-content_block" >
<xsl:if test="@type-id='143'">
<h4 class="spec_title">
<span>
<xsl:value-of select=".//property[@name = 'separate_title_block_text']/value" disable-output-escaping="yes"/>
</span>
</h4>
</xsl:if>
<div class="block-text">
<xsl:value-of select=".//property[@name = 'content']/value" disable-output-escaping="yes"/>
</div>
</xsl:template>
</xsl:stylesheet>
Все-таки возникла сложность с вызовом из 3-ий вложенности...
Добавился в прошлый usel еще <type id="147"/>
И еще один тип данных 148, который вкладывается в 147
т.е. структура в админке выглядит так:
-Раздел с текстовыми блоками
--142
--143
--142
--147
---148
--142
Шаблон вышел такой:
<xsl:template match="result" mode="block-content">
<xsl:apply-templates select="document(concat('usel://block-content/142,143,147/', page/@id))/udata" mode="block-content_block"/>
</xsl:template>
<xsl:template match="udata" mode="block-content_block">
<xsl:apply-templates select="page" mode="block-content_block"/>
</xsl:template>
<xsl:template match="page" mode="block-content_block" >
<xsl:if test="@type-id='143'">
<h4 class="spec_title">
<span>
<xsl:value-of select=".//property[@name = 'separate_title_block_text']/value" disable-output-escaping="yes"/>
</span>
</h4>
</xsl:if>
<xsl:if test="not(@type-id='147')">
<div class="block-text">
<xsl:value-of select=".//property[@name = 'content']/value" disable-output-escaping="yes"/>
</div>
</xsl:if>
<xsl:if test="@type-id='147'">
<div class="methods">
<div class="block-text">
<xsl:value-of select=".//property[@name = 'content']/value" disable-output-escaping="yes"/>
</div>
<ul id="cbp-ntaccordion2_3" class="cbp-ntaccordion">
<xsl:apply-templates select="/" mode="accordion-content" /> <!-- сюда должна подтягивать информация 148 типа-->
</ul>
</div>
</xsl:if>
</xsl:template>
Это шаблон для страницы с 148 типом данных:
<xsl:template match="result" mode="accordion-content">
<xsl:text>Test</xsl:text><!-- проверить вызывается информация или нет, но это слово не отображается -->
<xsl:apply-templates select="document(concat('usel://block-content-accordion/148/', page/@id))/udata" mode="accordion-content_block"/>
</xsl:template>
<xsl:template match="udata" mode="accordion-content_block">
<xsl:apply-templates select="page" mode="accordion-content_block"/>
</xsl:template>
<xsl:template match="page" mode="accordion-content_block">
<li>
<h3 class="cbp-nttrigger">
<span>
<xsl:value-of select=".//property[@name='h1']/value"/>
</span>
</h3>
<div class="cbp-ntcontent">
<div class="block-text">
<xsl:value-of select=".//property[@name='content']/value" disable-output-escaping="yes"/>
</div>
</div>
</li>
</xsl:template>
usel запрос для block-content-accordion:
<selection>
<target result="pages">
<type id="148"/>
<category depth="{3}">{2}</category>
</target>
<extended>
<properties>h1, content</properties>
</extended>
</selection>
А можно ссылку на usel или сам xml, который возвращается при запросе <xsl:apply-templates select="document(concat('usel://block-content/142,143,147/', page/@id))/udata" mode="block-content_block"/>?
Воть, при том положение блоков зависит от того, как они расположены в структуре ^^
http://ott.cv65275.tmweb.ru/usel://block-content/142,143,147,160/858
<?xml version="1.0" encoding="utf-8"?>
<selection>
<target result="pages">
<type id="142"/>
<type id="143"/>
<type id="147"/>
<type id="160"/>
<category depth="{3}">{2}</category>
</target>
<extended>
<properties>h1, content, separate_title_block_text</properties>
</extended>
</selection>