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

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

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

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

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

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

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

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

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

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

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

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

*

john

  • ***
  • 202
  • +6/-0
    • Просмотр профиля
Многоуровневое меню
« : 24 Марта 2012, 14:49:51 »
1. На демо сайте хомячков выводится горизонтальное меню, выводятся те страницы, у которых стоит галочка "Отображать в меню". Где в модуле шаблона данных можно найти его и отредактировать? Другие галочки я нашел, типа "показывать под меню, меню всегда развернуто", т.е. как это работает?

2. Второй вопрос, я хочу создать еще вертикальное многоуровневое меню, например я ставлю галочку "отображаться в вертикальном меню" и выводится эти страницы и их подразделы.
В шаблоне вызывал бы меню макросом %vertic_menu('default')%
Как правильно реализовать?

3. Или для такого случая лучше использовать Usel (для tpl-шаблонизатора), тогда как правильно расписать в шаблоне многоуровневое меню tpls/data/usel/default.tpl
$FORMS = Array();


$FORMS['vertic_menu_block_level1'] = <<<END
<ul id="menu">
%lines%
</ul>

END;

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

$FORMS['vertic_menu_line_level1_a'] = <<<END
<li class="act"><a href="%link%"><span><span>
%text%
</span></span></a>
</li>

END;

« Последнее редактирование: 24 Марта 2012, 15:01:57 от john »

*

HardHardy

  • **
  • 74
  • +1/-0
    • Просмотр профиля
    • Фортис
Re:Многоуровневое меню
« Ответ #1 : 25 Марта 2012, 03:30:16 »
Я делал горизонтальное макросом %content menu()%
А вертикальное выборкой usel. макросом %data doSelection()%
Оформление прописывается в css. (погуглите)
Пример на моем сайте: http://www.fortis74.ru/rekomendacii/ прошу прощения за ссыль.

*

admin

  • *****
  • 2419
  • +172/-1
    • Просмотр профиля
Re:Многоуровневое меню
« Ответ #2 : 25 Марта 2012, 11:41:45 »
1. этот параметр скрыт/ И что именно ты хочешь в нем отредактировать?
2. можно продублировать комплекс макросов которые работают при выводе %content menu()% и сделать на их основе какой-нибудь кастомный %content vertical()%.
3. А можно сделать через Usel ( что , я бы и выбрал), вам уже в другой ветке кидали ссылку на мою статью где расписано все от и до как это делается

 

*

john

  • ***
  • 202
  • +6/-0
    • Просмотр профиля
Re:Многоуровневое меню
« Ответ #3 : 25 Марта 2012, 17:36:38 »
Цитировать
Я делал горизонтальное макросом %content menu()%
А вертикальное выборкой usel. макросом %data doSelection()%
Оформление прописывается в css. (погуглите)
Пример на моем сайте: http://www.fortis74.ru/rekomendacii/ прошу прощения за ссыль.
Да вижу, только мне не надо чтобы при наведении они открывались и автоматом закрывались. Нажал на раздел и он развернулся.

1. Править ничего не хотел, аналогично ему хотел сделать.
3. Да, статья очень полезная, развернул меню у себя все прекрасно
А в видеокасте в конце упомянули про дополнительные галочки, это про развернутое или свернутое меню? как можно сделать свернутым, а при клике на раздел он разворачивался полностью?
« Последнее редактирование: 25 Марта 2012, 19:51:56 от john »

*

john

  • ***
  • 202
  • +6/-0
    • Просмотр профиля
Re:Многоуровневое меню
« Ответ #4 : 25 Марта 2012, 20:30:48 »
еще вопрос, сделал через usel.
Попытался выделить активный раздел, но почему то блок
$FORMS['elements_block_line_a'] он не видит, почему?
$FORMS['elements_block'] = <<<END
<ul id="menu">
    %items%
</ul>
END;

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

$FORMS['elements_block_line_a'] = <<<END
<li class="act"><a href="%link%"> %name%</a></li>

END;

*

admin

  • *****
  • 2419
  • +172/-1
    • Просмотр профиля
