Меню аккордеон на CMS 2

#31 18 декабря 2014 в 18:56

поменять 2 на любое другое значение, то возвращается в исходное положение весь сайт. В чем проблема?

DrDooM
Идет процесс правильной реализации.
#32 18 декабря 2014 в 19:14

Идет процесс правильной реализации.

Геннадий Иванович
Ок, ждем :)
#33 18 декабря 2014 в 19:36
Реализация пользовательских классов и шаблонов в меню icms2
Создаем поле template type text и class type text, в таблице menu
Добавляем элемент массива который уже содержит все данные меню (все записи в таблице меню)-
$menu['template'] и содержащим значения (имя шаблона) поля template, и отправляем в рендеринг меню
  1.  
  2. $this->renderMenu($this->menus[$menu_name], $active_ids, $css_class, $max_items, $menu['template']);
  3.  
И немного изменяем функцию рендера, с учетом приема переменной шаблона меню $template
  1.  
  2. public function renderMenu($menu, $active_ids=array(), $css_class='menu', $max_items=0, $template){
  3. if($template){
  4. $tpl_file = $this->getTemplateFileName('assets/ui/'.$template);
  5. }else{
  6. $tpl_file = $this->getTemplateFileName('assets/ui/menu');
  7. }
  8. include($tpl_file);
  9.  
  10. }
  11.  
Если не указан шаблон, рендерим штатный шаблон menu.
Если указано значение поля templates (пример имя файла user_menu) то и рендерим это меню с шаблоном user_menu.tpl.php
Таким образом можно и для класса создать поле class и
обратиться к рендерингу со своим шаблоном и классом заменив поумолчанию $css_class='menu' на $menu['class'],
  1.  
  2. $this->renderMenu($this->menus[$menu_name], $active_ids, $menu['class'], $max_items, $menu['template']);
  3.  
Что выигрываем?
1-Своя реализация шаблона меню и возможность манипулирования элементами меню в зависимости не только от штатных прав, но и плюс прав и условий реализуемых разработчиком сторонних компонентов системы но не созданные жестко типами контента, а реализуемые как
отдельный компонент, возможно управляющий типами контента
2- Простая пользовательская реализация представления, не нарушающая строение и правила системы!
3- Развязанные руки .
Что проигрываем?
Два поля в таблице меню, и три строчки кода!.
#34 18 декабря 2014 в 19:45

Я же не ради спора, а для консультации. Править системные файлы плохо, по понятным причинам. Поэтому я и подсказываю как можно обойтись без них.

r2
Я уважаю ВАС R2.

Вот к чему может привести отсутствие оснований не доверять ВАМ!
Вчерашняя ночь — утро!
---------------------------------------------------------------------------------------------------------------------------------------
Безумно возмущенная ночь, тихо и медленно сворачивала свое черное покрывало.
Хотелось упереться руками в накатывающий рассвет и удержать на парочку минут внезапно накатившийся сон.
Среди плывущих в утреннем тумане обрывков PHP кода, мутный разум просыпаясь пытался лихорадочно уцепиться за осмысленное решение.
Нет не это… сейчас, сейчас вспомню… указать класс в виджете, кажется так?
Класс… использовать как селектор… нет? Что, что было?
За уходящей ночной тишиной ускользала и тоненькая ниточка, связывающая в единое целое остатки ночных размышлений.
С нарастающим уличным шумом, прорывая железный уличный асфальт, вырывалось построение новой и последней мысли- все зря, решения нет.
Проснувшись кот Бостон, медленно и лениво потянулся, и с чувством благодарного попрошайки начал тереться бочком по ногах.
За шестым проходом раздался оглушающий звук разряда статического электричества.....
Эврика!
Вот оно решение!
Ведь в поле класс, виджета меню, можно указывать пробел, такая запись в поле ввода
class_left_researh class_menu_personal будет красиво обрамлена двойными кавычками и выведена как значение класса
class="class_left_researh class_menu_personal" !
Вот, вот! А если закончить значения символом двойная кавычка " и через пробел написать id="selector_jQuery
Вот это то что нужно
На выходе получаем <div class="class_left_researh class_menu_personal" id="selector_jQuery ">
#35 18 декабря 2014 в 19:48
Не проверял еще. Но было шикарно красиво во сне кодировать!
#36 18 декабря 2014 в 19:49

