UMIhelp

Разработка сайта на UMI.CMS => Шаблоны XSLT => Тема начата: pomoykin от 28 Июня 2011, 07:47:05

Название: второе меню, но не совсем...
Отправлено: pomoykin от 28 Июня 2011, 07:47:05
Привет Уважааемому Сообществу!

Подскажите пожалуйста, как среди огромного разнообразия вариантов реализации выбрать самый простой, да еще чтобы на UMI.CMS starter работало )))

Проблема:
нужна вторая менюшка типа быстрого доступа к информации, куда выводились бы только специальным образом (кстати, каким?) помеченные страницы... Кроме этого эти страницы должны попадать и в основное меню...

Т.е. главное меню - оно само по себе, выводится стандартным способом без фильтрации, а во втором меню только избранные страницы.

Спасибо за дельные советы :)
Название: Re:второе меню, но не совсем...
Отправлено: GKillah от 28 Июня 2011, 09:26:03
Я бы сделал так:
Завел поле типа чекбокс в шаблоне данных.
У нужных страниц отметил бы это поле. Потом usel'ом дергал бы все страницы, у которых это поле отмечено, и выводил бы их как меню.
Название: Re:второе меню, но не совсем...
Отправлено: admin от 28 Июня 2011, 11:03:52
полностью согласен, если второе меню не должно содержать иерархию, то чекбокс всем старницам и usel вывод страниц отфильтрованных по этому чекбоксу
Название: Re:второе меню, но не совсем...
Отправлено: pomoykin от 28 Июня 2011, 12:04:12
чего-то не выходит каменный цветок...

в шаблон "Раздел Сайта" добавил чекбокс show_in_dopmenu
в свойствах нескольких страниц отметил этот чекбокс

вызываем
<xsl:apply-templates select="document('udata://content/menu/')/udata" mode= "dopmenu" />

темплейт
<xsl:template match="udata[@module = 'content'][@method = 'menu']" mode="dopmenu">
<ul>
<xsl:apply-templates select="items/item[@show_in_dopmenu = 1]" mode="dopmenu"/>
</ul>
 </xsl:template>

 <xsl:template match="item[@show_in_dopmenu = 1]" mode="dopmenu">
  <li>
<a href="{@link}">
<xsl:value-of select="." />
</a>
  </li>
 </xsl:template>


но видимо где-то что-то не так... пустая допменюха...
дебаг включен, ошибок не выдает...
Название: Re:второе меню, но не совсем...
Отправлено: GKillah от 28 Июня 2011, 12:27:34
Делайте через usel
<xsl:apply-templates select="document('udata://content/menu/')/udata" mode= "dopmenu" /> по умолчанию выводит пункты меню со вложенностью 1. Очень вероятно, что отмеченные пункты просто не встречаются в этой вложенности.
Название: Re:второе меню, но не совсем...
Отправлено: pomoykin от 28 Июня 2011, 12:37:12
а не ткнёте носом в примеры usel?... доки почитал, но не понял как именно это используется...
Название: Re:второе меню, но не совсем...
Отправлено: admin от 28 Июня 2011, 12:40:50
посмотрите пример тут http://umihelp.ru/219/ может еще где на форуме или в блоге есть
Название: Re:второе меню, но не совсем...
Отправлено: GKillah от 28 Июня 2011, 12:51:46
<selection>
   <target result="pages">
      <type module="content" />
   </target>
        <property name="show_in_dopmenu" value="1" />
   <limit>100</limit>
</selection>

Как-то так.
Название: Re:второе меню, но не совсем...
Отправлено: pomoykin от 28 Июня 2011, 13:23:56
dopmenu.xml
<?xml version="1.0" encoding="utf-8"?>
<selection>
   <target result="pages">
      <type module="content" />
   </target>
        <property name="show_in_dopmenu" value="1" />
   <limit>100</limit>
</selection>

с этим USEL выводит вообще ВСЕ разделы, даже те, которые в меню показывать не надо...

посмотрел вывод /usel/dopmenu =  там вообще не видно ничего про show_in_dopmenu...
Название: Re:второе меню, но не совсем...
Отправлено: pomoykin от 28 Июня 2011, 13:42:25
всё.... нашел ашыпку...
нужно type указывать вот так:
      <type module="content" method="page" />
и всё работает... )

щас доделаю и обобщу опыт пошагово...
Название: Re:второе меню, но не совсем...
Отправлено: pomoykin от 28 Июня 2011, 15:01:37
Вобщем, заработал вот такой вариант:

1. В шаблон "Раздел сайта" добавляем чекбокс. В моем случае "show_in_dopmenu".

2. dopmenu.xml
<?xml version="1.0" encoding="utf-8"?>
<selection>
   <target result="pages">
      <type module="content" method="page" />
   </target>
        <property name="show_in_dopmenu" value="1" />
   <limit>100</limit>
</selection>

3. Вызов выборки
<xsl:apply-templates select="document('usel://dopmenu/')/udata" mode= "dopmenu" />

4. Шаблон, выводящий результат
 <xsl:template match="udata" mode="dopmenu">
<ul>
<xsl:apply-templates select="page" mode="dopmenu"/>
</ul>
 </xsl:template>

 <xsl:template match="page" mode="dopmenu">
  <li>
<a href="{@link}">
<xsl:apply-templates select="name" mode="dopmenu"/>
</a>
  </li>
 </xsl:template>

 <xsl:template match="name" mode="dopmenu">
<xsl:value-of select="." />
 </xsl:template>

Спасибо всем участникам обсуждения! Ваши бесценные советы очень помогли!
Название: Re:второе меню, но не совсем...
Отправлено: darklight от 14 Октября 2011, 18:20:13
Цитировать
Вобщем, заработал вот такой вариант:

а если я хочу из новостей сделать пункты меню? тоже module="content" указывать?
Название: Re:второе меню, но не совсем...
Отправлено: NOIRMAN от 15 Октября 2011, 02:16:43
Цитировать
Вобщем, заработал вот такой вариант:

а если я хочу из новостей сделать пункты меню? тоже module="content" указывать?

Соответственно для новостей module="news" method="item" для самих новостей или method="rubric" для лент новостей
Название: Re:второе меню, но не совсем...
Отправлено: darklight от 15 Октября 2011, 08:25:13
спасибо, получилось