Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”
Шаблон отображения списка категорий (магазин "Современный")

Автор manadsgnРаздел Шаблоны XSLT

Ответов: 2
Просмотров: 3090
Последний ответ 03 Июля 2012, 15:22:23
от manadsgn
DOCTYPE - если нужен <!DOCTYPE html>

Автор manadsgnРаздел Шаблоны XSLT

Ответов: 1
Просмотров: 2389
Последний ответ 03 Июля 2012, 11:11:43
от manadsgn
Шаблон для вывода новостей с 3 разными блоками

Автор koroganРаздел Шаблоны TPL

Ответов: 3
Просмотров: 3325
Последний ответ 01 Октября 2011, 03:05:48
от admin
Добавление атрибута ALT в шаблон catalog-thumbnail

Автор KTIРаздел Шаблоны XSLT

Ответов: 8
Просмотров: 6203
Последний ответ 17 Октября 2012, 10:36:32
от admin
Шаблон вывода редактирования типа данных

Автор crazygeorgioРаздел Шаблоны XSLT

Ответов: 2
Просмотров: 2423
Последний ответ 29 Мая 2013, 21:28:33
от crazygeorgio

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

*

aghigay

  • *****
  • 611
  • +28/-3
  • Просто пытаюсь помочь. Иногда пинком
    • Просмотр профиля
    • umicms.me
Re: Шаблон html в xsl с нуля?
« Ответ #75 : 07 Марта 2016, 17:25:31 »
А теперь нужно сделать еще одну магию - написать:
<xsl:apply-templates select="document(concat('udata://content/menu/notemplate/0/', /result/parents/page[position() = 1]/@id))"/>
Мой блог http://umicms.me

*

Sumrakrnd

  • ****
  • 311
  • +1/-0
  • Учусь «на примерах»
    • Просмотр профиля
Re: Шаблон html в xsl с нуля?
« Ответ #76 : 07 Марта 2016, 20:40:28 »
Хм...
Если позиция 1 то выводит Категории
2 - Направления
3 - выводит список Статей, но только если находишься в какой-нибудь Статье. На остальных выводится Главное меню

случился небольшой кризис, уходила, не дали дочитать -_-"
« Последнее редактирование: 07 Марта 2016, 20:43:57 от Sumrakrnd »

*

aghigay

  • *****
  • 611
  • +28/-3
  • Просто пытаюсь помочь. Иногда пинком
    • Просмотр профиля
    • umicms.me
Re: Шаблон html в xsl с нуля?
« Ответ #77 : 07 Марта 2016, 20:54:21 »
А теперь нужно в конце адреса добавить .xml и увидеть как устроены parents, сколько их и какие они на разных страницах. Элементарно
Мой блог http://umicms.me

*

Sumrakrnd

  • ****
  • 311
  • +1/-0
  • Учусь «на примерах»
    • Просмотр профиля
Re: Шаблон html в xsl с нуля?
« Ответ #78 : 07 Марта 2016, 21:14:54 »
Если .xml прописывать на каждом этапе вложенности (так скажем), то получается:
- Находясь в Категории Направления не находятся в parents, а просто в page
- Если в Направление, то Статьи не находятся в parents, а просто в page, но сами Направления в parents
- В Статье, тоже отсутствует вокруг

Если прописать:
<xsl:apply-templates select="document(concat('udata://content/menu/notemplate/0/', /result/page[position() = 1]/@id))"/>
То выводится список Статей только в Направление, внутри Статьи списка нет.

*

Sumrakrnd

  • ****
  • 311
  • +1/-0
  • Учусь «на примерах»
    • Просмотр профиля
