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

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

*

Sumrakrnd

  • ****
  • 311
  • +1/-0
  • Учусь «на примерах»
    • Просмотр профиля
Доброго времени суток

Можете посоветовать, как изменить запрос для вызова меню?
 
вот у меня страница
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/ - так же около заголовка почему-то вызываются все пункты главного меню. И на таких страницах возникла сложность с заголовком, т.к. получается должен быть не "О нас", а "Официальная информация".

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re: Вывод подразделов меню и заголовка
« Ответ #1 : 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" />

*

Sumrakrnd

  • ****
  • 311
  • +1/-0
  • Учусь «на примерах»
    • Просмотр профиля
Re: Вывод подразделов меню и заголовка
« Ответ #2 : 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


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

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re: Вывод подразделов меню и заголовка
« Ответ #3 : 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

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

*

Sumrakrnd

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

*

Sumrakrnd

  • ****
  • 311
  • +1/-0
  • Учусь «на примерах»
    • Просмотр профиля
Re: Вывод подразделов меню и заголовка
« Ответ #5 : 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>
Скрин структуры, если нужен