Новости Joomla на русском
Главная Новости Форум Статьи и обзоры Вопросы и Ответы
Joomla! по-русски
Вышла стабильная версия Joomla 2.5.1! Исправлено 32 ошибки (2 ошибки безопасности низкого уровня), увеличена скорость работы Joomla на Windows Azure, исправлены ошибки в функциях пакетной обработки и поиска. Библиотека MooTools обновлена до версии 1.4.3. Разработчики настоятельно рекомендуют обновиться до Joomla 2.5.1. Пакет русской локализации Joomla 2.5 уже доступен для загрузки.
 
Saturday, 04 February 2012 Главная arrow Вопросы и Ответы arrow Небольшие хитрости с позициями модулей
Вопросы и Ответы
Russian Joomla Translation Team
Безопасность
Популярные статьи

Advego.ru - наполнение сайтов информацией

Замечание

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Вопросы и ответы / Внешний вид

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

Joomla 2.5.1

Joomla 2.5.0 Joomla 2.5.1

Локализация Joomla 2.5

Пакет русской локализации Joomla 2.5.1

Joomla 1.7

Joomla 1.7.5

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

Joomla 1.7.4 Joomla 1.7.5

Локализация Joomla 1.7

Пакет русской локализации Joomla 1.7.5

Joomla 1.5

Joomla 1.5.25

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

Joomla 1.5.24 Joomla 1.5.25

Локализация Joomla 1.5

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

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

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

Joomla 1.7 FAQ
Joomla 1.5 FAQ
Joomla 1.0 FAQ


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

Joomla 1.7 Russian
Joomla 1.5 Russian