UMIhelp

Разработка сайта на UMI.CMS => Шаблоны XSLT => Тема начата: Sumrakrnd от 05 Февраля 2016, 16:43:08

Название: Шаблон html в xsl с нуля?
Отправлено: Sumrakrnd от 05 Февраля 2016, 16:43:08
Привет всем!
Пришла пора и мне надо сделать верстку на UMI, решила я обратиться к самому простому, к 20 шагам создания сайта.
Установила сайт, полную версию, добавила шаблон, подключила к одной из страниц.
По пошаговой инструкции было указано, что шаблон необходимо поместить в папку ~/xsltTpls/. По видео я поняла, что помещать шаблон можно так же в папку ~/templates/demodizzy/, соответственно указав в какой папке брать шаблон.
На первом шаге все было нормально  фраза из шаблона "... тестируем шаблон ..." отобразилась, а вот на втором шаге после вставки html, все пропало...

Что не так? Подскажите пожалуйста.

P.S.: так же я уже поставила js, css и images



Небольшое дополнение, есть где почитать/посмотреть, как заменять файлы и страницы в уже готовом тестовом сайте?
Название: Re: Шаблон html в xsl с нуля?
Отправлено: ilyar от 07 Февраля 2016, 12:24:43
Шаблон действительно можно разместить в папке ~/templates/{имя_шаблона} подробнее о структуре написано в документе: Новый формат хранения шаблонов (http://dev.docs.umi-cms.ru/shablony_i_makrosy/novyj_format_hraneniya_shablonov/). В итоге должна получится такая структура:

templates
    └── {имя_шаблона}
        ├── js
        ├── css
        ├── images
        ├── classes
        ├── admin (с версии 2.11)
        ├── umaps
        ├── usels
        └── xslt

XSLT строгий язык и придирчив к структуре, поэтому надо внимательно делать изменения. Ситуация "все пропало...", предположу что это выглядит, как просто белая страница, скорей всего связана с ошибкой в структуре.

Рекомендую вставлять пример из второго шага последовательно, т.е. частями и проверять каждое изменение.

Также будет еще полезно использовать "правильный" редактор кода т.е. с поддержкой проверки синтаксиса xsl, также большинство популярных IDE поддерживают такую возможность.

Название: Re: Шаблон html в xsl с нуля?
Отправлено: Sumrakrnd от 08 Февраля 2016, 11:26:57
Да, белая страница.
Пользуюсь я Notepad++

html из тестового задания работает, да.
Может не работать мой html из-за отсутствия DOCTYPE?
Название: Re: Шаблон html в xsl с нуля?
Отправлено: ilyar от 08 Февраля 2016, 12:03:46
Может не работать мой html из-за отсутствия DOCTYPE?

Нет.  Обратите внимание на не закрытые теги например <img> в XSL все теги должны  быть закрытыми.

Еще рекомендую включить отображение ошибок это настраивается в конфигурационном файле.
Название: Re: Шаблон html в xsl с нуля?
Отправлено: Sumrakrnd от 08 Февраля 2016, 12:12:25
<img /> все закрыты.

Вставила верстку частями, но например при вставке меню, сразу белая страница, хотя все теги закрыты:
<!-- /menu -->		
<nav class="menu">
<ul class="blockeasing">
<li class="main"><a href="#">О компании</a>
<div class="menu__drop">
<div class="menu__wrap">
<ul>
<li><a href="#">правовая информация</a></li>
<li><a href="#">как мы работаем</a></li>
<li><a href="#">вакансии</a></li>
</ul>
<ul>
<li><a href="#">отзывы</a></li>
<li><a href="#">статьи</a></li>
<li><a href="#">новости</a></li>
</ul>
<ul class="spec_predl">
<li><a href="#" class="purple">специалисты</a></li>
<li><a href="#" class="blue">цены</a></li>
<li><a href="#" class="green">Записаться на прием?</a></li>
</ul>
</div>
</div>
</li>
<li class="main"><a href="#">Специалисты</a></li>
<li class="main"><a href="#">цены</a></li>
<li class="main"><a href="#">акции & скидки</a></li>
<li class="main"><a href="#">контакты</a></li>
</ul>
</nav>
Название: Re: Шаблон html в xsl с нуля?
Отправлено: ilyar от 08 Февраля 2016, 12:48:25
<img /> все закрыты.

Вставила верстку частями, но например при вставке меню, сразу белая страница, хотя все теги закрыты:


Проблема в амперсанде "&":

<li class="main"><a href="#">акции & скидки</a></li>

надо заменить на:

<li class="main"><a href="#">акции &amp; скидки</a></li>
Название: Re: Шаблон html в xsl с нуля?
Отправлено: Sumrakrnd от 08 Февраля 2016, 13:12:04
Из-за это О_О Про такие мелочи не знала... Смогла еще два блока верстки вставить зато. Спасибо ))

