UMIhelp

Разработка сайта на UMI.CMS => Шаблоны XSLT => Тема начата: Sumrakrnd от 30 Ноября 2016, 14:37:08

Название: Вывод подразделов меню и заголовка
Отправлено: Sumrakrnd от 30 Ноября 2016, 14:37:08
Доброго времени суток

Можете посоветовать, как изменить запрос для вызова меню?
 
вот у меня страница
http://otto.aveas.ru/clinic/scientific-advisory-branch/polyclinic/ - около заголовка дублируется подразделы "Научно-консультативное отделение" и заголовок самого раздела (так хотят)

Я вызываю эти подразделы меню вот таким запросом
    <xsl:template match="result" mode="menu-title">
        <div class="menu_title">
            <xsl:apply-templates select="document(concat('udata://content/menu/notemplate/0/', /result/parents/page[position() = 2]/@id))" mode="menu-items" />
        </div>
    </xsl:template>

Заголовок таким:
<xsl:variable name="h1_id" select="document(concat('upage://', page/@parentId, .//property/value/page/@id))" />
<h1>
<xsl:value-of select="$h1_id//property[@name = 'h1']/value" />
</h1>

Но вот на этой странице (и подобных разделов у которых нет подразделов)
http://otto.aveas.ru/about/official-info/ - так же около заголовка почему-то вызываются все пункты главного меню. И на таких страницах возникла сложность с заголовком, т.к. получается должен быть не "О нас", а "Официальная информация".
Название: Re: Вывод подразделов меню и заголовка
Отправлено: admin от 08 Декабря 2016, 22:44:36
<xsl:apply-templates select="document(concat('udata://content/menu/notemplate/0/', /result/parents/page[position() = 2]/@id))" mode="menu-items" />

при этом id страницы внутри которой мы будем искать страницы для меню мы получаем через запрос
/result/parents/page[position() = 2]/@id

и если на этой странице http://otto.aveas.ru/clinic/scientific-advisory-branch/polyclinic/ у нас есть значение по такому адресу, то на странице http://otto.aveas.ru/about/official-info/ такого значения, и в макрос передается 0, а это озачает что мы хотим получить меню от корня сайта (что вы и получаете)

- Либо делайте проверку на то, есть ли значение по адресу
/result/parents/page[position() = 2]/@id

- Либо вызывайте меню родительского раздела передавая атрибут родителя текущей страницы
 
<xsl:apply-templates select="document(concat('udata://content/menu/notemplate/0/', /result/page/@parentId))" mode="menu-items" />
Название: Re: Вывод подразделов меню и заголовка
Отправлено: Sumrakrnd от 09 Декабря 2016, 13:01:05
Аа...
- Либо вызывайте меню родительского раздела передавая атрибут родителя текущей страницы
 [code]<xsl:apply-templates select="document(concat('udata://content/menu/notemplate/0/', /result/page/@parentId))" mode="menu-items" />
[/quote]
Хм... второй вариант мне более понятен =)


- Либо делайте проверку на то, есть ли значение по адресу
/result/parents/page[position() = 2]/@id


А как должен выглядит синтаксис проверки?
Название: Re: Вывод подразделов меню и заголовка
Отправлено: admin от 09 Декабря 2016, 13:06:16

Хм... второй вариант мне более понятен =)
- Либо делайте проверку на то, есть ли значение по адресу
/result/parents/page[position() = 2]/@id


А как должен выглядит синтаксис проверки?

выглядеть как-то так
<xsl:if test="/result/parents/page[position() = 2]/@id">...</xsl:if>

но у вас же не на всех страницах подойдет такое выражение, для каких-то страниц вам потребуются выражения типа /result/parents/page[position() = 1]/@id или /result/parents/page[position() = 3]/@id

Так что, первый вариант правильнее (если я правильно понимаю вашу задачу выводить меню относительно родительской страницы отсчитывая от текущей страницы)
Название: Re: Вывод подразделов меню и заголовка
Отправлено: Sumrakrnd от 09 Декабря 2016, 13:11:45
выглядеть как-то так
<xsl:if test="/result/parents/page[position() = 2]/@id">...</xsl:if>

но у вас же не на всех страницах подойдет такое выражение, для каких-то страниц вам потребуются выражения типа /result/parents/page[position() = 1]/@id или /result/parents/page[position() = 3]/@id

Так что, первый вариант правильнее (если я правильно понимаю вашу задачу выводить меню относительно родительской страницы отсчитывая от текущей страницы)

Спасибо)

Надо будет только не забыть сделать заголовки для таких страниц, как новости, т.к. их нет в меню   :D
Я почему-то думала, что проверка будет выглядит как-то навороченней... ><
Название: Re: Вывод подразделов меню и заголовка
Отправлено: Sumrakrnd от 01 Марта 2017, 17:42:33
Возникла проблема:
На старом сайте работает вывод заголовка (в данном случае "Советы") http://ott.cv65275.tmweb.ru/science/council/learned-council/
Перенесли на другой хостинг сперва все работало, а сейчас заметила, что заголовок не выводится...
http://dev.ott.ru/science/council/learned-council/

А тут работает http://dev.ott.ru/science/research-work/

Вот такой  xsl:
			<div class="title-h1">
<a href="#" class="back" data-tool="Вернуться"></a>

<xsl:variable name="h1_id" select="document(concat('upage://', page/@parentId, .//property/value/page/@id))" />

<h1>
<xsl:value-of select="$h1_id//property[@name = 'h1']/value" />
</h1>

</div>
Скрин структуры, если нужен