Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”
Не выводится дополнительное меню в версии "Start"

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

Ответов: 4
Просмотров: 1921
Последний ответ 10 Января 2013, 10:08:04
от admin
Магазин "Современный" - добавление заголовка к левому меню каталога

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

Ответов: 4
Просмотров: 1735
Последний ответ 25 Июня 2012, 17:33:00
от manadsgn
Вывод страницы в меню с отключением вывода в карте сайта

Автор alpotemkinРаздел Макросы UMI.CMS

Ответов: 6
Просмотров: 3299
Последний ответ 03 Ноября 2011, 15:07:29
от alpotemkin
Текущая страница - добавление класса к ссылке главного меню

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

Ответов: 2
Просмотров: 1584
Последний ответ 24 Июня 2012, 14:00:10
от manadsgn
Вывод в меню только разделов с определенными свойствами

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

Ответов: 4
Просмотров: 3177
Последний ответ 24 Июня 2011, 12:58:58
от polo

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

*

HardHardy

  • **
  • 74
  • +1/-0
    • Просмотр профиля
    • Фортис
Здравствуйте!
Многоуровневое меню средствами XSLT-шаблонизатора создается достаточно легко.
А как его сделать средствами TPL-шаблонизатора?

*

admin

  • *****
  • 2416
  • +171/-1
    • Просмотр профиля
очень просто, создаешь в системе разделы и подразделы с отмеченными галочками выводить в меню выводить подменю и меню всегда развернуто (ну там уж по желанию с последней галочкой). Вот пример шаблона для многоуровневого меню

<?php

$FORM = Array();

$FORMS['menu_block_level1'] = <<<END
%lines%
END;

$FORMS['menu_line_level1'] = <<<END

END;

$FORMS['menu_line_level1_a'] = <<<END
%sub_menu%
END;



$FORMS['menu_block_level2'] = <<<END

               <ul id="submenu"
                     umi:element-id="%id%"
                     umi:module="content"
                     umi:method="menu"
                     umi:sortable="sortable"
                     umi:add-method="popup"
                     umi:region="list"
                     umi:button-position="top left"
               >
%lines%
               </ul>
END;

$FORMS['menu_line_level2'] = <<<END
                  <li><a href="%link%" umi:field-name="name">%text%</a></li>

END;

$FORMS['menu_line_level2_a'] = <<<END

                  <li class="active"><a href="%link%" umi:field-name="name">%text%</a></li>
%sub_menu%

END;


$FORMS['menu_block_level3'] = <<<END

                  <ul
                     umi:element-id="%id%"
                     umi:module="content"
                     umi:method="menu"
                     umi:sortable="sortable"
                     umi:add-method="popup"
                     umi:region="list"
                     umi:button-position="top left"
                  >
%lines%
                  </ul>
END;

$FORMS['menu_line_level3'] = <<<END
                        <li
                           umi:element-id="%id%"
                           umi:field-name="name"
                           umi:delete="delete"
                           umi:region="row"
                           umi:empty="Название страницы"
                        >
                           <a href="%link%" umi:field-name="name">%text%</a>
                        </li>

END;

$FORMS['menu_line_level3_a'] = <<<END
                        <li class="active"
                           umi:field-name="name"
                           umi:element-id="%id%"
                           umi:field-name="name"
                           umi:delete="delete"
                           umi:region="row"
                           umi:empty="Название страницы"
                        >
                           %text%
                        </li>
END;


?>

*

HardHardy

  • **
  • 74
  • +1/-0
    • Просмотр профиля
    • Фортис
Спасибо огромное! :) Щас попробуем)))

*

HardHardy

  • **
  • 74
  • +1/-0
    • Просмотр профиля
    • Фортис
Чет у меня не получается... Уточню вопрос, мне нужно выпадающее меню, при наведении мышки.
Сейчас выглядит вот так:

<?php
$FORMS = Array();
 
$FORMS['menu_block_level1'] = <<<END
<table border="0" cellpadding="0" cellspacing="0" background="">
<tr valign="bottom">
%lines%   
</tr>
</table>
 
END;
 

$FORMS['menu_line_level1'] = <<<END
          <ul>
            <li><a href="%link%">%text%</a></li>
          </ul>
END;


$FORMS['menu_line_level1_a'] = <<<END
          <ul>
            <li><a href="%link%">%text%</a></li>
          </ul>
END;
?>

*

admin

  • *****
  • 2416
  • +171/-1
    • Просмотр профиля
такой шаблон вам выдаст примерно такой вариант (соединю кусочки по частям)

Вначале берем блок для всего меню

<table border="0" cellpadding="0" cellspacing="0" background="">
<tr valign="bottom">
%lines%   
</tr>
</table>

дальше, вместо %lines% подставиться содержимое блока menu_line_level1 (если пользователь находиться на странице присутствующей в меню, то эта страница будет оформлена с использованием блока menu_line_level1_a). В итоге у нас получиться

<table border="0" cellpadding="0" cellspacing="0" background="">
<tr valign="bottom">
          <ul>
            <li><a href="%link%">%text%</a></li>
          </ul>
</tr>
</table>

