files templateВ последнее время довольно часто на форуме задают весьма похожие вопросы, посвященные публикации модулей: «как показать модуль только незарегистрированным пользователям», «как ограничить видимость модуля для конкретных IP-адресов» и т.д. В этой небольшой статье, я хочу показать способ решения этих задач с помощью шаблонов Joomla.

Основная идея предлагаемых решений, это объявление в шаблоне Joomla разных позиций модулей в зависимости от условий. Т.е. если некоторое условие выполняется, то мы отображаем в шаблоне одну позицию, а если нет, то другую. Примерно вот так: 

<?php
if (условие) {
mosLoadModules ( 'user1' );
} else {
mosLoadModules ( 'user2' );
}
?>

Давайте рассмотрим несколько простых примеров.

 

Отображение модуля только на главной странице

Если вам необходимо отобразить некоторый модуль на сайте только на главной странице сайта, и не показывать на остальных (в том числе и дочерних) страницах, можно воспользоваться решением с использованием шаблонов Joomla. Вставляем в шаблон позицию модуля с проверкой текущего компонента:


<?php
if (($option == '') || ($option == 'com_frontpage')) {
mosLoadModules ( 'user1' );
}
?>

Данная проверка отобразит позицию модулей user1 только в том случае, если в данный момент открыта главная страница сайта.

 

Ограничение отображения модуля по IP

Если вам необходимо отобразить некоторый модуль на сайте только для определенного IP-адреса или диапазона IP-адресов, можно воспользоваться решением с использованием шаблонов Joomla. Вставляем в шаблон позицию модуля с проверкой IP-адреса:

<?php
if ($_SERVER['REMOTE_ADDR'] == '127.0.0.1') {
mosLoadModules ( 'user1' );
}
?>

Данная проверка отобразит позицию модулей user1 только в том случае, если IP-адрес клиента равен 127.0.0.1. Для остальных посетителей данная позиция будет скрыта, а следовательно и модули, опубликованные в ней, будут невидимы.

 

Ограничение отображения модуля по типу пользователя

Допустим вам необходимо отображать 2 разных модуля: один для зарегистрированных пользователей, а другой — для незарегистрированных. Как известно, при публикации модуля, в качестве прав доступа можно выбрать Public, Registered и Special. Если мы опубликуем модуль с правами доступа Public, он будет отображаться и для зарегистрированных, и для незарегистрированных. Как же быть? И снова нам помощь приходят шаблоны. Добавляем в шаблон проверку типа пользователя:


<?php
if (!$my->id) {
mosLoadModules ( 'user1' );
} else {
mosLoadModules ( 'user2' );
}
?>

Если на сайт заходит не зарегистрированный или неавторизованный пользователь, то в шаблоне загрузятся модули, опубликованные в области user1, а если зарегистрированный — загрузится позиция user2.

Точно так же можно решить задачу отображения модуля для конкретной группы пользователей Joomla. При объявлении в шаблоне позиции модуля добавляем небольшую проверку:


<?php
if ($my->usertype == 'Author') {
mosLoadModules ( 'user1' );
}
?>

В приведенном выше примере, модули, опубликованные в позиции user1, будут видны только для пользователей группы Author.

 

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

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


<?php
if (($option == 'com_content') && ($task == 'view')) {
mosLoadModules ( 'user1' );
}
?>

Данная проверка отобразит позицию модулей user1 только в том случае, если в данный момент открыт просмотр полного текста материала.

__________________________________________________________________________________________________________________

скачать joomla | обновление joomla | модуль joomla | администрирование | seo продвижение | joomla магазиншаблоны сайтов

обратная связь 

При копировании материала ссылка на сайт joomla4.ru обязательна.