Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”

0 Пользователей и 1 Гость просматривают эту тему.

*

Sumrakrnd

  • ****
  • 311
  • +1/-0
  • Учусь «на примерах»
    • Просмотр профиля
Доброго времени суток.
У меня такая ситуация, есть страница на которой текст в блоках с разным оформлением (всего их будет 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>

*

Sumrakrnd

  • ****
  • 311
  • +1/-0
  • Учусь «на примерах»
    • Просмотр профиля
Уиии...
Я решила проблему
<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>

*

Sumrakrnd

  • ****
  • 311
  • +1/-0
  • Учусь «на примерах»
    • Просмотр профиля
Все-таки возникла сложность с вызовом из 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>
« Последнее редактирование: 29 Ноября 2016, 17:43:31 от Sumrakrnd »

*

Sumrakrnd

  • ****
  • 311
  • +1/-0
  • Учусь «на примерах»
    • Просмотр профиля
т.е. я не прописываю <xsl:apply-templates select="/" mode="accordion-content" />
а вписываю <xsl:apply-templates select="document(concat('usel://block-content-accordion/148/', @id))/udata" mode="accordion-content_block"/> и остальные выводы в одном файле, то все работает @_@

Хотелось бы вывести этот шаблон в отдельный файл >.<

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
А можно ссылку на usel или сам xml, который возвращается при запросе  <xsl:apply-templates select="document(concat('usel://block-content/142,143,147/', page/@id))/udata" mode="block-content_block"/>?

*

Sumrakrnd

  • ****
  • 311
  • +1/-0
  • Учусь «на примерах»
    • Просмотр профиля
А можно ссылку на 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>


« Последнее редактирование: 09 Декабря 2016, 13:02:05 от Sumrakrnd »