Вы не зашли.
menu_pro :: Менеджер меню
ВНИМАНИЕ!!!! Плагин выложен исключительно для тестирования.
Для корректной работы плагина необходимо использовать последнюю версию движка из SVN, а также произвести небольшей ХАК
Плагин позволяет Вам:
- Создавать собственные меню, любой сложности
- Оперативно управлять Вашими меню
- Настраивать индивидуальные стили для каждого элемента меню
- Настраивать отображение меню для разных груп пользователей
Особенности работы плагина:
- Пункты меню можно настраивать на вывод индивидуальных плагинов, а также ядра
- Многие поля поддерживают технологию suggest, так что достаточно просто начать вводить данные
- Плагин может использовать кеширование
- Для того, чтобы отобразить список меню используйте переменную {plugin_menu_pro_Название меню} в файле main.tpl
Инструкция по применению:
1. Скачать плагин с сайта
2. Извлечь содержимое архива в папку \engine\plugins\
3. Скачать ХАК
4. Извлечь содержимое архива в папку \engine\includes\
5. В разделе "Плагины" установить и включить плагин
6. В настройках плагина добавить нужные пункты меню
7. Включить и настроить меню
8. В шаблон main.tpl добавить переменную {plugin_menu_pro_Название меню}.
[0.01][2010-05-17]
+ Выпуск первой версии
Отчеты об ошибках приветствуются
Всегда ищу разработчиков в Киеве!
Ищешь работу программистом, пиши мне на ArnitUA@gmail.com
Не в сети
Без ГМО. o_O
Не в сети
Не в сети
Amarelius, что-то я потерялася ) а как для разных меню свои шаблоны сделать?, куда что прописывать и заливать, с учетом того, что файлы шаблонов находятся в templates/default/plugins/menu_pro/
И еще момент, а файл libsuggest.js стоит ли заменять или лучше оставить дефолтный движка?
Изменено Trashcka (2010-08-05 22:13:39)
Не в сети
Trashcka, Видать забыл добавить в описание, значит так
в папке templates/default/plugins/menu_pro/ можно создавать две папки skins и icons.
В папке skins создаешь папки для шаблонов меню (названия папок произвольные, одна папка -- один шаблон) и уже в этих папках хранятся файлы шаблонов container.tpl и item.tpl.
А в папке icons файлы иконок.
Файл libsuggest.js можно оставить дефолтный, а вот dbtree.class.ng.php должен быть добавлен обязательно, без него меню не работает
пысы: На днях возвращаюсь с отдыха, если что не так будет работать, подправлю.
Всегда ищу разработчиков в Киеве!
Ищешь работу программистом, пиши мне на ArnitUA@gmail.com
Не в сети
Trashcka, так ты же сама формируешь вид ссылки в шаблоне или я чего то не понял? Если тебе надо использовать это только для определенных ссылок, просто назначь им другой шаблон, в котором опиши rel="nofollow".
Всегда ищу разработчиков в Киеве!
Ищешь работу программистом, пиши мне на ArnitUA@gmail.com
Не в сети
В общем, чтобы это действительно было меню PRO - не хватает отработки переменной стиля активной категории {if_active} - Проверил - нет поддержки.
Amarelius, вот было бы здорово, если б это можно было реализовать.
А то получается, что плагин полезен только в смысле разделения доступа. Все остальное можно просто организовать в шаблоне вручную и без него.
Не в сети
Я понимаю, что прошло почти 11 лет и (похоже) никому, кроме автора, этот плагин не был никогда нужен, но я решил всё-таки поднять тему, т.к. сейчас пытаюсь допилить этот плагин под свои нужды и разбираюсь в его работе.
Буду отписываться по мере обнаружения того, что можно / нужно исправить и рассказывать об изменениях, если таковые смогу успешно реализовать.
И так, что нашёл в первый день - две ошибки / опечатки в коде.
Во-первых, в файле config.php в функции add() в одной из строк случайно вместо $par_node было вписано $parent_node (из-за чего не сохранялось изменение выбранного родительского уровня при редактировании пункта меню) - просто опечатка.
Во-вторых, в файле menu_pro.php в функции plugin_menu_pro_get_access был неправильно оформлен селектор case - в PHP (в отличие от других языков) нужно обязательно вставлять break после инструкции, выполненной по совпавшему case-значению, иначе будут выполнены инструкции всех case ниже по списку. Из-за отсутствия break в этой функции неправильно проверялись уровни/группы доступа пользователей (для отображения или скрытия разных пунктов меню).
И ещё пара моментов (не ошибки, просто была непонятна сначала задумка автора) - чтобы пункт отображался на странице, он должен быть active (Я сначала подумал, что 'active' - это про то, какой пункт меню выглядит 'активным' (как бы 'выбранным') изначально, хотя как раз лично мне это было бы совсем не нужно) - позже разобрался, догадался, посмотрев код.
Кроме того (самое неочевидное) - пункты первого уровня меню в настройке плагина являются не пунктами меню, а как бы названиями (заголовками) РАЗЛИЧНЫХ меню для сайта (коих может быть несколько), а уже их второй уровень будет списком "корневых" элементов отображаемого меню. Именно эти заголовки и используются для идентификации нужного Вам меню при вставке в шаблон (т.е. поле name именно этих заголовков нужно приписать к plugin_menu_pro_ , чтобы получить имя нужной TWIG-переменной).
Изменено Dip (2021-07-27 21:48:25)
Не в сети
Нашёл ещё одну ошибку в коде: в файле menu_pro.php в начале функции plugin_menu_pro_get_dir проверяется, есть ли там реально на диске файлы шаблонов - так вот в этой проверке дважды проверяется наличие container.tpl вместо того, что бы проверить наличие и container.tpl, и item.tpl (скопировали и забыли исправить имя файла во втором условии).
Не в сети
Нашёл ещё одну ошибку в коде: в файле menu_pro.php в функции plugin_menu_pro_get_nodes есть участок кода, где заполняются разные поля (или как их назвать ? "подстановочные переменные" ?), доступные из шаблона - среди других, там должно формироваться значение для {level} , но оно не формировалось (в нём была всегда пустая строка). Я стал разбираться и обнаружил, что для формирования этого значения автор вставил вот такую странную строку:
$pvars['vars']['level'] = $nodes[$cur_pos]['tree_level' - 1];
Возможно, я не знаю каких-то продвинутых нюансов PHP, но по-моему там имелось в виду это:
$pvars['vars']['level'] = $nodes[$cur_pos]['tree_level'] - 1;
Но я (в порядке перестраховки) написал даже так:
$pvars['vars']['level'] = intval($nodes[$cur_pos]['tree_level']) - 1;
После этого значение стало формироваться нормально.
Кстати, после этого исправления я обратил внимание, что при формировании пути к файлам-шаблонам пунктов меню (при обращениях к функции plugin_menu_pro_get_dir), та самая единица НЕ ВЫЧИТАЕТСЯ, и первый уровень отображаемого меню при обращении к той функции предсказуемо имеет значение "2". Возможно, автор даже специально не стал это исправлять, т.к., по сути, номер уровня там (в функции plugin_menu_pro_get_dir) нужен лишь для того, чтобы вовремя остановиться при "подъёме по дереву" пунктов меню в поисках существующего пути к шаблонам - не пытаться подниматься выше "корня", и там не так важно, считать ли "корневой" уровень (где хранится название меню) нулевым или первым - лишь бы стояло правильное значение в условии выхода из рекурсии (а там стоит сравнение с единицей). Поэтому, я НЕ называю это ошибкой, просто я бы сделал единообразно (чтобы не путаться).
И ещё - одной из первых своих модификаций я добавил возможность иметь каждому уровню меню свой собственный item.tpl на базе пронумерованных tpl-файлов в текущем skin. Т.е. я не трогаю реализованную автором возможность указывать разные skins хоть для каждого пункта меню, но добавляю некий автомат, который будет подхватывать item1.tpl, item2.tpl и т.д. из текущего skin для соответствующего уровня меню, если таковые (нумерованные) файлы там есть (в противном случае используется item.tpl как и у автора, т.е. у пользователя будет выбор). Потом отдельно напишу про каждое нововведение и выложу модифицированные файлы.
Изменено Dip (2021-07-28 21:13:53)
Не в сети
Ещё одно исправление (не совсем ошибка, но, думаю, надо исправить): везде, где формируется адрес ссылки для пункта меню (как в файле menu_pro.php, так и в "админке" config.php), есть условие, проверяющее поле адреса для этого пункта меню - если оно не заполнено (является пустой строкой), то почему-то сразу вставляется ссылка на плагин (посредством функции generatePluginLink), даже, если никакого имени плагина для этого пункта меню не вводилось - не хорошо.
Я добавил там везде вторую проверку (на пустоту имени плагина), и если имя плагина не было введено (а основное поле адреса для этого пункта меню пустое), то формируется ссылка, состоящая просто из одного слэша (по сути - на домен сайта, что обычно эквивалентно главной странице). Как вариант, можно было бы сделать, чтобы в таком случае подставлялась ссылка из заглавия меню или какая-нибудь заглушка '#', но лишь бы не таинственное '/plugin///', как возникало в исходном авторском варианте.
Изменено Dip (2021-08-01 05:21:02)
Не в сети
Ещё одно исправление (не совсем ошибка, но, думаю, надо исправить): везде, где формируется адрес ссылки для пункта меню (как в файле menu_pro.php, так и в "админке" config.php), есть условие, проверяющее поле адреса для этого пункта меню - если оно не заполнено (является пустой строкой), то почкму-то сразу вставляется ссылка на плагин (посредством функции generatePluginLink), даже, если никакого имени плагина для этого пункта меню не вводилось - не хорошо.
Я добавил там везде вторую проверку (на пустоту имени плагина), и если имя плагина не было введено (а основное поле адреса для этого пункта меню пустое), то формируется ссылка, состоящая просто из одного слэша (по сути - на домен сайта, что обычно эквивалентно главной странице). Как вариант, можно было бы сделать, чтобы в таком случае подставлялась ссылка из заглавия меню или какая-нибудь заглушка '#', но лишь бы не таинственное '/plugin///', как возникало в исходном авторском варианте.
Плагин был написан скорее всего на php до 5 версии, и для движка версии 0.9.1 или 0.9.2. это было давно, релиз 0.9.5, есть utf версия на гите, часть плагинов переписана на версию php > 7 и с поддержкой твига. Так что возмущаться на старьё не есть гут. Можешь перепиши , за это большое спасибо.
жизнь бьёт ключом......,ну иногда и гайкой.....
Хаки и Скрипты| Бесплатные шаблоны NGCMS
На Районе - Шахтинск Украшение Windows
Не в сети
Плагин был написан скорее всего на php до 5 версии, и для движка версии 0.9.1 или 0.9.2. это было давно, релиз 0.9.5, есть utf версия на гите, часть плагинов переписана на версию php > 7 и с поддержкой твига. Так что возмущаться на старьё не есть гут. Можешь перепиши , за это большое спасибо.
Хочу пояснить - я искал средство визуального редактирования структуры произвольного многоуровневого списка для сайта (как обычно оформляют меню) для NGCMS, но ЕДИНСТВЕННОЕ, что было создано для этого движка с такой функциональностью - этот старый плагин. Если бы было что-то новее - я бы взял новее. Честно говоря, для меня совершенно не понятно, почему все эти годы практически никому не было нужно добавить в админку визуальный редактор меню, ведь если сайт делается не для себя, то им будут пользоваться люди, не умеющие сами корректно (не сломав разметку) редактировать файл шаблона, когда им захочется добавить подпункт в меню.
То, о чём я написал до этого на этом форуме - не "возмущение" (я наоборот очень благодарен автору за хорошую заготовку), а просто мысли вслух для таких же, как я, кто найдёт этот плагин на этом сайте и захочет его применить. Я не профессиональный программист, поэтому я не настолько уверен в своих силах, чтобы просто написать "Работаю над новой исправленной версией, скоро выложу". Я действительно уже кое-что переделал и сейчас хочу изменить интерфейс настройки меню (тот, что в админке плагина) - сделать его "древовидным" (а не табличным), да ещё с кастомным контекстным меню на пунктах и т.п. Но для меня это - совсем не просто (хотя я и использую готовую библиотеку TreeView). Если всё получится и будет иметь "товарный вид" - с радостью тут поделюсь с другими. Но я пока что даже не очень понимаю, как правильно модифицировать инсталлятор плагина, чтобы всё автоматически устанавливалось и работало "из коробки" (документации же никакой по "плагино-строению" нет), поэтому не знаю, чем дело кончится ...
Что касается версий - у меня написано в админке "0.9.5 Release + GIT 20170301", а PHP на тестовом сервере вообще v5.6 (потом, кстати, и правда надо будет проверить, работает ли это всё на седьмой версии, но думаю должно работать).
Так или иначе - буду рассказывать о результатах своего творчества, т.к. уверен, что хоть один человек кроме меня да захочет реализовать подобную функциональность на своём сайте.
Изменено Dip (2021-08-01 02:02:40)
Не в сети
...
Я не профессиональный программист
...
Для начала заведите профиль на github. Выкладывайте туда свои «переделки». На гитхабе будет проще помочь вам.
Что касается версии PHP, то берите сразу 8.0.0 как минимум.
Не в сети
Ну вообще с появлением твига этот плагин не нужен, все решается на уровне шаблона, и управлении категориями , в шаблоне файл news.categories.tpl оформляем все в соответствии с шаблоном, создаем категории в админке и там отмечаем показывать категорию или нет. Плагин не нужен , все уже автоматизировано .
жизнь бьёт ключом......,ну иногда и гайкой.....
Хаки и Скрипты| Бесплатные шаблоны NGCMS
На Районе - Шахтинск Украшение Windows
Не в сети
Ну вообще с появлением твига этот плагин не нужен, все решается на уровне шаблона, и управлении категориями , в шаблоне файл news.categories.tpl оформляем все в соответствии с шаблоном, создаем категории в админке и там отмечаем показывать категорию или нет. Плагин не нужен , все уже автоматизировано.
Не очень понял, о чём Вы. Мне нужно было сделать обычное меню: "Главное", "О Компании", "Документы", "Информация", "Контакты". В некоторых пунктах по 3-4 подпункта... Никаких инструментов в админке для этого не было, меню было "нарисовано" руками в шаблоне на обычном HTML и корректировалось в текстовом редакторе руками. Вот я и делаю нормальный визуальный редактор пунктов меню для админки сайта.
Возможно, Вы описываете какой-то иной сценарий использования NGCMS - как новостной портал. Но у меня новостей фактически нет, а есть сайт организации с набором статических страниц ("статей" в терминологии NGCMS).
Не в сети