А вот это меню не подскажите? Если что я ставила его в блок <form action="#"><fieldset>...</fieldset></form> вместо <div>, стили позволяют такие замены, но при вставке страница все равно становится белой.. :(
<!-- Menu dop -->
<nav class="menu_dop">

<div class="tabs">

<input id="tab1" type="radio" name="tabs" checked />
<label for="tab1" title="Вкладка 1" class="clinical">Тест1</label>

<input id="tab2" type="radio" name="tabs" />
<label for="tab2" title="Вкладка 2" class="cosmetology">Тест2</label>

<input id="tab3" type="radio" name="tabs" />
<label for="tab3" title="Вкладка 3" class="plastic_surgery">Тест3</label>

<input id="tab4" type="radio" name="tabs" />
<label for="tab4" title="Вкладка 4" class="stomatology">Тест4</label>

<section id="content1">
<div class="menu__wrap row-4">
<ul>
<li><a href="#">Вариант1</a></li>
<li><a href="#">Вариант1</a></li>
<li><a href="#">Вариант1</a></li>
<li><a href="#">Вариант1</a></li>
</ul>
</div>
</section> 
<section id="content2">
<div class="menu__wrap row-3x3">
<ul>
<li><a href="#">Вариант2</a></li>
<li><a href="#">Вариант2</a></li>
<li><a class="menu__drop__link" href="#">Вариант2<span class="new"></span></a></li>
</ul>

<ul>
<li><a href="#">Вариант2</a></li>
</ul>
</div>
</section>
<section id="content3">
<div class="menu__wrap row-3x3">
<ul>
<li><a href="#">Вариант3</a></li>
<li><a href="#">Вариант3</a>
<span class="polygon"></span>
<div class="under_menu">
<div class="block-link">
<span><a href="#" class="orange">Акции</a></span>
<span><a href="#" class="blue">Цены</a></span>
<span><a href="#" class="grey">Особенности</a></span>
</div>
<div class="block-info">
<div class="list-services">
<a href="#">Вариант3-1</a>
<a href="#">Вариант3-1</a>
<a href="#">Вариант3-1</a>
<a href="#">Вариант3-1</a>
<a href="#">Вариант3-1</a>
<a href="#">Вариант3-1</a>
<a href="#">Вариант3-1</a>
<a href="#">Вариант3-1</a>
</div>
<div class="carousel-container">
<ul class="carousel">
<li>
<img src="upload/spec1.png" alt="" />
<big>Имя</big>
<small>Фамилия</small>
<a href="#win1" class="apply">записаться</a>
</li>
<li>
<img src="upload/spec2.png" alt="" />
<big>Имя</big>
<small>Фамилия</small>
<a href="#win1" class="apply">записаться</a>
</li>
<li>
<img src="upload/spec3.png" alt="" />
<big>Имя</big>
<small>Фамилия</small>
<a href="#win1" class="apply">записаться</a>
</li>
</ul>
<button class="prev"></button>
<button class="next"></button>
</div>
</div>
</div>
</li>
<li><a href="#">Вариант3</a></li>
</ul>
</div>
</section>
<section id="content4">
<div class="menu__wrap row-3x4">
<ul>
<li><a href="#">Вариант4</a></li>
<li><a href="#">Вариант4</a></li>
<li><a href="#">Вариант4</a></li>
<li><a href="#">Вариант4</a></li>
</ul>
</div>
</section>
</div>
</nav>
<!-- /Menu dop -->

Здесь надо было сделать выпадающее меню по клику, с раскрытым первым пунктом при загрузки страницы, так же есть всплывающее третье меню... Поэтому такая структура.
К сожалению смогла сделать реализацию только по этой схеме, других вариантов просто не нашла >.<


И вопрос, xslt не любит всплывающие окна?
Хотя если сейчас с меню станет все ясно, то думаю пойму почему при их вставке страница становится белой @_@
Название: Re: Шаблон html в xsl с нуля?
Отправлено: ilyar от 08 Февраля 2016, 13:57:15
Если все таки последуете совету и включите режим отображения ошибок:

Код: config.ini [Выделить]
[debug]
enabled = "1"
show-backtrace = "1"


то вместо белой страницы, будут отображаться сообщения вида:

Цитировать
Warning: DOMDocument::load(): Specification mandate value for attribute checked in /umi/xsltTpls/default.xsl

Из этого сообщения стразу понятно где проблема и что проблема в атрибуте. Если посмотрим верстку, найдем краткую запись атрибута checked, XLS такое не переваривает:

<input id="tab1" type="radio" name="tabs" checked />

заменить на:

<input id="tab1" type="radio" name="tabs" checked="checked" />
Название: Re: Шаблон html в xsl с нуля?
Отправлено: Sumrakrnd от 08 Февраля 2016, 14:21:51
Спасибо!

Включила debug, возникли вопросы.
У меня использовались атрибуты required для полей и noshade для hr, как сделать чтобы xslt на них не ругался?

Я убрала эти тэги сейчас, чтобы ушли ошибки, и сейчас у меня вот такая ошибка, и я не знаю о чем она говорит.
Цитировать
Warning: DOMDocument::load(): Opening and ending tag mismatch:
Название: Re: Шаблон html в xsl с нуля?
Отправлено: ilyar от 08 Февраля 2016, 14:32:28
Есть не закрытые теги.

В XSL все теги должны быть закрытыми, часто проблема с одиночными HTML-тегами (img, br, hr). Одиночные HTML-теги можно закрыть так:
<img/> <br/> <hr/>
Название: Re: Шаблон html в xsl с нуля?
Отправлено: Sumrakrnd от 08 Февраля 2016, 16:52:50
Как сделать чтобы xslt не ругался на required для полей и noshade для hr?

Вопрос:
У меня в верстке контент блоки разбиты на два, т.к. разделяет их галерея на всю ширину.

Можно применить два <xsl:apply-templates select="result" /> на одной страницы?
Название: Re: Шаблон html в xsl с нуля?
Отправлено: crazygeorgio от 08 Февраля 2016, 17:14:28
аналогично
<input required /> => <input required="required" />
<hr noshade /> => <hr noshade="noshade" />

<xsl:apply-templates select="result" /> применять можно сколько угодно раз, только толку, контент от этого сам собой не разделится
Название: Re: Шаблон html в xsl с нуля?
Отправлено: Sumrakrnd от 08 Февраля 2016, 17:53:05
Ой... не то, я в том плане, что контент страницы можно разбить на отдельные блоки, но в одном файле, а галерея в другом?
Не знаю, правильно ли я сейчас выразилась
Название: Re: Шаблон html в xsl с нуля?
Отправлено: crazygeorgio от 08 Февраля 2016, 18:18:38
ну как-то наверное можно
Название: Re: Шаблон html в xsl с нуля?
Отправлено: Sumrakrnd от 08 Февраля 2016, 19:02:07
А почему после добавления <xsl:include href="modules/content_test.xsl"/> выдает ошибку
Цитировать
Warning: XSLTProcessor::importStylesheet(): I/O warning : faile

И еще, нет какой-нибудь литературы с примерами прикручивания верстки html/css на xslt? Или очень внятного справочника?

Видео-вебинар Umi я посмотрела, но он не дает представления совмещения верстки и xslt.
А сайт за 20 шагов на Umi тоже не очень то информативен...
Название: Re: Шаблон html в xsl с нуля?
Отправлено: crazygeorgio от 08 Февраля 2016, 20:09:41
куда вы вдобавляете... что в modules/content_test.xsl

литературы не знаю, мне хватило примера demodizzy шаблона, чтобы понять суть
Название: Re: Шаблон html в xsl с нуля?
Отправлено: Sumrakrnd от 09 Февраля 2016, 11:46:49
Знаете описание на сайте UMI xslt сайт за 20 шагов?

Там есть 5 шаг, в файл у меня это index.xsl добавить <xsl:include href="modules/content_t.xsl"/>, после output (я просто сделала другое название и место положение в templates, а не в xsltTpls) и соответственно подцепила файл
Но теперь у меня выдается ошибка
Цитировать
Warning: XSLTProcessor::importStylesheet(): I/O warning : faile
Хотя делала все пошагово
Название: Re: Шаблон html в xsl с нуля?
Отправлено: crazygeorgio от 09 Февраля 2016, 12:44:07
не знаю)
пути значит все проверьте, которые цепляются, чтобы по ним были файлы. Если index.xsl с <xsl:include href="modules/content_t.xsl"/> в templates, значит должен быть файл templates/modules/content_t.xsl
Название: Re: Шаблон html в xsl с нуля?
Отправлено: Sumrakrnd от 09 Февраля 2016, 12:54:11
Прописывала, все равно выдает туже ошибку...
Совсем никто не знает, как сделать? Т_Т
Название: Re: Шаблон html в xsl с нуля?
Отправлено: crazygeorgio от 09 Февраля 2016, 13:00:19
очевидно что этого не достаточно... скиньте шаблон куда-нибудь, тогда и будет разговор
Название: Re: Шаблон html в xsl с нуля?
Отправлено: Sumrakrnd от 09 Февраля 2016, 13:25:52
Вот html-верстка
Просто я все таки больше верстальщик, хотя я очень многое могла править по xslt в umi, но проблема в том, что я делала уже в готов всем.