Re:Многоуровневое меню
« Ответ #5 : 26 Марта 2012, 08:22:20 »
про галочки... это была импровизация на тему того как сделать полноценные галочки управления при создании usel меню. Просто добавляешь дополнительные галочки которые учитываешь при выводе в шаблоне.

насчет шаблона для активноо пункта, такого нет (см внимательно документацию http://help-dev.umi-cms.ru/data.doSelection.html#tplDesc)

*

john

  • ***
  • 202
  • +6/-0
    • Просмотр профиля
Re:Многоуровневое меню
« Ответ #6 : 27 Марта 2012, 00:00:57 »
получается активный пункт меню через usel нельзя сделать выделенным?

*

HardHardy

  • **
  • 74
  • +1/-0
    • Просмотр профиля
    • Фортис
Re:Многоуровневое меню
« Ответ #7 : 28 Марта 2012, 16:05:43 »
а что мешает сделать через css?
usel просто делает выборку. все остальное в css.
« Последнее редактирование: 28 Марта 2012, 16:10:24 от HardHardy »

*

admin

  • *****
  • 2419
  • +172/-1
    • Просмотр профиля
Re:Многоуровневое меню
« Ответ #8 : 28 Марта 2012, 16:59:39 »
Для определения активной страницы можно воспользоваться чем-то вроде этого маленький кастомный макрос is_active_page

*

john

  • ***
  • 202
  • +6/-0
    • Просмотр профиля
Re:Многоуровневое меню
« Ответ #9 : 28 Марта 2012, 22:37:42 »
В CSS что-то тяжеловато, если каждый <li> отличался классом то да.

Воспользовался кастомным макросом.
в /classes/modules/custom.php прописал
public function is_active_page($id=NULL) {
    if(!$id) return;
    $page_id = cmsController::getInstance()->getCurrentElementId();// берем id текущей страницы
    if($page_id==$id) return 'active';
}

в /tpls/data/usels/default.tpl

 прописал
<a href="%link%" class="Method custom::is_active_page doesn't exists">%name%</a>

В html коде вижу тоже самое
<a href="/zakupki/2012_god/godovoj_plan/" class="Method custom::is_active_page doesn't exists">Годовой план</a>
Что-то не работает

*

admin

  • *****
  • 2419
  • +172/-1
    • Просмотр профиля
Re:Многоуровневое меню
« Ответ #10 : 29 Марта 2012, 09:20:22 »
<a href="%link%" class="Method custom::is_active_page doesn't exists">%name%</a>

уже выглядит странно)) видимо надо так:
<a href="%link%" class="%custom is_active_page(%pid%)%">%name%</a>

и опят же стоит понимать что статук "актив" вернется только той странице которая является текущей

*

john

  • ***
  • 202
  • +6/-0
    • Просмотр профиля
Re:Многоуровневое меню
« Ответ #11 : 29 Марта 2012, 19:11:23 »
так он все равно всем присваивает class текущий.
class="active" выводит у всех.

*

HardHardy

  • **
  • 74
  • +1/-0
    • Просмотр профиля
    • Фортис
Re:Многоуровневое меню
« Ответ #12 : 31 Марта 2012, 08:19:36 »
"думаю придется обратиться к javascript. с его помощью определять активный пункт и задавать какой-нибудь дополнительный класс. уже к этому классу применить нужные стили" (с)

*

john

  • ***
  • 202
  • +6/-0
    • Просмотр профиля
Re:Многоуровневое меню
« Ответ #13 : 31 Марта 2012, 22:51:37 »
Ура, получилось, %pid% на %id%
<a href="%link%" class="%custom is_active_page(%id%)%">%name%</a>
Всем спасибо))

*

HardHardy

  • **
  • 74
  • +1/-0
    • Просмотр профиля
    • Фортис
Re:Многоуровневое меню
« Ответ #14 : 03 Апреля 2012, 13:34:31 »
А можете привести пример макроса с условиями если <li class=active> то родительский <ol class=active>?
Чтение документации по php пока результата мне не дало. Пытаюсь например так:
public function is_ol_active($id=NULL) {
if($li=='liactive') return 'olactive';
else return 'olnoactive';
Ну канешна выдает ошибки. И как он определит что <li> является дочерним родительского <ol> а не всех присутствующих <ol> в коде?
Как вообще теги php-коде указываются?