Куда идем?

C момента выхода Joomla 1.6 прошло еще совсем немного времени, но я вижу все больше расширений, которые уже переведены или будут переведены в ближайшее время на новую версию этой CMS. Тем не менее, Joomla 1.5 никуда не денется и многие сайты даже сейчас делаются именно на ней. В этой статье я хочу рассказать про одно замечательное расширение для Joomla 1.5, которое позволяет очень гибко управлять модулями CMS.  Даже более гибко, чем Joomla 1.6.

Хотели ли вы когда-нибудь вывести модуль только на странице с определенной статьей или категорией? А может быть только для определенного компонента, например, VirtueMart? Или же представьте: модуль показывается только в определенный день недели, или даже в определенную минуту, или только для определенных пользователей сайта(не групп, а именно пользователей!). Этого мало? Нужен верх свободы?  Тогда выводите ваш модуль на любой странице сайта, выбранной по URL. Поначалу это кажется фантастикой, но для Joomla 1.5 создано расширение, позволяющее делать все это буквально за пару кликов.  И оно бесплатное. Интересно? Тогда читайте дальше…

Многие web-мастера, еще не имеющие большого опыта работы с Joomla и не знающие php, часто задают вопрос о том, как вывести модуль только при выполнении определенных условий, например, только на странице с определенным материалом. Также существует проблема, заключающаяся в том, что модуль можно привязать или ко всем страницам сайта или только к определенным пунктам меню. При этом существенным недостатком Joomla 1.5 является то, что отобразить модуль только в определенном компоненте – задача достаточно сложная(для новичка). Особенно остро это проявляется в работе с VirtueMart. Часто меня спрашивают: «Как можно вывести определенный модуль только для магазина VirtueMart и не выводить его для остальных страниц Joomla?». Простой привязкой VirtueMart к пункту меню и назначением модуля только на этот пункт не обойтись. Я объяснял на форуме с чем это связанно – кроме точки входа в магазин непосредственно из меню, на сайте могут быть и другие. Например, есть, скажем, модуль последних поступлений в магазин, и он должен отображаться на всех страница сайта, а есть модуль прокрутки товаров, он должен отображаться только на страницах магазина. Если человек зайдет в магазин через пункт меню, на который он(магазин) назначен, то все будет правильно. Модуль прокрутки появится. Если же человек перейдет на один из товаров магазина через модуль последних товаров, то модуль прокрутки не появится. Это связанно с тем, что человек попал в магазин, не активировав нужный пункт меню. Т.к. модуль прокрутки товаров будет связан именно с этим пунктом меню, то, естественно, он не появится. Если все вышеописанное кажется слишком сложным, то не думайте над этим. Если возникнет подобная задача, все станет понятно.

Для решения задач, подобных описанной выше, Joomla не предусматривает встроенных инструментов администрирования. Если знания php позволяют, то для небольших задач можно обойтись правкой кода шаблона, но если знаний нет, или подобных модулей довольно много, незаменимым может оказаться расширение Advanced Module Manager.

Advanced Module Manager я буду называть именно «расширение», а не компонент, модуль или плагин. Реально это компонент и плагин, но «расширение» подходит все же больше. Advanced Module Manager вносит изменения в админку сайта, а именно в менеджер модулей Joomla и все, что с ним связанно. Это расширение создано для того, чтобы помочь администратору сайта более гибко управлять модулями.

Начнем со ссылок на скачивание Advanced Module Manager. Вот ссылка на сайт разработчика, а вот на страницу в каталоге Joomla. Редкий случай, но советую зайти именно на сайт разработчика. Этот сайт, к слову говоря, мне очень нравится. Все максимально доступно и удобно. На страничке, которая откроется по ссылке, можно будет прочитать описание расширение, посмотреть скриншоты и примеры, а также скачать Advanced Module Manager и русификацию к нему. После установки Advanced Module Manager менеджер модулей будет выглядеть следующим образом:

Advanced Module Manager

 Здесь появились следующие функции:
  • возможность просмотра настроек любого модуля во всплывающем окне(функция сомнительная, но кому-то может понравиться);
  • возможность просмотра дополнительных примечаний по каждому модулю(это удобно, если модулей много);
  • дополнительные фильтры отображения модулей по уровню доступа к модулю и по связи модуля с пунктами меню.

Но это все мелочи. Самое интересное начинается когда мы заходим в настройки любого из модулей. Вот так теперь выглядит окно редактирования модуля:

Advanced Module Manager

В окне «Подробности» появилась опция «Скрыть пустой модуль» – используется для предотвращения вывода рамки модуля, который ничего не содержит. Кроме того немного изменилась форма выбора позиции модуля и добавилось поле описания, текст из которого будет показан во всплывающей подсказке к модулю(см. выше). В окне «Параметры» появилась вкладка «Отображение модуля по условиям». В ней-то и хранится самое интересное:

Advanced Module Manager

 

В самом верху вкладки мы видим две опции:

Условия из модуля – позволяет наследовать условия от другого модуля. Опция очень удобна, если одни и те же условия нужно задать большому количеству модулей. Чтобы по десять раз не устанавливать все точки в нужное место, достаточно просто выбрать здесь модуль, настройки которого будут применены к текущему модулю.

Режим сравнения условий – есть два режима «И» и «ИЛИ». В случае «И» модуль будет показан только тогда, когда выполняются все условия, указанные ниже. В случае «ИЛИ» модуль будет показан когда выполняется хотя бы одно из условий.

Дальше идут всевозможные условия отображения. Рассмотрим их ниже:

1. Пункты меню.

Advanced Module Manager

Практически то, что и было в стандартном менеджере, но с некоторыми добавлениями.

2. Материалы.

Advanced Module Manager

Здесь мы можем выбрать категории, разделы и отдельные материалы в которых будет/не будет показан модуль.

3. Компоненты.

Advanced Module Manager

Список компонентов, которые можно связывать с модулем. Набор компонентов не велик, но функциональность Advanced Module Manager позволяет сделать подобную фильтрацию и для других компонентов – была бы смекалка.

4. URL.

Advanced Module Manager

Список URL для которых модуль будет/не будет показан.

5. Интернет-обозреватели.

Advanced Module Manager

Список браузеров пользователей для которых модуль будет/не будет показан(Еще один способ  намекнуть владельцам IE6, что пора бы  обновить браузер).

6. Дата и время.

Advanced Module Manager

Здесь мы можем задать любые временные интервалы в которые модуль будет показан/скрыт.

7. Пользователи.

Advanced Module Manager

Здесь мы можем определить пользователей/группы пользователей, которые будут/не будут иметь доступ к модулю.

8. Языки.

Advanced Module Manager

 Здесь мы можем определить языки, при которых модуль будет показан/скрыт.

9. Шаблоны.

Advanced Module Manager

Здесь задаются шаблоны, при которых модуль будет показан/скрыт.

10. PHP.

Advanced Module Manager

 Для тех, чьи требования не смогли удовлетворить условия, описанные выше, создано условие свободного php-кода. Здесь уже можно вообще насочинять что угодно – были бы знания.

Кроме всего вышеописанного Advanced Module Manager имеет настройки. Их можно сразу не заметить, т.к. находятся они в панели инструментов менеджера модулей:

Advanced Module Manager

Все настройки простые и не требуют дополнительного описания.

Вот и все. Надеюсь, Advanced Module Manager позволит вам реализовать некоторые задумки, о которых раньше можно было только мечтать.

Об авторе
Wedal
(Виталий). Веб-разработчик полного цикла (Full Stack). Создатель и автор сайта Wedal.ru.
Основной профиль – создание сайтов и расширений на CMS Joomla.
Добавить комментарий

Комментарии  
1
Привет, вставляю такую

http:///index.php?page=shop.browse&category_id
линку в URL поле, но это условие не отрабатывается, отображать модуль по соотвтсвующей линке. Если даже оно одно на весь модуль. В чем может быть причина?
1
Dtokar, если подразумевается, что в ссылке еще есть и адрес домена, но вы его просто не указали, то все должно работать. Проверял лично. Возможно вы не опубликовали модуль или опубликовали не в той позиции? Или же используете SEF.
1
Угу имя домена есть,сайт не дал вставить его в коммент

Сеф не использую, в модуле заношу линк в поле не для Сеф ссылок,там их два для сей и нет

Модуль канечно опубликован

Я хочу выводить модуль для категорий магазина,но убирать его когда открыта страница товара