А вот сверстала сайт и поняла, что я не могу понять с чего начать и как html преобразовать в xslt  ((((
Название: Re: Шаблон html в xsl с нуля?
Отправлено: crazygeorgio от 09 Февраля 2016, 13:31:08
и зачем нам ваш html?) я про xslt шаблоны, они же ошибку выдают!
Название: Re: Шаблон html в xsl с нуля?
Отправлено: Sumrakrnd от 09 Февраля 2016, 13:44:03
Так?
Название: Re: Шаблон html в xsl с нуля?
Отправлено: crazygeorgio от 10 Февраля 2016, 12:12:17
и где test.xsl у вас находится?
Название: Re: Шаблон html в xsl с нуля?
Отправлено: Sumrakrnd от 10 Февраля 2016, 12:19:24
В templates/demodizzy/xslt
А content_t.xsl в templates/demodizzy/xslt/modules

Кстати, а на  <xsl:include href="modules/menu.xsl"/> нормально отреагировал и отобразил...
Название: Re: Шаблон html в xsl с нуля?
Отправлено: crazygeorgio от 10 Февраля 2016, 12:34:45
естественно, путь же должен быть относительно текущего файла
Название: Re: Шаблон html в xsl с нуля?
Отправлено: Sumrakrnd от 10 Февраля 2016, 12:48:28
Путь к content_t.xsl был <xsl:include href="modules/content_t.xsl"/> все равно ошибка была, и с подробным путем тоже
Название: Re: Шаблон html в xsl с нуля?
Отправлено: Sumrakrnd от 11 Февраля 2016, 11:42:29
Ура! Я разобралась как привязать.
Только не могу кое в чем разобраться у меня есть верхнее меню и нижнее, они одинаковые по контенту, только у них разные стили.
Я написала так, но присваивается либо стили нижнего меню, либо стили верхнего меню обоим.
	<!-- Header menu -->
<xsl:template match="udata[@module = 'menu']" mode="info-pages-head">
<nav class="menu">
<ul class="blockeasing">
<xsl:apply-templates select="item" mode="info-pages-head" />
</ul>
</nav>
</xsl:template>

<!-- Footer menu -->
<xsl:template match="udata[@module = 'menu']/udata[@status= 'menu_foot']" mode="info-pages-head">
<nav class="menu_foot">
<ul>
<xsl:apply-templates select="item" mode="info-pages-head" />
</ul>
</nav>
</xsl:template>

И вопрос, вот если мне нужны слайдеры на главной только страницы как их прописать тогда?  Т.к. понимаю метод для меню не сработает, так?
Название: Re: Шаблон html в xsl с нуля?
Отправлено: crazygeorgio от 11 Февраля 2016, 13:01:55
match="udata[@module = 'menu']/udata[@status= 'menu_foot']" это стиль для узла udata[@status= 'menu_foot'] являющегося дочерним к udata[@module = 'menu'], поэтому срабатывает только верхний шаблон.

вообще что за конструкция @status= 'menu_foot'???

	
<!-- Header menu -->
<xsl:template match="udata[@module = 'menu']" mode="info-pages-head">
<nav class="menu">
<ul class="blockeasing">
<xsl:apply-templates select="item" mode="info-pages-head" />
</ul>
</nav>
</xsl:template>

<!-- Footer menu -->
<xsl:template match="udata[@module = 'menu']" mode="info-pages-foot">
<nav class="menu_foot">
<ul>
<xsl:apply-templates select="item" mode="info-pages-head" />
</ul>
</nav>
</xsl:template>
Название: Re: Шаблон html в xsl с нуля?
Отправлено: Sumrakrnd от 11 Февраля 2016, 13:09:33
Просто подумала, что можно применить метод для активной ссылки в меню >.<

Есть несколько вопрос, на тему разделения блоков..
1) Есть слайдеры, вот надо сделать так чтобы они были только на главной, я так поняла делается это через @pageId ?
2) Я использовала для акций блок для новостей. Но вот вопрос, а как сделать внутри у каждого li свой класс? Т.к.  у меня для первой страницы акции идут малайкой, разного размера и т.д.
Название: Re: Шаблон html в xsl с нуля?
Отправлено: Sumrakrnd от 11 Февраля 2016, 13:18:33
Нижнее меню все равно берет стили верхнего Т___Т
Название: Re: Шаблон html в xsl с нуля?
Отправлено: crazygeorgio от 11 Февраля 2016, 13:20:22
1. я так делаю
<xsl:if text="result/page/@is-default">слайдер</xsl:if>

2. можно по позиции в списке, можно по id, смысл один и тот же
<li>
  <xsl:choose>
    <xsl:when test="position() = 1"><xsl:attribute name="class">item-1</xsl:attribute></xsl:when>
    <xsl:when test="position() = 2"><xsl:attribute name="class">item-2</xsl:attribute></xsl:when>
    <xsl:otherwise><xsl:attribute name="class">item</xsl:attribute></xsl:otherwise>
  </xsl:choose>
...
</li>
Название: Re: Шаблон html в xsl с нуля?
Отправлено: Sumrakrnd от 11 Февраля 2016, 13:28:34
@is-default - что этим вызывается?

и для чего используется otherwise?
Название: Re: Шаблон html в xsl с нуля?
Отправлено: crazygeorgio от 11 Февраля 2016, 13:33:27
блин, что может вызываться атрибутом узла??? смотрите http://www.umi-cms.ru/.xml

Цитировать
и для чего используется otherwise?
http://xsltdev.ru/xslt/xsl-choose/

Название: Re: Шаблон html в xsl с нуля?
Отправлено: Sumrakrnd от 11 Февраля 2016, 13:53:27
Когда я поместила слайдер в шаблоне в
<xsl:if text="result/page/@is-default">... </xsl:if>

Сайт выдал вот эту ошибку:
Цитировать
Warning: XSLTProcessor::importStylesheet(): compilation error:
Название: Re: Шаблон html в xsl с нуля?
Отправлено: crazygeorgio от 11 Февраля 2016, 14:00:16
<xsl:if teSt="result/page/@is-default">... </xsl:if>

http://xsltdev.ru/xslt/xsl-if/
Название: Re: Шаблон html в xsl с нуля?
Отправлено: Sumrakrnd от 11 Февраля 2016, 14:41:46
@_@ понятно вроде
а этот метод применим ко всем блокам?
Например, если у меня для главной странице один класс меню, а для внутренних другой? И на некоторых страницах нету этого меню.

И вот маленький вопрос. Я сделала на основе модуля новостей акции, и мне надо подцепить фото, его уже я загрузила, оно в поле anons_pic, я поле указала в extProps, но картинка все равно не грузится
Цитировать
<xsl:if test=".//property[@name='anons_pic']/value">
   <img src=".//property[@name='anons_pic']/value" alt="" />
</xsl:if>
Название: Re: Шаблон html в xsl с нуля?
Отправлено: crazygeorgio от 11 Февраля 2016, 15:11:40
попробуйте extended//property[@name='anons_pic']/value
Название: Re: Шаблон html в xsl с нуля?
Отправлено: Sumrakrnd от 11 Февраля 2016, 15:24:12
Не помогает,  картинка есть и она загружена это точно.
Название: Re: Шаблон html в xsl с нуля?
Отправлено: crazygeorgio от 11 Февраля 2016, 15:56:36
вы посмотрите как делается в стандартном шаблоне... что за src=".//property[@name='anons_pic']/value"??? что у вас выводится в итоге в html, немного анализа-то можно провести...

1. не src=".//property[@name='anons_pic']/value", а src="{.//property[@name='anons_pic']/value}"
2. .//property ищет дочерний узел любой вложенности относительно текущего с которым работаете, поэтому смотреть нужно что откуда берется
Название: Re: Шаблон html в xsl с нуля?
Отправлено: Sumrakrnd от 11 Февраля 2016, 16:34:19
Ааа...
Как я не обратила внимание на это...>.<

А вот вопрос, сделала меню, вроде норм, решила подцепить всплывающее меню, я так поняла надо создать еще одно меню и к нему обратиться из меню основного, получилось у меня так?
	<xsl:template match="udata[@module = 'menu']" mode="info-pages-head">
<nav class="menu">
<ul class="blockeasing">
<xsl:apply-templates select="item" mode="info-pages-head" />
</ul>
</nav>
</xsl:template>

<xsl:template match="udata[@module = 'menu']/item" mode="info-pages-head">
<li>
<a href="{@link}"><xsl:value-of select="." /></a>
<div class="menu__drop">
<div class="menu__wrap">
<ul>
<xsl:apply-templates select="document(concat('udata://menu/draw/1273', @id))/udata[items/item]" />
</ul>
</div>
</div>
</li>
</xsl:template>

Теперь у меня есть всплывающий фон меню, но проблема в том, что у всех пунктов меню... Т_т  и как вызвать ссылки ко второму меню?
Название: Re: Шаблон html в xsl с нуля?
Отправлено: Sumrakrnd от 11 Февраля 2016, 17:03:20
Я поняла как вывести ссылки, точнее как вывести текст подменю.
Но вот как вывести ссылки осталась.
т.е. если пишу код так, то два пункта из подменю идут единой ссылкой (
	<xsl:template match="udata[@module = 'menu']/item" mode="info-pages-head">
<li>
<a href="{@link}"><xsl:value-of select="." /></a>
<div class="menu__drop">
<div class="menu__wrap">
<ul>
<li><a href="{@link}"><xsl:apply-templates select="document(concat('udata://content/menu/0/2/', @id))/udata[items/item]" /></a></li>
</ul>
</div>
</div>
</li>
</xsl:template>


И чтобы всплывающее меню было только у нижнего меню.. только заметила...


Кстати, а если у меня две менюшки на сайте, как вывести вторую?><

P.S.: черт... и плашка от всплывающего меню тоже у всех пунктов появляется (
Название: Re: Шаблон html в xsl с нуля?
Отправлено: crazygeorgio от 12 Февраля 2016, 16:32:34
да не, этот код дичь какая-то... Вообще лучше выводить в меню все дерево, если нет большой вложенности, на мой взгляд! тогда по идее должно быть меньше запросов и быстрее отрабатывать, если же отдельными ветками грузить, то так примерно

	<xsl:template match="udata[@module = 'menu']/item" mode="info-pages-head">
<li>
<a href="{@link}"><xsl:value-of select="." /></a>
                        <xsl:apply-templates select="document(concat('udata://content/menu/0/2/', @id))/udata" mode="drop" />
</li>
</xsl:template>

        <xsl:template match="udata" mode="drop" />

<xsl:template match="udata[items]" mode="drop">
<div class="menu__drop">
       <div class="menu__wrap">
    <ul>
  <xsl:apply-templates select="items/item" mode="drop" />
    </ul>
       </div>
</div>
</xsl:template>

<xsl:template match="item" mode="drop">
<li><a href="{@link}"><xsl:value-of select="@name" /></a></li>
</xsl:template>
Название: Re: Шаблон html в xsl с нуля?
Отправлено: Sumrakrnd от 12 Февраля 2016, 16:48:53
ооо... даже на глаз видно, что работает быстрее о.О
Но блин в футере выпадающее меню висит (


Я вот решила тему разбить все-таки, так как менюшки у меня какое-то проблемные вышли >< :

http://umihelp.ru/forum/index.php/topic,2113.0.html
Название: Re: Шаблон html в xsl с нуля?
Отправлено: crazygeorgio от 12 Февраля 2016, 16:53:00
нет, так как раз не быстрее, так как для каждой ветки отдельный запрос udata://content/menu/0/2/xxx
Название: Re: Шаблон html в xsl с нуля?
Отправлено: Sumrakrnd от 12 Февраля 2016, 16:57:34
Ну я ставила и тот вариант и этот, но ваш работает быстрее по-крайне мере на глаз
Название: Re: Шаблон html в xsl с нуля?
Отправлено: Sumrakrnd от 17 Февраля 2016, 12:55:21
Доброго времени суток всем )

Хочу вернуться к вопросу о шаблоне html в xslt

Я нашла вот такую статью (единственную на разметку)
http://dev.docs.umi-cms.ru/prakticheskie_primery/lenty_novostej_sredstvami_xslt-shablonizatora/verstka_shablona_razmetki/
и там есть вот такой кусочек
<div id="left"> 
     <xsl:apply-templates select="result" mode="leftcol" />
  </div>

По сути сейчас мне без разницы правая и левая колонкой. Но я уже несколько дней мучаюсь:
- не могу найти какой файл влияет на содержимое этой части, т.е. я пишу rightcol, справа появляется текст, но если я в файлах делаю изменения, что указаны в примере, то на сайте изменений не происходит ><
- как мне вызвать какой-то блок в эту колонку, например есть акции, и вот мне надо какую-то одну акцию с определенным параметром(об учебе, так же в пример)
акции у меня есть, я для них использовала новости.
Название: Re: Шаблон html в xsl с нуля?
Отправлено: Sumrakrnd от 18 Февраля 2016, 15:28:48
так все-таки, как правильно разбивать в xslt центральную часть на главную и правую колонку?

Вот так я понимаю выводится весь контент?
<xsl:value-of select=".//property[@name = 'content']/value" disable-output-escaping="yes"/>

А как его вывести в правой колонке, если прописана такая строчка:
<div id="right"> 
     <xsl:apply-templates select="result" mode="rightcol" />
  </div>

Название: Re: Шаблон html в xsl с нуля?
Отправлено: Sumrakrnd от 18 Февраля 2016, 18:18:45
Объясните пожалуйста, что делает этот запрос?
<img src="{document(concat('udata://system/makeThumbnailFull/(.',$img,')/221/260/notemplate/0/1/5/0/100'))/udata/src}"/>
Название: Re: Шаблон html в xsl с нуля?
Отправлено: Sumrakrnd от 18 Февраля 2016, 19:24:07
У меня есть страница с типом данных Страница Контента, грубо говоря я на нее вызываю запрос о специалистах.
- Специалисты [Страница контента] - 272
--Категория [Специалисты] - 291
---ФИО [Специалист]
 148 - это id типа данных Специалист

Но на страницу ничего не вызывается.. что не так ><


	<xsl:template match="result/page[@id = '272']" mode="content">

        <div class="container-fluid">
            <div class="container">
                <div class="block-company">
                    <div class="company-people">
                        <h4>История компании в лицах</h4>
                        <xsl:apply-templates select="document('usel://main/291/148')/udata" mode="human"/>
                    </div>
                </div>
            </div>
        </div>
</xsl:template>

<xsl:template match="udata" mode="human">
        <xsl:apply-templates select="page" mode="human"/>
    </xsl:template>
    <xsl:template match="page" mode="human">
        <div class="human">
            <div class="human-wrap"></div>
            <div class="human--img">
                <xsl:variable name="img" select="extended/properties/property[@name = 'header_pic']/value"/>
            </div>
            <div class="human--descr">
                <h1><xsl:value-of select="name"/></h1>
                <p><xsl:value-of select="extended/properties/property[@name = 'h1']/value"/></p>
            </div>
        </div>
    </xsl:template>
Название: Re: Шаблон html в xsl с нуля?
Отправлено: Sumrakrnd от 19 Февраля 2016, 13:18:35
Никто не может ответить? Т_Т
Я понимаю, что скорее всего все это элементарно, но только если ты хорошо знаком с основами...
А вот с ними как раз проблемы и я по времени не успею с ними разобраться самостоятельно (
Название: Re: Шаблон html в xsl с нуля?
Отправлено: Sumrakrnd от 06 Марта 2016, 20:08:15
Я решила написать этот вопрос тут, чтобы не плодить темы. (или лучше создать?)
В начале вступление

Как было описано не раз, у меня есть направления и за каждым направлением закреплены статьи, вот так выглядит структура:
|Категория1
-Направление1
--Статья1
--Статья2
--Статья3
-Направление2
--Статья1
--Статья2
--Статья3
|Категория2
-Направление1
--Статья1
--Статья2
--Статья3
и т.д.

В правой колонке по задумке клиента, есть блок с этими статьями, в начале я думала вывести их туда как меню, т.е. выводила бы я просто третий уровень вложенности, в данном случае эти статьи и были бы.
Но тут проблема в том, что на каждом направление справа должны быть соответствующие направлению статьи.

Вот теперь и вопрос, если я их как меню выведу, они сами буду автоматически привязывать к определенному направлению, если использовался запрос как для меню (по логике мне кажется да ><) ?

Или например воспользоваться модулем баннера, т.к. в нем можно привязать на какой странице будет отображаться данный блок.
Но мне это кажется очень жестоким каким то и даже диким способом ><
Название: Re: Шаблон html в xsl с нуля?
Отправлено: aghigay от 06 Марта 2016, 20:38:54
1. следует забыть слова "сами" и "автоматически"
2. следует переформулировать вопрос чтобы получить конкретный результат.

PS: сейчас, мало того, что в посте много буков и не слишком четко описана ситуация, так еще и вопрос задан с опечатками и лексическими неточностями. Пример (мои комментарии в квадратных скобках):

Вот теперь и вопрос, если я их [кого их?] как меню выведу, они [кто они?] сами буду [буду или будут?] автоматически привязывать [кого привязывать?] к определенному направлению, если использовался запрос как для меню [это какой запрос? что-то в документации по ЮМИ ну никак "запрос как для меню" не ищется] (по логике мне кажется да ><) [а мне кажется, что каша] ?
Название: Re: Шаблон html в xsl с нуля?
Отправлено: Sumrakrnd от 06 Марта 2016, 21:01:55
Ну рассмотрим на примере приведенной структуры:
|Категория1
-Направление1
--Статья1
--Статья2
--Статья3
-Направление2
--Статья1
--Статья2
--Статья3
|Категория2
-Направление1
--Статья1
--Статья2
--Статья3
и т.д.

В правой колонке я выведу статьи как меню, т.е. беру третью вложенность (так правильно говориться?)

При переходе на Направление1 в правой колонке какие будут высвечивать Статьи, которые относятся к Направлению1 или все статьи всех направлений?
Название: Re: Шаблон html в xsl с нуля?
Отправлено: aghigay от 06 Марта 2016, 21:12:39
Вероятнее всего ответ на вопрос - это зависит от того, какие параметры будут переданы макросу вывода меню при выводе меню. Логично?
Название: Re: Шаблон html в xsl с нуля?
Отправлено: Sumrakrnd от 06 Марта 2016, 21:21:12
Ага...
А есть что-нибудь про эти макросы?
Или примеры? при том хорошо если примеры @_@
Название: Re: Шаблон html в xsl с нуля?
Отправлено: aghigay от 06 Марта 2016, 21:22:51
Про какие?
Про эти: http://dev.docs.umi-cms.ru/spravochnik_makrosov_umicms/struktura_i_kontent/content_menu/
Или про эти: http://dev.docs.umi-cms.ru/spravochnik_makrosov_umicms/menu/menu_draw/
Название: Re: Шаблон html в xsl с нуля?
Отправлено: Sumrakrnd от 06 Марта 2016, 22:26:16
Наверное draw как таковой мне не подойдет...

 udata://content/menu/notemplate/0/12

notemplate - говорится что имя шаблона, т.е. это например top_menu?
0 - это получается берется только начальный уровень, т.е. если брать мою структуру, это будет выбираться все Категории, так?
12 - это получается с какой позиции, т.е. например если взять за 2 пункт Категория2, то выведутся все категории, кроме Категория1?


В общем.... пока я тут рассуждала и смотрела, пытаясь сориентироваться по своему меню.... в конец запуталась..... -____-"

Сейчас вся структура, что я описывала Категорииn -> Направленияn -> Статьиn выводятся в верхнем меню.
Да-да, нафиг по сути выводить статьи еще раз в правой колонке, если они есть в выпадающем меню, но вот вожжа под хвост попала, клиент хочет, чтобы и там были статьи привязанные к определенному направлению
Если по функционалу смотреть, то второе вложение меню всегда раскрыто, всплывает при наведении только третье вложение в котором находятся Статьи.

Вот запрос меню, можно на его примере мне немного пояснить?
    <!-- Menu -->
    <xsl:template match="udata[@module = 'content'][@method = 'menu']" mode="top_menu">
        <xsl:apply-templates select="item" mode="top_menu"/>
    </xsl:template>

    <xsl:template match="udata[@module = 'menu']/item" mode="top_menu">
        <li class="tab">
            <span>
                <xsl:choose>
                    <xsl:when test="position() = 2">
                        <xsl:attribute name="class">Test1</xsl:attribute>
                    </xsl:when>
                    <xsl:when test="position() = 4">
                        <xsl:attribute name="class">Test2</xsl:attribute>
                    </xsl:when>
                    <xsl:when test="position() = 6">
                        <xsl:attribute name="class">Test3</xsl:attribute>
                    </xsl:when>
                    <xsl:when test="position() = 8">
                        <xsl:attribute name="class">Test4</xsl:attribute>
                    </xsl:when>
                </xsl:choose>
                <xsl:value-of select="."/>
            </span>
            <xsl:apply-templates select="document(concat('udata://content/menu/0/2/', @id))/udata" mode="top_drop">
                <xsl:with-param name="position" select="position()"/>
            </xsl:apply-templates>
        </li>
    </xsl:template>

    <xsl:template match="udata" mode="top_drop"/>

    <xsl:template match="udata[items]" mode="top_drop">
        <xsl:param name="position"/>
        <div class="tab-content">
            <div class="menu__wrap">
                <xsl:if test="count(items/item) &gt; 20">
                    <xsl:attribute name="class">menu__wrap menu__wrap--long-list</xsl:attribute>
                </xsl:if>
                <ul>
                    <xsl:apply-templates select="items/item" mode="top_drop"/>
                </ul>

            </div>
            <xsl:if test="count(items/item) &gt; 20">
                <button class="btn-menu__show-more">Все направления</button>
            </xsl:if>
        </div>
    </xsl:template>

    <xsl:template match="item" mode="top_drop">
        <li>
            <xsl:if test="position() = 20">
                <xsl:attribute name="class">long-list-breaker</xsl:attribute>
            </xsl:if>
            <xsl:value-of select="link"/>
            <a href="{@link}">
                <xsl:value-of select="@name"/>
            </a>
            <xsl:apply-templates select="items" mode="top_drop3"/> <!-- по сути мне надо вывести в правый блок меню, начиная отсюда-->
        </li>
    </xsl:template>


    <xsl:template match="items" mode="top_drop3">
        <span class="polygon"></span>
        <div class="under_menu">
            <div class="block-info">
                <div class="list-services">
                    <xsl:apply-templates select="item" mode="top_drop3"/>
                </div>
            </div>
        </div>
    </xsl:template>


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

Вывожу меню:
<xsl:apply-templates select="document('udata://menu/draw/1307')" mode="top_menu"/>

Такое чувство, что я что-то пропустила...

Название: Re: Шаблон html в xsl с нуля?
Отправлено: aghigay от 06 Марта 2016, 22:37:03

Такое чувство, что я что-то пропустила...


Примерно половину документации?

Предлагаю еще раз внимательно прочитать что написано в инструкции по использованию макроса
Название: Re: Шаблон html в xsl с нуля?
Отправлено: Sumrakrnd от 06 Марта 2016, 23:52:42
Я читала, я хоть правильно рассуждала до момента, когда написала что запуталась.
Название: Re: Шаблон html в xsl с нуля?
Отправлено: aghigay от 07 Марта 2016, 00:58:56
Когда в первой и в предпоследней строке сообщения написаны противоречащие друг другу вещи, а в третьей - вещи, описанные в инструкции прямо противоположно, наверное сложно утверждать про правильность рассуждений.
Название: Re: Шаблон html в xsl с нуля?
Отправлено: Sumrakrnd от 07 Марта 2016, 01:46:48
Вот поэтому я и написала, что запуталась...

У меня есть два созданных меню Главное и Дополнительное меню включающее в себя все Категории

Сперва вызывается draw Дополнительного меню, который "подтягивает" Категории, и с помощью content menu "подтягиваю" вложенные в Категории <- Направления, а к Направлениям<-Статьи.
Правильно?
главное чтобы было понятно написано

Сейчас решила посмотреть, что мне выведет в правой колонке запрос:
<xsl:apply-templates select="document('udata://content/menu/')/udata"/>
Выводит он мне пункты главного меню...

Почему так?
Название: Re: Шаблон html в xsl с нуля?
Отправлено: Sumrakrnd от 07 Марта 2016, 13:00:29
Блин... как поставить ограничение у draw (или не у него надо?), чтобы выводилось третье вложение Статьи?

Допустим, я вывела дополнительное меню, в котором все Категории:

<xsl:apply-templates select="document('udata://menu/draw/1307')/udata" mode="right_menu"/>

В коде получается я прописываю:
	<xsl:template match="udata[@method = 'menu']" mode="right_menu">
<ul >
<xsl:apply-templates select="items/item" mode="right_menu" />
</ul>
</xsl:template>

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

Соответственно в правой колонке сейчас отображаются все категории, но я понимаю только как стандартно вызвать меню туда меню, а не ограничить его (((((((((
Название: Re: Шаблон html в xsl с нуля?
Отправлено: Sumrakrnd от 07 Марта 2016, 13:54:06
А если я прописываю так, то выводятся все Направления вложенные в Категории:
<xsl:apply-templates select="document('udata://content/menu/notemplate/0/275')/udata" mode="right_menu"/>

Но это получается не то, что нужно и довольно жесткую привязку, и получается гибкость уходить...
Название: Re: Шаблон html в xsl с нуля?
Отправлено: aghigay от 07 Марта 2016, 13:59:14
http://bit.ly/1R2DvaQ
Название: Re: Шаблон html в xsl с нуля?
Отправлено: Sumrakrnd от 07 Марта 2016, 14:07:07
Круто, еще один темный лес...
Название: Re: Шаблон html в xsl с нуля?
Отправлено: aghigay от 07 Марта 2016, 14:08:33
Отнюдь. Скорее: знание элементарных вещей, описанных в документации, даст гораздо больше, чем попытка ответить на невнятный вопрос
Название: Re: Шаблон html в xsl с нуля?
Отправлено: Sumrakrnd от 07 Марта 2016, 14:23:34
Что не внятного в вопросе.

Надо в правой колонке сделать вывод Статей на страницах Направлений к которым эти Статьи относятся, так же на станицах самих этих Статей.
Т.е. находясь в Направлении1 увидеть в правой колонке:
--Статья1
--Статья2
--Статья3
И если ты зашел в Статью1, то дальше так же справа будет список этих Статей

Соответственно, Статьи из Направления2/3/и т.д. не будут видны в Направлении1

Просто опять придется перелопатить кучу информации в неизвестной сфере, пока доберусь до нужной информации и будет такая же каша в голове, и потом как с category, не смогу вспомнить про что-нибудь.

Да и хотелось бы отдохнуть хотя бы в свой праздник ( поэтому просто хотела бы простой ответ с пояснениями...

P.S.: Я ж не только над эти выводом меню работаю сейчас, там еще много работы, просто с остальным справляюсь, по крайне мере вроде работает
Название: Re: Шаблон html в xsl с нуля?
Отправлено: aghigay от 07 Марта 2016, 14:25:49
Невнятность вопроса в том, зачем 2 меню?
Название: Re: Шаблон html в xsl с нуля?
Отправлено: aghigay от 07 Марта 2016, 14:28:25
Не в смысле: зачем на странице выводить 2 меню. Это вообще пофигу - это замысел клиента, значит нужно так сделать.

Вопрос в реализации. Для чего использовать второе меню для вывода второго меню?

Отсюда явно следует 2 вывода:
- вы не читали документацию по стандартному меню http://dev.docs.umi-cms.ru/spravochnik_makrosov_umicms/struktura_i_kontent/content_menu/
- вы не знаете как использовать xpath для вывода ограниченного списка, а не всего целиком.

И тот и другой вывод приводят нас к тому, что вы не знаете азов и что пора бы уже этим заняться
Название: Re: Шаблон html в xsl с нуля?
Отправлено: Sumrakrnd от 07 Марта 2016, 14:47:39
Невнятность вопроса в том, зачем 2 меню?
Вот вожжа под хвост клиенту попала и хочет он, чтобы и в правом блоке эти статьи были, а не только всплывающем блоке Дополнительного меню.

Не знаю азов не отрицаю, учу на ходу, на самом деле структура сайта изначально была проще
Не было этого дурацкого фильтра и этого дублирующего меню в правом блоке тоже =_=

И у меня ограничение по времени, я просто не успею осилить такое без помощи, а в среду надо показать, что блоки выводятся как клиент хочет.
И никто не смог его отговорить от этих блоков, он в них прям рогом уперся...

Я например сижу над рандомным выводом блоков и отзывами... а про работу над типами данных промолчу, там еще кучу страниц со своими типами данных и аккордеонами (не слишком сложно, просто можно запутаться..) так что я не сижу сложив лапки, ничего не делая

- вы не читали документацию по стандартному меню http://dev.docs.umi-cms.ru/spravochnik_makrosov_umicms/struktura_i_kontent/content_menu/
Читала, вот как стандартно вывести поняла, ну еще как взять из определенной страницы.
Но не привязывать же к каждому направлению отдельное меню... этих направление примерно около 150, если не больше...

Название: Re: Шаблон html в xsl с нуля?
Отправлено: aghigay от 07 Марта 2016, 15:26:06
Что будет если вызвать просто udata://content/menu/ на вашей странице, в которой должно быть подменю?
Название: Re: Шаблон html в xsl с нуля?
Отправлено: Sumrakrnd от 07 Марта 2016, 15:51:43
Выводит Главное меню


p.s.:
если прописано
<xsl:apply-templates select="document('udata://content/menu/notemplate/0/273')"/>
- то выводит Категории из Дополнительного меню (где и находится нужная структура)
Название: Re: Шаблон html в xsl с нуля?
Отправлено: aghigay от 07 Марта 2016, 16:10:08
А как насчет:
<xsl:apply-templates select="document(concat('udata://content/menu/notemplate/0/', $document-page-id))"/> ?

Что будет в этом случае?
Название: Re: Шаблон html в xsl с нуля?
Отправлено: Sumrakrnd от 07 Марта 2016, 16:22:06
ооо... если находится в Направление у которого есть Статьи, то выводит их, но зайдя в Статью, пропадает.


Получается document-page-id делает вывод меню по id страницы на которой сейчас находишься?
Название: Re: Шаблон html в xsl с нуля?
Отправлено: aghigay от 07 Марта 2016, 17:25:31
А теперь нужно сделать еще одну магию - написать:
<xsl:apply-templates select="document(concat('udata://content/menu/notemplate/0/', /result/parents/page[position() = 1]/@id))"/>
Название: Re: Шаблон html в xsl с нуля?
Отправлено: Sumrakrnd от 07 Марта 2016, 20:40:28
Хм...
Если позиция 1 то выводит Категории
2 - Направления
3 - выводит список Статей, но только если находишься в какой-нибудь Статье. На остальных выводится Главное меню

случился небольшой кризис, уходила, не дали дочитать -_-"
Название: Re: Шаблон html в xsl с нуля?
Отправлено: aghigay от 07 Марта 2016, 20:54:21
А теперь нужно в конце адреса добавить .xml и увидеть как устроены parents, сколько их и какие они на разных страницах. Элементарно
Название: Re: Шаблон html в xsl с нуля?
Отправлено: Sumrakrnd от 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))"/>
То выводится список Статей только в Направление, внутри Статьи списка нет.
Название: Re: Шаблон html в xsl с нуля?
Отправлено: Sumrakrnd от 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 в совершенстве невозможно. Даже сами разработчики знают о ней не все...
Название: Re: Шаблон html в xsl с нуля?
Отправлено: Sumrakrnd от 09 Марта 2016, 12:23:44
Так как правильно то?(

Помогите этот запрос добить, пожалуйста ><
Название: Re: Шаблон html в xsl с нуля?
Отправлено: Sumrakrnd от 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
Название: Re: Шаблон html в xsl с нуля?
Отправлено: admin от 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/ (http://dev.docs.umi-cms.ru/spravochnik_makrosov_umicms/struktura_i_kontent/content_menu/#xslt-templating) нет блока с названием элемента от которого идет поиск пунктов меню

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

Например так:
<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>
Название: Re: Шаблон html в xsl с нуля?
Отправлено: Sumrakrnd от 10 Марта 2016, 12:41:14
Сделать проверку на наличие дочерних элементов и если их нет, ничего не выводить
Ооо... так тоже можно писать условие о_О Прикольно =)

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

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


Спасибо за ответ ^^
Название: Re: Шаблон html в xsl с нуля?
Отправлено: admin от 10 Марта 2016, 13:45:28
Кстати, а его можно применить вот в такой проблеме.
Например, надо вывести по два Специалиста в правом блоке, само по себе это не сложно через usel и limit, но проблема в том, что выводится должны Специалисты соответствующие Направлению в котором находишься.
Можно ли применить параметры для проверки соответствия Специалиста Направлению?

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

param, который я показывал нужен для того, чтобы не запрашивать параметр в дочерних шаблонах, а пробросить их внутрь дочерних шаблонов или чтобы использовать один и тот же шаблон подставляя в него разные данные, отправляемые при вызове.
Название: Re: Шаблон html в xsl с нуля?
Отправлено: Sumrakrnd от 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.: В смысле по какому параметру брать и сравнивать их?
Название: Re: Шаблон html в xsl с нуля?
Отправлено: Sumrakrnd от 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
Название: Re: Шаблон html в xsl с нуля?
Отправлено: Sumrakrnd от 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" />
Название: Re: Шаблон html в xsl с нуля?
Отправлено: Sumrakrnd от 11 Марта 2016, 12:18:13
Все таки я решила вывести вопрос о usel в новую тему.
http://umihelp.ru/forum/index.php/topic,2137.new.html#new