Добавление своих страниц в панель управления CMS MODx
Хотя сейчас моя основная работа не связана с разработкой сайтов на PHP и уж тем более с MODx, иногда ко мне все же обращаются друзья с просьбой помочь им с их сайтом. Хочу рассказать о том, как создавать собственные административные страницы в набирающей популярность бесплатной CMS MODx. Это бывает очень полезно, когда необходимо добавить дополнительную функциональность админке или реализовать что-то совершенно новое.
Рассмотрим не полный, но конкретный пример для одного из последних сайтов, который я сделал своим друзьям группе Танго и Кэш. Под не полным я имею ввиду, что не буду показывать исходного кода самих страниц. А реализовывать мы будем счетчик скачиваний для музыки, видео и всего остального, что только захотим посчитать.
Сразу скажу что пример буду показывать на примере MODx 0.9.6.3, но аналогичные действия позволят Вам создать собственные страницы и на последней версии CMS.
Для начала создадим файл-экшн который будет отображаться при открытии страницы в админке. Для этого в директории manager/actions/ cоздадим свой файл с названием download.counter.php. В отличии от многих фреймворков здесь не имеет значения как будет называться файл, поэтому, при желании, можно сделать название любым. Поместим в этот файл следующий код:
1 2 3 4 | <?php if(IN_MANAGER_MODE!="true") die("<b>INCLUDE_ORDERING_ERROR</b><br /><br />Please use the MODx Content Manager instead of accessing this file directly."); $base = MODX_SITE_URL; ?> |
Это стандартное начало практически всех экшенов в MODx. После третьей строчки кода можно уже добавлять свой содержание, но об этом позже.
Теперь нам нужно добавить информарцию о новом экшене в меню, для этого необходимо в файле manager/index.php добавить свой case-обработчик и придумать нашей странице идентификатор. Выбирать идентификатор можно любой не занятый, но если Вы планируете в будущем обновлять свою версию MODx, то лучше заведомо взять очень большое число.
Пример кода manager/index.php
914 915 916 917 | case 666: //download counter include_once "actions/download.counter.php"; break; |
Как видите, я взял достаточно красивый и запоминающийся идентификатор для своего экшена 666
Следующий шаг наших действий – добавить название кнопки в словарь. В зависимости от того, на каком языке у Вас работает сайт и админка MODx, необходимо добавить новый элемент в массив $_lang. Я всегда использую вариант Russian-UTF8 и править буду соответсвующий файл manager/includes/lang/russian-UTF8.inc.php. Добавлю в него упоминание о моей кнопке:
1008 | $_lang['counter'] = 'Счетчик скачиваний'; |
Именно этот текст будет на кнопке в панели управления.
Теперь осталось только добавить саму кнопку на панель, делается это в файле manager/frames/menu.php. В зависимости от того, в какой раздел Вы хотите поместить кнопку, нужно будет добавить код в соответствующий участок кода. Я добавил кнопку в главный раздел «Сайт» в самый конец:
246 | $sitemenu[] = '<li><a onclick="this.blur();" href="index.php?a=666" target="main">'.$_lang['counter'].'</a></li>'; |
Вот и всё. Как видите, в атрибуте href мы задаем параметр ?a=666, где число и есть идентификатор экшена, который мы указали в файле manager/index.php. После обновления страницы в админке Вы увидите свою кнопку.
Таким способом можно создавать сколько угодно страниц и расширять бесконечно функциональность админки, все зависит от Ваших потребностей и навыков программирования.
Если есть у читателей интерес, я могу написать про то, как создавался счетчик скачиваний для сайта Танго и Кэш и как он работает.

