Условие по системному имени меню в двойке?

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО
#1 21 сентября 2015 в 13:50
Здравствуйте!
Собственно, вопрос в заголовке: как в menu.tpl.php выставить условие по системному имени меню?
Спасибо!
#2 21 сентября 2015 в 14:11
если($widget->options['menu'] == 'некое системное имя') { удаляем базу данных }
#3 21 сентября 2015 в 14:16
  1. $this->layout
В шаблоне меню получает его системное имя.

if($this->layout == 'main') { echo 'Ура, системное имя этого меню — main'; }
#4 21 сентября 2015 в 14:44
kreator, не совсем верно.
  1. $this->layout
вернёт скорее название файла шаблона, но никак не название меню. Прав был Pasha, где написал

{ удаляем базу данных }

Pasha
#5 21 сентября 2015 в 18:38
Извините, не усмотрел что файлы называются одинаково — и не указал точно. zst
По условию ($widget->options['menu'] == 'некое системное имя') база удаляется, но из файла:
templates\шаблон\widgets\menu\menu.tpl.php
а мне нужно из этого (надо дополнительный пункт внутрь одного из меню пихнуть):
templates\шаблон\assets\ui\menu.tpl.php
#6 21 сентября 2015 в 19:24

templates\шаблон\assets\ui\menu.tpl.php

Олег Васильевич я
В этот файл передаются только пункты выводимого меню. Без правки файла \system\core\template.php не обойтись.
Но есть такой вариант: в нужном вам файле доступен массив со всеми меню и всеми пунктами меню. Вызывается просто
  1. $this->menus
, может попробовать добавить пункт в него?
#7 21 сентября 2015 в 20:05
Ну если из админки добавить этот пункт по каким-то соображениям нельзя, значит нужно воспользоваться специально обученным методом addMenuItem(системное_имя_меню, параметры), то есть как-то так
  1.  
  2. $this->addMenuItem('header', array(
  3. 'title' => 'Название пункта',
  4. 'url' => '/',
  5. 'level' => 1,
  6. 'counter' => null,
  7. 'options' => array(
  8. 'class' => null,
  9. 'target' => '',
  10. 'onclick' => null,
  11. 'confirm' => null
  12. )
  13. ));
  14.  
#8 21 сентября 2015 в 22:05
Друзья, спасибо огромное!
Буду мучиться (боюсь, там ещё некий блок вставить нужно будет) cry
#9 22 сентября 2015 в 09:30
Не плачь Олег Васильевич, не можем достать нативными средствами, значит достанем в лоб…
  1. <?php
  2.  
  3. if(isset($menu[0]['menu_id'])){
  4. $menu_name = cmsCore::getInstance()->db->getField('menu', 'id='.$menu[0]['menu_id'], 'name');
  5. echo '<h1 style="color:red">'.$menu_name.' (id = '.$menu[0]['menu_id'].')</h1>';
  6. }
  7.  
  8. ?>
  9.  
  10. <ul class="<?php echo $css_class; ?>">
  11.  
  12. <?php if ($max_items){
  13.  
  14. //
  15. // Считаем количество пунктов первого уровня
  16. //
  17. $first_level_count = 0;
  18. $first_level_limit = 0;
  19. $index = 0;
  20. ...................................................
  21. ...................................................
  22. ...................................................
#10 22 сентября 2015 в 17:40


Не плачь Олег Васильевич, не можем достать нативными средствами, значит достанем в лоб…

Pasha
Pasha, спасибо огромное, база успешно удалена!
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.