Re: Шаблон html в xsl с нуля?
« Ответ #79 : 07 Марта 2016, 21:28:53 »
Вот если что кусочек xml
<parents>
<page id="273" parentId="0" link="/napravleniya/" is-visible="1" is-active="1" object-id="1292" type-id="60" type-guid="content-page" update-time="1456395796" alt-name="napravleniya" xlink:href="upage://273">
<basetype id="30" module="content">Страницы контента</basetype>
<name>Направления</name>
</page>
<page id="277" parentId="273" link="/napravleniya/kategoriya/" is-visible="1" is-active="1" object-id="1297" type-id="151" update-time="1457355360" alt-name="kategoriya" xlink:href="upage://277">
<basetype id="30" module="content">Страницы контента</basetype>
<name>Категория</name>
</page>
<page id="284" parentId="277" link="/napravleniya/kategoriya/napravleniya1/" is-visible="1" is-active="1" object-id="1304" type-id="152" update-time="1457088086" alt-name="napravleniya1" xlink:href="upage://284">
<basetype id="30" module="content">Страницы контента</basetype>
<name>Направление1</name>
</page>
</parents>
<page id="288" parentId="284" link="/napravleniya/kategoriya/napravleniya1/statiay1/" is-visible="1" is-active="1" object-id="1309" type-id="172" update-time="1457357323" alt-name="statiay1">
<basetype id="30" module="content">Страницы контента</basetype>
<name>Статья1</name>
...
</page>


P.S.: искала почитать про $document-page-id поиск посоветовал добавить umi, нашелся странный форум, но вот фраза в шапке мне понравилась:
Знать UMI.CMS в совершенстве невозможно. Даже сами разработчики знают о ней не все...
« Последнее редактирование: 07 Марта 2016, 21:53:35 от Sumrakrnd »

*

Sumrakrnd

  • ****
  • 311
  • +1/-0
  • Учусь «на примерах»
    • Просмотр профиля
Re: Шаблон html в xsl с нуля?
« Ответ #80 : 09 Марта 2016, 12:23:44 »
Так как правильно то?(

Помогите этот запрос добить, пожалуйста ><
« Последнее редактирование: 09 Марта 2016, 15:36:02 от Sumrakrnd »

*

Sumrakrnd

  • ****
  • 311
  • +1/-0
  • Учусь «на примерах»
    • Просмотр профиля
Re: Шаблон html в xsl с нуля?
« Ответ #81 : 09 Марта 2016, 19:01:08 »
В итоге, я решила проблему очень странным образом...
Вывод идет:
<xsl:choose>
<xsl:when test="result/page/@type-id='152'">
<xsl:apply-templates select="document(concat('udata://content/menu/notemplate/0/', $document-page-id))" mode="right_menu"/>
</xsl:when>
<xsl:when test="result/page/@type-id='172'">
<xsl:apply-templates select="document(concat('udata://content/menu/notemplate/0/', /result/parents/page[position() = 3]/@id))" mode="right_menu"/>
</xsl:when>
<xsl:otherwise></xsl:otherwise>
</xsl:choose>
152 - тип данных Направления, 172 - Статей

Сам запрос идет такой:
	<xsl:template match="udata[@method = 'menu']" mode="right_menu">
<div class="block_useful">
<h4>
<!--тут надо взять название Направления в котором находятся данные статьи -->
</h4>
<xsl:apply-templates select="items/item" mode="right_menu" />
</div>
</xsl:template>

<xsl:template match="item" mode="right_menu">
<a href="{@link}" >
<xsl:value-of select="." />
</a>
</xsl:template>

Вот возникло два вопроса:
1) как сделать в данном случае проверку, если например статей нету. А то появляется пустой блок белый block_useful
2) Как взять название Направления, в котором находятся данные статьи, в h4

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re: Шаблон html в xsl с нуля?
« Ответ #82 : 10 Марта 2016, 11:27:28 »
Цитировать
1) как сделать в данном случае проверку, если например статей нету. А то появляется пустой блок белый block_useful

Сделать проверку на наличие дочерних элементов и если их нет, ничего не выводить
<xsl:template match="udata[@method = 'menu']" mode="right_menu" />
<xsl:template match="udata[@method = 'menu' and items/item]" mode="right_menu">
<div class="block_useful">
<h4>
<!--тут надо взять название Направления в котором находятся данные статьи -->
</h4>
<xsl:apply-templates select="items/item" mode="right_menu" />
</div>
</xsl:template>

Цитировать
2) Как взять название Направления, в котором находятся данные статьи, в h4
в результатах макроса udata://content/menu/ нет блока с названием элемента от которого идет поиск пунктов меню

Поэтому проще всего передать его как параметр.

Например так:
<xsl:apply-templates select="document(concat('udata://content/menu/notemplate/0/', $document-page-id))" mode="right_menu">
       <xsl:with-param name="blok-title" select="'Название блока'" />