Если выбираю компонент Виртуемарт все работает, а вот когда заношу линк, страницы категории, и убираю Компонент Виртуемарт, то модуль не отображается для категории :sad:
1
Пробовал вбить ссылку страницы компонента, работающего в режиме совместимости и модуль так же не отображается :(
1
сегодня поставил эту приблуду, сразу столкнулся с Вашей проблемой (не работают генерируемые ссылки, а чпу я пока не настраивал)решение нашёл на форуме производителя модуля
оказывается модуль жрёт ссылки только в виде Regular Expressions т.е. без всяких там знаков ? и тп символов http://www.nonumber.nl/component/kunena/4-advanced-module-manager/14242-url-assignement немного поигравшись пришёл к выводу что можно вводить не полностью адрес а только уникальное условие в нем например ссылка на продукт http://блабла.od.ua/index.php?page=shop.product_details&flypage=flypage.tp-ecommerce.tpl&product_id=6&category_id=1&option=com_virtuemart&Itemid=53 цепляется если просто написать в окне ссылок product_id=6 , тогда на всех ссылках с упоминанием этого товара будет выводится модуль, если вставить page=shop.product_details&flypage=flypage.tp-ecommerce.tpl&product_id=6&category_id=1&option=com_virtuemart&Itemid=53 то только на данной странице тк включились доп условия.
1

Цитирую Алексей:

сегодня поставил эту приблуду, сразу столкнулся с Вашей проблемой (не работают генерируемые ссылки, а чпу я пока не настраивал)решение нашёл на форуме производителя модуля
оказывается модуль жрёт ссылки только в виде Regular Expressions т.е. без всяких там знаков ? и тп символов http://www.nonumber.nl/component/kunena/4-advanced-module-manager/14242-url-assignement немного поигравшись пришёл к выводу что можно вводить не полностью адрес а только уникальное условие в нем например ссылка на продукт http://блабла.od.ua/index.php?page=shop.product_details&flypage=flypage.tp-ecommerce.tpl&product_id=6&category_id=1&option=com_virtuemart&Itemid=53 цепляется если просто написать в окне ссылок product_id=6 , тогда на всех ссылках с упоминанием этого товара будет выводится модуль, если вставить page=shop.product_details&flypage=flypage.tp-ecommerce.tpl&product_id=6&category_id=1&option=com_virtuemart&Itemid=53 то только на данной странице тк включились доп условия.




Еслы про то, что модуль не работает с урлами, то я нашел решение, перед всеми спец знаками (точки слеши тире) в используемом урл надо поставить \ (слэш) и тогда регулярные выражения раздуплят ваш урл на ура
1
5. Интернет-обозреватели. - не пойму где Вы взяли этот пункт? Ни на оф.сайте ни в установленном расширении такого пункта нет.
1
mitayka, скачайте последнюю версию с оф. сайта.
1
А можно узнать чего из этого расширения не хватает в версии 1.6 под которую его еще нет (вы сказали оно позволяет управлять модулями даже более гибко чем в 1.6)?
1
ds, нет, я имел ввиду, что это расширение в Joomla 1.5. позволяет управлять модулями более гибко, чем стандартный функционал Joomla 1.6.
1
:) ну да-да так и я попытался выразится (видимо неудачно), вобщем чего в стандартном функционале 1.6 нет того, что есть в расширении под 1.5?
1
ds, в Joomla 1.6 нет возможности отображения модуля в зависимости от URL, даты и времени, интернет-обозревателя, и.т.д. Попробуйте установить Joomla 1.6 и Joomla 1.5 с этим расширением и сравнить.
2
Спасибо, большое, огромное, благодарю, Вы лучший. Нужно было выводить модуль html карты только с нужными товарами Virtuemart a. После недели поисков, 100 вариантами формулировки запроса для гугля, смог придумать только кривой вариант с созданием материала для каждого товара куда всовывать карту и флайпейж товара, но инженерная лень гнала дальше в поиск, думал реализовывать через фреймы и ВОТ слава великому Господу, Гуглу и Вам наткнулся на 100% попадание, СПАСИБО. С меня "ПИВО" или рекламный ролик. Будете в Одессе пишите на мыло...
1
Расширение может работать только на MySQL5+?
3
Огромное спасибо за то что сделали такой обзор, без вас бы не нашел то что так давно искал. Как нибудь оптимизировали страницу бы в гугле и яше, чтоб легче людям найти вас было. А, то информация востребованная.
0
В окне «Подробности» появилась опция «Скрыть пустой модуль»
--
ой, нашел. Но почему-то не скрывается на сайте (((
p.s. стоит Advanced Module Manager v3.1.2 [PRO]
Да и вообще темный лес пока...

выбираю Условия из модуля НЕТ, то отображается везде блин. Ставлю ДА (Условия из модуля) отображается опять везде..не прикольно ((
0
в общем поставил Free версию последнюю, так это другое дело! А то ведь прошлая выдала ВСЕ модули повключала..
0

Цитирую Vetal:

В окне «Подробности» появилась опция «Скрыть пустой модуль»
выбираю Условия из модуля НЕТ, то отображается везде блин. Ставлю ДА (Условия из модуля) отображается опять везде..не прикольно ((


Нашел решение.
При использовании шаблона YOOtheme (Warp файерворк) данная фкнкция не работает.

В файле /[template_name]/layouts/module.php
Найти
// render module
echo $this->render("modules/templates/{$template}", compact('style', 'badge', 'showtitle', 'title', 'content', 'dropdownwidth'));

И вставить следующий текст между двумя линиями

if (!empty($content)) /* custom code for advanced media manager */

Получится так
// render module
if (!empty($content)) /* custom for advanced media manager */
echo $this->render("modules/templates/{$template}", compact('style', 'badge', 'showtitle', 'title', 'content', 'dropdownwidth'));
0
Доброго времени суток.
Есть ли возможность настроить АММ на отображение категорий Виртуемарта.
Джумла 1.5 Вирт 1.1.9
Спасибо