Новости Joomla на русском
Главная Новости Форум Статьи и обзоры Вопросы и Ответы
Joomla! по-русски

Доступен к загрузке релиз безопасности Joomla 1.5.20 [senu takaa]. Данная версия не содержит никаких исправлений, и выпущена лишь потому, что в пакетах обновления до версии 1.5.19 были допущены ошибки (не все файлы были включены). Эти проблемы не касаются полного дистрибутива Joomla 1.5.19, однако разработчики Joomla рекомендуют незамедлительно установить обновление до Joomla 1.5.20 взамен предыдущих версий.

 
воскресенье, 01 августа 2010 Главная arrow Вопросы и Ответы arrow Небольшие хитрости с позициями модулей
Вопросы и Ответы
Russian Joomla Translation Team
Безопасность
Популярные статьи

Замечание

Joomla!™ является торговой маркой компании Open Source Matters inc в США и др. странах. Название Joomla! и его вариации, такие как J, Joom и т.д., используются в рамках ограниченной лицензии, определённой компанией Open Source Matters. Проект Joomlaportal не относится к компании Open Source Matters или проекту Joomla! Точки зрения представленные на данном сайте не являются официальными точками зрения Joomla Project или Open Source Matters.

Торговая марка Joomla® и логотип используются в рамках ограниченной лицензии, предоставленной Open Source Matters.

Небольшие хитрости с позициями модулей

11.04.2006 | smart | Забобрить эту страницу! | del.icio.us
Вопросы и ответы / Внешний вид

В последнее время довольно часто на форуме задают весьма похожие вопросы, посвященные публикации модулей: «как показать модуль только незарегистрированным пользователям», «как ограничить видимость модуля для конкретных 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!™ CMS

Joomla 1.5

Joomla 1.5.20 Что нового в Joomla CMS 1.5.20

Joomla 1.5.20 Russian
(русифицированная версия)


Joomla 1.5.17 Joomla 1.5.20
Joomla 1.5.18 Joomla 1.5.20
Joomla 1.5.19 Joomla 1.5.20

Локализации

Русский язык для лицевой панели (site)
Русский язык для административной панели (admin)


Joomla 1.0

(устаревшая версия)

Joomla 1.0.15 Что нового в Joomla CMS 1.0.15

Joomla 1.0.13 Joomla 1.0.15
Joomla 1.0.14 Joomla 1.0.15
все обновления...

Как обновить Joomla 1.0
до версии Joomla 1.5?

Языковые файлы

Русский
Украинский
Белорусский

Документация

Joomla 1.5 FAQ
Joomla 1.0 FAQ
Руководство пользователя Joomla 1.0.11


Русская версия Joomla

Joomla 1.5.17 Russian
Joomla 1.0.15 LE 2008

Демо версия

Joomla! 1.5.17 (FrontEnd)
Joomla! 1.5.17 (BackEnd)
(Demo/Demo)