В последнее время довольно часто на форуме задают весьма похожие вопросы, посвященные публикации модулей: «как показать модуль только незарегистрированным пользователям», «как ограничить видимость модуля для конкретных IP-адресов» и т.д. В этой небольшой статье, я хочу показать способ решения этих задач с помощью шаблонов Joomla.
Основная идея предлагаемых решений, это объявление в шаблоне Joomla разных позиций модулей в зависимости от условий. Т.е. если некоторое условие выполняется, то мы отображаем в шаблоне одну позицию, а если нет, то другую. Примерно вот так:
Давайте рассмотрим несколько простых примеров.
Отображение модуля только на главной странице
Если вам необходимо отобразить некоторый модуль на сайте только на главной странице сайта, и не показывать на остальных (в том числе и дочерних) страницах, можно воспользоваться решением с использованием шаблонов Joomla. Вставляем в шаблон позицию модуля с проверкой текущего компонента:
Данная проверка отобразит позицию модулей user1 только в том случае, если в данный момент открыта главная страница сайта.
Ограничение отображения модуля по IP
Если вам необходимо отобразить некоторый модуль на сайте только для определенного IP-адреса или диапазона IP-адресов, можно воспользоваться решением с использованием шаблонов Joomla. Вставляем в шаблон позицию модуля с проверкой IP-адреса:
Данная проверка отобразит позицию модулей user1 только в том случае, если IP-адрес клиента равен 127.0.0.1. Для остальных посетителей данная позиция будет скрыта, а следовательно и модули, опубликованные в ней, будут невидимы.
Ограничение отображения модуля по типу пользователя
Допустим вам необходимо отображать 2 разных модуля: один для зарегистрированных пользователей, а другой — для незарегистрированных. Как известно, при публикации модуля, в качестве прав доступа можно выбрать Public, Registered и Special. Если мы опубликуем модуль с правами доступа Public, он будет отображаться и для зарегистрированных, и для незарегистрированных. Как же быть? И снова нам помощь приходят шаблоны. Добавляем в шаблон проверку типа пользователя:
id) { mosLoadModules ( 'user1' ); } else { mosLoadModules ( 'user2' ); } ?>
Если на сайт заходит не зарегистрированный или неавторизованный пользователь, то в шаблоне загрузятся модули, опубликованные в области user1, а если зарегистрированный — загрузится позиция user2.
Точно так же можно решить задачу отображения модуля для конкретной группы пользователей Joomla. При объявлении в шаблоне позиции модуля добавляем небольшую проверку:
usertype == 'Author') { mosLoadModules ( 'user1' ); } ?>
В приведенном выше примере, модули, опубликованные в позиции user1, будут видны только для пользователей группы Author.
Отображение модуля только в режиме просмотра полного текста материала
Если вам необходимо отобразить некоторый модуль на сайте только на странице просмотра полного текста материала, то необходимо вставить проверку значения переменной $task:
Данная проверка отобразит позицию модулей user1 только в том случае, если в данный момент открыт просмотр полного текста материала.