</xsl:apply-templates>
и шаблон для меню
<xsl:template match="udata[@method = 'menu']" mode="right_menu">
        <xsl:param name="blok-title" />
<div class="block_useful">
<h4>
<xsl:value-of select="$blok-title" />
</h4>
<xsl:apply-templates select="items/item" mode="right_menu" />
</div>
</xsl:template>

*

Sumrakrnd

  • ****
  • 311
  • +1/-0
  • Учусь «на примерах»
    • Просмотр профиля
Re: Шаблон html в xsl с нуля?
« Ответ #83 : 10 Марта 2016, 12:41:14 »
Сделать проверку на наличие дочерних элементов и если их нет, ничего не выводить
Ооо... так тоже можно писать условие о_О Прикольно =)

Поэтому проще всего передать его как параметр.
Блин, этот парам довольно интересная и полезная штука, только не понимаю я, когда он реально нужен, а когда не нужен ><

Кстати, а его можно применить вот в такой проблеме.
Например, надо вывести по два Специалиста в правом блоке, само по себе это не сложно через usel и limit, но проблема в том, что выводится должны Специалисты соответствующие Направлению в котором находишься.
Можно ли применить параметры для проверки соответствия Специалиста Направлению?


Спасибо за ответ ^^

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re: Шаблон html в xsl с нуля?
« Ответ #84 : 10 Марта 2016, 13:45:28 »
Кстати, а его можно применить вот в такой проблеме.
Например, надо вывести по два Специалиста в правом блоке, само по себе это не сложно через usel и limit, но проблема в том, что выводится должны Специалисты соответствующие Направлению в котором находишься.
Можно ли применить параметры для проверки соответствия Специалиста Направлению?

Если происходит перезагрузка, то что вам мешает использовать в вашем usel доп. параметр, передаваемый при вызове usel. Который (параметр) указывает какое направление у данного специалиста.

param, который я показывал нужен для того, чтобы не запрашивать параметр в дочерних шаблонах, а пробросить их внутрь дочерних шаблонов или чтобы использовать один и тот же шаблон подставляя в него разные данные, отправляемые при вызове.

*

Sumrakrnd

  • ****
  • 311
  • +1/-0
  • Учусь «на примерах»
    • Просмотр профиля
Re: Шаблон html в xsl с нуля?
« Ответ #85 : 10 Марта 2016, 15:03:58 »
Хм... а какой надо получается брать параметр?
Если сейчас у меня есть вот такая информация и структура.

Вот мой xml для специалистов сейчас:
<selection>
    <target result="pages">
        <type id="{2}"/>
        <category depth="2">{1}</category>
    </target>
    <extended>
        <groups>specialisty</groups>
        <properties>h1, content, header_pic, menu_pic_a, photo, descr, vidimoepole, skrytoepole, zanayutiya, uslugi, priceuslug, familiya, imya_otchestvo, dolzhnost, fotografiya, otdelenie, css_class, kratkaya_dolzhnost</properties>
    </extended>
    <limit page="{3}">{4}</limit>
</selection>

Запрос в xsl:
<xsl:template match="result" mode="rightcol_specialisty">
<ul>
<xsl:apply-templates select="document('usel://main/272/148')/udata" mode="human"/>
</ul>
</xsl:template>

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

<xsl:template match="page" mode="human">
<li class="info_bg">
<a href="{@link}">
<span class="text">
<img src="{extended/properties/property[@name='fotografiya']/value}" alt="" />
<big>
<xsl:value-of select="extended/properties/property[@name = 'familiya']/value"/>
<i><xsl:value-of select="extended/properties/property[@name = 'imya_otchestvo']/value"/></i>
</big>
<small><xsl:value-of select="extended/properties/property[@name = 'kratkaya_dolzhnost']/value" disable-output-escaping="yes"/></small>
</span>
</a>
<a href="#win1" class="apply">записаться</a>
</li>
</xsl:template>

Вывод идет вот такой простой...
<xsl:apply-templates select="result" mode="rightcol_specialisty" />


Получается Направление структура:
-Категория(151)
--Направление (152)
--Направление (152)
-Категория(151)
--Направление (152)
--Направление (152)
и т.д.