А если закончить значения символом двойная кавычка " и через пробел написать id="selector_jqyery
Вот это то что нужно

Геннадий Иванович
Зачем вам именно id, я не могу понять?) Почему нельзя выбирать элемент просто по классу, без махинаций с кавычками?

отсутствие оснований не доверять ВАМ!

Геннадий Иванович
Большое спасибо.
#37 18 декабря 2014 в 20:02

Зачем вам именно id, я не могу понять?) Почему нельзя выбирать элемент просто по классу, без махинаций с кавычками?

r2
Имено потому что что это нужно не мне, а текущим и будущим разработчикам дополнений для Вашей замечательной системы.
НЕ нужно каждому обьяснять, да вы и не сможете охватить ответом весь потенциал правильных -неправильных-новых обновлений query использование js, и еще кучу нереализованных решений. Просто дайте возможность решать нам так свои расширения -компоненты-дополнения и прочее.
Разговор не именно о селекторе, а о возможности расширить рамки разработчикам.
Для системы это не вопрос, я описал уже выше, если есть еще согласные с данной мною темой иметь шаблон и класс для каждого меню свой поддержите пожалуйста,
Желание расширяет возможности.
#38 18 декабря 2014 в 20:10

Реализация пользовательских классов и шаблонов в меню icms2

Геннадий Иванович
Я ничего не понял, что куда добавляем, и откуда что берем :)) Простите за тупость :)
#39 18 декабря 2014 в 20:14

Я ничего не понял, что куда добавляем, и откуда что берем :)) Простите за тупость :)

DrDooM
Уважаемый DrDooM! Я лично уведомлю Вас когда будет выполнено правильно в рамках системы! Договорились.?
Пока идет рабочая дискуссия девелоперов и разработчиков в плане желания первых и возможности вторых!
#40 18 декабря 2014 в 20:16

Договорились.?

Геннадий Иванович
Как скажите :)
#41 18 декабря 2014 в 20:58


Реализация пользовательских классов и шаблонов в меню icms2

Геннадий Иванович
Спасибо, нужное дело!
Очень порадовало и:

Будет со временем.

r2
Надеюсь, не заржавеет…
#42 18 декабря 2014 в 22:15

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

DrDooM

Я ничего не понял, что куда добавляем, и откуда что берем :)) Простите за тупость :)

DrDooM
2 минуты поиска в гугле...
Скачивайте архив, распаковываете файлы в:
..\templates\default\css\accordion.css
..\templates\default\js\accordion.js

в ..\templates\default\controllers\users\widgets\avatar\avatar.tpl.php добавляем в начале строки:
  1. <?php $this->addCSS("templates/{$this->name}/css/accordion.css"); ?>
  2. <?php $this->addJS("templates/{$this->name}/js/accordion.js"); ?>
#43 18 декабря 2014 в 23:34
Val, Вы как всегда на высоте! Для меню действий работает.
А как сделать то же самое для любого другого меню, например главного?
#44 19 декабря 2014 в 09:45

А как сделать то же самое для любого другого меню, например главного?

Alexprofi
не совсем понял, а в главном меню пункты должны влево или вправо сдвигаться? оно же горизонтальное (для дефолта)...
а если в вертикальной компоновке то немного нужно исправить код js и css)))
#45 19 декабря 2014 в 10:10
Val, да, речь идет именно о вертикальной компоновке меню. Часто бывает нужно именно вертикальное меню, причем многоуровневое. А в ICMS такой вариант, к сожалению, не предусмотрен.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.