отсюда мы видим что у вас... Во-первых уже будет проблемы с html, так как не указанны теги <td>, во-вторых, здесь нигде не выводиться второй уровень. А должно это выглядеть как-то так (я проявлю немного самодейтельности и избавлюсь от таблицы, возьмем стандартное выпадающее горизонтальное меню на css (первый результат в google который мне выдал), ссылка тут http://cssor.ru/css/polezno-interesnoe/cssmenu)

в итоге надо будет получить вот такой html код:

<ul id="cssmenu">
        <li><a href="#">Горизонтальное</a>
                <ul>
                        <li><a href="#">Ссылка 1</a></li>
                        <li><a href="#">Ссылка 2</a></li>
                </ul>
        </li>
        <li><a href="#">CSS</a>
                <ul>
                        <li><a href="#">Ссылка 1</a></li>
                        <li><a href="#">Ссылка 2</a></li>
                        <li><a href="#">Ссылка 3</a></li>
                        <li><a href="#">Ссылка 4</a></li>
                        <li><a href="#">Ссылка 5</a></li>
                </ul>
        </li>
        <li><a href="#">Меню</a>
                <ul>
                        <li><a href="#">Ссылка 1</a></li>
                        <li><a href="#">Ссылка 2</a></li>
                </ul>
        </li>
</ul>

для этого мы делаем вот такой шаблон
 
<?php

$FORM = Array();

$FORMS['menu_block_level1'] = <<<END
<ul id="cssmenu">
        %lines%
</ul>

END;

$FORMS['menu_line_level1'] = <<<END
        <li><a href="%link%">%text%</a>
                %sub_menu%
        </li>
END;

$FORMS['menu_line_level1_a'] = <<<END
        <li><a href="%link%">%text%</a>
                %sub_menu%
        </li>
END;



$FORMS['menu_block_level2'] = <<<END
      <ul>
                        %lines%
                </ul>
END;

$FORMS['menu_line_level2'] = <<<END
         <li><a href="%link%" >%text%</a></li>
END;

$FORMS['menu_line_level2_a'] = <<<END
                        <li><a class="active" href="%link%" >%text%</a></li>
END;


?>

он будет выводить нам  двухуровневое меню а остальные штуки типа css .

В общем использование шаблонов похоже на матрешку, вначале собирают все пункты n-ого уровня меню (menu_line_leveln), потом закидывают их в общий контейнер для данного уровня (menu_block_leveln), если есть уровень выше то собираем его в итоге получаем цельный html код

*

HardHardy

  • **
  • 74
  • +1/-0
    • Просмотр профиля
    • Фортис
млин, я уже тупо скачал ксс и ваш пример. всеравно не хотит работать :(

*

HardHardy

  • **
  • 74
  • +1/-0
    • Просмотр профиля
    • Фортис
На XSLT-шаблонизаторе вабще ни каких трудностей не возникло, код там такой:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   xmlns:umi="http://www.umi-cms.ru/TR/umi">


 <xsl:template match="udata[@module = 'content'][@method = 'menu']">
   <ul umi:element-id="0" umi:module="content" umi:add-method="popup" umi:region="list" umi:sortable="sortable">
       <xsl:apply-templates select="items/item" mode="menu"/>   
   </ul>
 </xsl:template>

 <xsl:template match="item" mode="menu">
  <li>
   <a href="{@link}" umi:element-id="{@id}" umi:field-name="name" umi:region="row" umi:delete="delete">
      <xsl:value-of select="." />
   </a>
  </li>
 </xsl:template>
   
 <xsl:template match="item" mode="menu">
  <li>
   <a href="{@link}" umi:element-id="{@id}" umi:field-name="name" umi:region="row" umi:delete="delete" class="act">
      <xsl:value-of select="." />
   </a>
        <xsl:apply-templates select="document(concat('udata://content/menu/0/2/', @id))/udata[items/item]" />
  </li>
 </xsl:template>


</xsl:stylesheet>

Ну и в контентной странице:

        <div class="header-bottom">
         <div class="nav2">
                  <xsl:apply-templates select="document('udata://content/menu/')/udata"/>
         </div>
        </div>

*

admin

  • *****
  • 2416
  • +171/-1
    • Просмотр профиля
прекрасно что у вас получилось сделать меню с xslt, а ради интереса, можно получить доступы к вашему сайту и проверить что было не так с tpl меню? если да пишите на почту admin@umihelp.ru

*

HardHardy

  • **
  • 74
  • +1/-0
    • Просмотр профиля
    • Фортис
ОК
щас скину :)

*

talanter

  • *
  • 17
  • +0/-0
    • Просмотр профиля
Скорее всего у родителльского обекта меню не стоит галочка
меню всегда развернуто,
и отображать подменю.
ХSLT - их игнорит.

Возможно проблема именно в этом.

*

nops

  • *
  • 4
  • +0/-0
    • Просмотр профиля
    • Novour.com - Бесплатный хостинг
Друзья!
Я новичок в разработке и тем более в UMI.
имеем html шаблон.
корневые разделы в верхнем меню в строчку. Нужно подразделы вывести слева во второе меню и содержимое зависело от главного раздела.
Делать надо на tpl.
xslt вообще не знаю что это такое:(

*

albion

  • ***
  • 109
  • +3/-0
    • Просмотр профиля
    • Веб-Админ
nops, В принципе здесь ничего сложного. http://help-dev.umi-cms.ru/content.menu.html#tplDesc . Должно стать понятно, как это делается.

*

nops

  • *
  • 4
  • +0/-0
    • Просмотр профиля
    • Novour.com - Бесплатный хостинг
Так вот в том то и дело, что именно по этой статье делал, но ничего не получилось:(

*

admin

  • *****
  • 2416
  • +171/-1
    • Просмотр профиля
какой макрос используешь в выводе бокового меню?
приведи код шаблона?
и что он в итоге тебе выдает

Да и поздравляю тебя с 500 сообщением на форуме, в личку отписал) от меня презент

*

nops

  • *
  • 4
  • +0/-0
    • Просмотр профиля
    • Novour.com - Бесплатный хостинг
Да и поздравляю тебя с 500 сообщением на форуме, в личку отписал) от меня презент
забавный презнтик, мог бы хоть раз и написать:-)