UMIhelp

Разработка сайта на UMI.CMS => Шаблоны XSLT => Тема начата: Sumrakrnd от 24 Февраля 2016, 15:59:44

Название: Не выводит блоки с тектом
Отправлено: Sumrakrnd от 24 Февраля 2016, 15:59:44
Доброе время суток
Делаю для внутренних страниц меню текстовые блоки для заполнения
Вот xml
<page id="279" parentId="275" link="/napravleniya/obshcheklinicheskie-napravleniya/akusherstvo/" is-visible="1" is-active="1" object-id="1299" type-id="152" update-time="1456317193" alt-name="akusherstvo">
<basetype id="30" module="content">Страницы контента</basetype>
<name>Акушерство</name>
<properties>
<group id="430" name="common">
<title>Общее</title>
<property id="3" name="h1" type="string" is-important="0">
<title>Поле h1</title>
<value>Акушерство</value>
</property>
</group>
<group id="432" name="more_params">
<title>Дополнительные параметры</title>
<property id="12" name="show_submenu" type="boolean" is-important="0">
<title>Показывать подменю</title>
<value>1</value>
</property>
</group>
<group id="436" name="opisanie_naprpavleniya">
<title>описание напрпавления</title>
<property id="514" name="vidimoe_pole_teksta" type="text" is-important="0">
<title>Видимое поле текста</title>
<value>Тест 1</value>
</property>
<property id="515" name="skrytoe_pole_teksta" type="text" is-important="0">
<title>Скрытое поле текста</title>
<value>Тест 1</value>
</property>
<property id="516" name="chem_zanimayutsya" type="text" is-important="0">
<title>Чем занимаются</title>
<value>Тест 1</value>
</property>
<property id="517" name="spisok_uslug" type="text" is-important="0">
<title>Список  услуг</title>
<value>Тест 1</value>
</property>
<property id="518" name="stoimost_uslug" type="text" is-important="0">
<title>Стоимость услуг</title>
<value>Тест 1</value>
</property>
</group>
</properties>
</page>