А Специалисты:
-Специалисты
--Специалист (148)
--Специалист (148)
--Специалист (148)
и т.д.

Я создавала в типе данных у Специалистов два поля с:
- типом Ссылка на дерево
- типом Выпадающего списка с множественным выбором, к которому подключен как справочник Направления
(я делала его в экспериментальном плане, в расчете использовать его в фильтре)

В обоих выбраны соответствующие Направления для Специалистов


P.S.: В смысле по какому параметру брать и сравнивать их?
« Последнее редактирование: 10 Марта 2016, 15:11:25 от Sumrakrnd »

*

Sumrakrnd

  • ****
  • 311
  • +1/-0
  • Учусь «на примерах»
    • Просмотр профиля
Re: Шаблон html в xsl с нуля?
« Ответ #86 : 10 Марта 2016, 16:35:56 »
Попробовала сделать выборку, но что-то пошло не так....

<selection>
    <target expected-result="pages">
        <type id="148"/> <!-- здесь выбирается специалисты по типу страницы -->
        <!--<category depth="2">{1}</category>-->
    </target>
<!--<property name="alt-name" value="alt-name" />-->
<property name="alt-name"> <!-- по сути тут берется alt-name из ссылки дерева и сравнивает со страницами типа данных id 152  -->
<page>152</page>
</property>
    <extended>
        <groups>kontakty</groups>
        <properties>familiya, imya_otchestvo, dolzhnost, fotografiya, otdelenie, css_class, kratkaya_dolzhnost</properties>
    </extended>
    <limit page="0">2</limit>
</selection>

По сути сравнение можно делать по alt-name

*

Sumrakrnd

  • ****
  • 311
  • +1/-0
  • Учусь «на примерах»
    • Просмотр профиля
Re: Шаблон html в xsl с нуля?
« Ответ #87 : 10 Марта 2016, 18:27:32 »
<selection>
  <target result="pages">
<type id="148" />
</target>
<property name="napravlenie">
<page>{1}</page>
</property>
<extended>
        <properties>familiya, imya_otchestvo, dolzhnost, fotografiya, otdelenie, napravlenie, css_class, kratkaya_dolzhnost</properties>
    </extended>
    <limit page="0">2</limit>
</selection>
148 - это тип данных Специалистов, у которых есть Ссылка на дерево с именем napravlenie
Но я проверяю usel вызвав его через адресную строчку, теперь выдает мне 0...

Если посмотреть на эту статью, тут получается можно вызывать блоки Товаров из Каталога, у которых есть поле Ссылка на Дерево.
Т.е. если я вызову(обращусь к) usel запросом из правой колонки, то он должен, если ты находишься на странице, которая совпадает с полем Ссылка на Дерево, вывести соответствующих Специалистов...

Но можно ли адаптировать это под контент страницы?
http://wiki.umisoft.ru/%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D1%83%D0%B6%D0%B5_%D0%B8%D0%BC%D0%B5%D1%8E%D1%89%D0%B8%D1%85%D1%81%D1%8F_%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BE%D0%B2_%D0%BA%D0%B0%D1%82%D0%B0%D0%BB%D0%BE%D0%B3%D0%B0_%D0%B2_%D0%B4%D1%80%D1%83%D0%B3%D0%B8%D0%B5_%D0%BA%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D0%B8_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_%D0%B4%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5_%D0%BF%D0%BE%D0%BB%D0%B5_%22%D1%81%D1%81%D1%8B%D0%BB%D0%BA%D0%B0_%D0%BD%D0%B0_%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%22

P.S.: А вот такой вывод получается должен быть?
<xsl:apply-templates select="document('usel://right_main')/udata/page"  mode="rightcol_specialisty" />
« Последнее редактирование: 10 Марта 2016, 18:53:00 от Sumrakrnd »

*

Sumrakrnd

  • ****
  • 311
  • +1/-0
  • Учусь «на примерах»
    • Просмотр профиля
Re: Шаблон html в xsl с нуля?
« Ответ #88 : 11 Марта 2016, 12:18:13 »
Все таки я решила вывести вопрос о usel в новую тему.
http://umihelp.ru/forum/index.php/topic,2137.new.html#new