т.е. для страниц в разделе меню с id275 была определенная структура заполнения, вот мой xsl, но он не подцепляет Тестовый текст вбитый в поле, а берет только текст из основного контента.
Что не так по запросу у меня?((
 	<xsl:template match="result[page/@id = '275']">
<div id="content"  class="content-select">
<xsl:apply-templates select="document('usel://main/275/152')/udata" mode="line"/>
</div>
</xsl:template>

<xsl:template match="udata" mode="line">
<xsl:apply-templates select="page" mode="line"/>
    </xsl:template>
<xsl:template match="page" mode="line">
<div id="content"  class="content-select">
<div id="tab1-reviews">
<section class="block-text">
<xsl:value-of select="//property[@name='vidimoe_pole_teksta']/value" disable-output-escaping="yes" />
<section class="accordionContent">
<xsl:value-of select="//property[@name='skrytoe_pole_teksta']/value" disable-output-escaping="yes" />
</section>
<section class="more accordionButton">читать полностью</section>
</section>

</div>
</div>
</xsl:template>
Название: Re: Не выводит блоки с тектом
Отправлено: Sumrakrnd от 24 Февраля 2016, 16:55:39
P.S.: для конкретной страницы 279 вывод получается
Название: Re: Не выводит блоки с тектом
Отправлено: Sumrakrnd от 24 Февраля 2016, 17:51:00
Не сильно изменила, для конкретной страницы подключение идет, а для страниц относящихся к определенному типу данных привязка не идет, может не так пишу условие?
Да и проблема, указываю проперти и предикат, но данные не выдает...
<xsl:template match="result[page/@id = '279']">
<xsl:apply-templates select="document('usel://main/275/152')/udata" mode="line"/>
</xsl:template>

<xsl:template match="udata" mode="line">
<xsl:apply-templates select="page" mode="line"/>
</xsl:template>
<xsl:template match="page" mode="line">
<div class="block-reviews">
<ul id="tabs">
<li><a title="tab1-reviews" href="#">Услуги</a></li>
<li><a title="tab2-reviews" href="#">Статьи</a></li>
</ul>
<div id="content" class="content-select">
<div id="tab1-reviews">
<section class="block-text">
<xsl:value-of select="//property[@name='vidimoe_pole_teksta']/value" disable-output-escaping="yes" />
<section class="accordionContent">
<xsl:value-of select="//property[@name='skrytoe_pole_teksta']/value" disable-output-escaping="yes" />
</section>
<section class="more accordionButton">читать полностью</section>
</section>
<section class="block-text">
<xsl:value-of select="property[@name='chem_zanimayutsya']/value" disable-output-escaping="yes" />
</section>
<section class="block-text">
<xsl:value-of select="property[@name='spisok_uslug']/value" disable-output-escaping="yes" />
</section>
</div>

<div id="tab2-reviews">
1231223
</div>
</div>
</div>
</xsl:template>
Название: Re: Не выводит блоки с тектом
Отправлено: Sumrakrnd от 24 Февраля 2016, 19:00:04
Блин, а прописываю к стандартному content, он выводит внесенный текст (( а с другим именем нет
<section class="block-text">
<xsl:value-of select="//property[@name = 'content']/value"/>
</section>
Название: Re: Не выводит блоки с тектом
Отправлено: Sumrakrnd от 24 Февраля 2016, 20:07:49
УРА!
Добавила поля в usel и вызов произошел.

Но вот помоги очень надо Т_Т

Как сделать шаблон для определенного типа данных, в частности тип 152

HELP!




Если что вот мой xml
<selection>
    <target result="pages">
        <type id="{2}"/>
        <category depth="1">{1}</category>
    </target>
    <extended>
        <groups>kontakty</groups>
        <properties>h1, content, header_pic, menu_pic_a, photo, descr, vidimoepole, skrytoepole, zanayutiya, uslugi, priceuslug</properties>
    </extended>
    <limit page="{3}">{4}</limit>
</selection>
Название: Re: Не выводит блоки с тектом
Отправлено: Sumrakrnd от 24 Февраля 2016, 21:03:58
HELP Т_Т Очень-очень ><

151 - это id типа данных страницы, внутри которых находятся данные с id 152 (тип данных) Получается структура
-151
--152
--152
--152
и т.д.

Вот мой запрос, он опять теперь стандартно отображает текст из основного блока.
	<xsl:template match="page[@type-id = '151']">
<xsl:apply-templates select="document('usel://main/152/')/udata" mode="line"/>
</xsl:template>

<xsl:template match="udata" mode="line">
<xsl:apply-templates select="page" mode="line"/>
    </xsl:template>

<xsl:template match="page" mode="line">
<div class="block-reviews">
<ul id="tabs">
<li><a title="tab1-reviews" href="#">Услуги</a></li>
<li><a title="tab2-reviews" href="#">Статьи</a></li>
</ul>
<div id="content" class="content-select">
<div id="tab1-reviews">
<section class="block-text">
1
<xsl:value-of select="//property[@name = 'vidimoepole']/value" disable-output-escaping="yes" />
<section class="accordionContent">
2
<xsl:value-of select="//property[@name = 'skrytoepole']/value" disable-output-escaping="yes" />
</section>
<section class="more accordionButton">читать полностью</section>
</section>
<section class="block-text">
3
<xsl:value-of select="//property[@name = 'zanayutiya']/value" disable-output-escaping="yes" />
</section>
<section class="block-text">
4
<xsl:value-of select="//property[@name = 'uslugi']/value" disable-output-escaping="yes" />
</section>
</div>
<div id="tab2-reviews">
<p>Вторая страница</p>
</div>
</div>
</div>
</xsl:template>
Если дело в xml, то не знаю как его даже изменить (xml кидала выше)

Пока получилось вот таким запросом сделать привязку к одной только странице ((
	<xsl:template match="result[page/@id = '279']">
<xsl:apply-templates select="document('usel://main/275/152')/udata" mode="line"/>
</xsl:template>
Название: Re: Не выводит блоки с тектом
Отправлено: Sumrakrnd от 25 Февраля 2016, 10:12:07
Никто не может помочь? Т.т
Название: Re: Не выводит блоки с тектом
Отправлено: admin от 25 Февраля 2016, 12:16:40
Пропустил порядком моментов в вашем саморазвитии)
Вижу, что вы разобрались с тем, как получать дополнительные поля при usel вызове списка страниц.

У вас остался вопрос о том как выводить ваши текстовые блоки именно для той страницы которую вы обрабатываете.

Для этого в шаблоне
<xsl:template match="page" mode="line">
....
</xsl:template>

у всех xpath запросов к полям, вместо
//property[@name='vidimoe_pole_teksta']/value
делаем запросы вида
.//property[@name='vidimoe_pole_teksta']/value
добавив точку в начале запроса (относиться ко всем запросам), вы как бы указываете, что поиск идет не по всему xml документу, а только внутри  текущей ветке (то есть, внутри текущего page)

P.S. если я правильно понял ваш вопрос.
Название: Re: Не выводит блоки с тектом
Отправлено: Sumrakrnd от 25 Февраля 2016, 12:24:32
Сейчас вопрос уже не в текстовом блоке, просто не знаю, просто очень не хочется плодить много тем..

Вопрос в том, как теперь этот запрос/вид привязать к страницам у которых определенный тип данных.
В данном случае страницы с типом данных id 151.
Т.е. созданная структура страниц, если основываться на типе данных выглядит так:
id152
--id151
--id151
--id151
id152
--id151
--id151
id152
--id151
--id151
--id151

К определенной странице я привязала для того, чтобы разобраться выводом блоков, точнее почему не работают, а когда попыталась сделать привязку по типу данных страницы, ничего не заработало Т_Т
Название: Re: Не выводит блоки с тектом
Отправлено: admin от 25 Февраля 2016, 12:58:52
тут все проще

<xsl:template match="result[page/@type-id = '151']">
...шаблон для страниц типа данных 151...
</xsl:template>
Название: Re: Не выводит блоки с тектом
Отправлено: Sumrakrnd от 25 Февраля 2016, 13:11:07
Эмм.. я правильно сделала? А то не работает...
Просто где теперь прописывать обращение к именам полей или путь где поля находятся?

Так:
	<xsl:template match="result[page/@type-id = '151']">
<div class="block-reviews">
<ul id="tabs">
<li><a title="tab1-reviews" href="#">Услуги</a></li>
<li><a title="tab2-reviews" href="#">Статьи</a></li>
</ul>
<div id="content" class="content-select">
<div id="tab1-reviews">
<section class="block-text">
1
<xsl:value-of select=".//property[@name = 'vidimoepole']/value" disable-output-escaping="yes" />
<section class="accordionContent">
2
<xsl:value-of select=".//property[@name = 'skrytoepole']/value" disable-output-escaping="yes" />
</section>
<section class="more accordionButton">читать полностью</section>
</section>
<section class="block-text">
3
<xsl:value-of select=".//property[@name = 'zanayutiya']/value" disable-output-escaping="yes" />
</section>
<section class="block-text">
4
<xsl:value-of select=".//property[@name = 'uslugi']/value" disable-output-escaping="yes" />
</section>
</div>
<div id="tab2-reviews">
<p>Тест</p>
</div>
</div>
</div>
</xsl:template>

Или так:
	<xsl:template match="result[page/@type-id = '151']">
<xsl:apply-templates select="document('usel://main/151/')/udata" mode="line"/>
</xsl:template>
<xsl:template match="udata" mode="line">
<xsl:apply-templates select="page" mode="line"/>
    </xsl:template>
<xsl:template match="page" mode="line">
<div class="block-reviews">
<ul id="tabs">
<li><a title="tab1-reviews" href="#">Услуги</a></li>
<li><a title="tab2-reviews" href="#">Статьи</a></li>
</ul>
<div id="content" class="content-select">
<div id="tab1-reviews">
<section class="block-text">
1
<xsl:value-of select=".//property[@name = 'vidimoepole']/value" disable-output-escaping="yes" />
<section class="accordionContent">
2
<xsl:value-of select=".//property[@name = 'skrytoepole']/value" disable-output-escaping="yes" />
</section>
<section class="more accordionButton">читать полностью</section>
</section>
<section class="block-text">
3
<xsl:value-of select=".//property[@name = 'zanayutiya']/value" disable-output-escaping="yes" />
</section>
<section class="block-text">
4
<xsl:value-of select=".//property[@name = 'uslugi']/value" disable-output-escaping="yes" />
</section>
</div>
<div id="tab2-reviews">
<p>Тест</p>
</div>
</div>
</div>
</xsl:template>
Название: Re: Не выводит блоки с тектом
Отправлено: admin от 25 Февраля 2016, 13:16:29
если ваша задача звучит так: "Для страниц с типом данных 151, вывести результат usel запроса", то подойдет второй вариант.
Но не понятно, почему у вас в usel запросы такие параметры
<xsl:apply-templates select="document('usel://main/151/')/udata" mode="line"/>
ведь первый параметр это id раздела, а у вас там 151, что больше похоже на type-id.
Название: Re: Не выводит блоки с тектом
Отправлено: Sumrakrnd от 25 Февраля 2016, 13:19:19
ой... я перепутала...
151 - это тип раздела
152 - это страницы
id151
--id152
--id152
--id152
id151
--id152
--id152
id151
--id152
--id152
--id152
Название: Re: Не выводит блоки с тектом
Отправлено: admin от 25 Февраля 2016, 13:25:20
Давайте вы еще раз определимся что вы делаете и для какого результата. Так как образовалась путаница где в ваших ответах type-id, а где id страницы. Так же не понятно для чего вы выводите на определенных страницах usel выборки.

Если можно, то с живыми примерами для полного понимания задачи.
Название: Re: Не выводит блоки с тектом
Отправлено: Sumrakrnd от 25 Февраля 2016, 13:36:52
id 151 - это тип данных раздела, где находятся созданные страницы
id 152 - это тип данных страницы, для них нужен определенный шаблон запроса/вида страницы
У типа данных назначение типа стоит страница контента (вдруг важно)

т.е. в страницы с типом данных id152 должен подключатся вот такой шаблон с определенными полями value
(mode или match могут быть изменены, пишу без всех result и usel, чтобы не путаться)

<xsl:template match="page" mode="line">
<div class="block-reviews">
<ul id="tabs">
<li><a title="tab1-reviews" href="#">Услуги</a></li>
<li><a title="tab2-reviews" href="#">Статьи</a></li>
</ul>
<div id="content" class="content-select">
<div id="tab1-reviews">
<section class="block-text">
1
<xsl:value-of select=".//property[@name = 'vidimoepole']/value" disable-output-escaping="yes" />
<section class="accordionContent">
2
<xsl:value-of select=".//property[@name = 'skrytoepole']/value" disable-output-escaping="yes" />
</section>
<section class="more accordionButton">читать полностью</section>
</section>
<section class="block-text">
3
<xsl:value-of select=".//property[@name = 'zanayutiya']/value" disable-output-escaping="yes" />
</section>
<section class="block-text">
4
<xsl:value-of select=".//property[@name = 'uslugi']/value" disable-output-escaping="yes" />
</section>
</div>
<div id="tab2-reviews">
<p>Тест</p>
</div>
</div>
</div>
</xsl:template>

По теме разобралась почему не выводились value, как оказалось надо было прописать в usel нужные поля, а так как я с usel не работала ни разу, первый раз увидела в umi, поэтому долго доходило с полями...
Но проблема оказалась для меня сложнее ((
Название: Re: Не выводит блоки с тектом
Отправлено: admin от 25 Февраля 2016, 13:43:00
а для чего вы приводили usel запросы в примерах выше? чтобы на страницах с типом данных 151 выводить список дочерних к ним страниц с типом данных 152?
Название: Re: Не выводит блоки с тектом
Отправлено: Sumrakrnd от 25 Февраля 2016, 13:55:34
Я просто не знала как это сделать по другому.
Название: Re: Не выводит блоки с тектом
Отправлено: admin от 25 Февраля 2016, 14:02:59
это не страшно, главное уточните, правильно ли я понял, что usel на странице с type-id = 151 планировался для вывода списка дочерних страниц с type-id = 152?
Название: Re: Не выводит блоки с тектом
Отправлено: Sumrakrnd от 25 Февраля 2016, 16:23:01
Простите, я не поняла как, но первый вариант, неожиданно взял и заработал О_О

Реально не знаю как....
Где просто идет обращение к типу....
<xsl:template match="result[page/@type-id = '152']">

Спасибо вам большое ^____^!