joomla модуль не отображается

Как отобразить модуль только на странице материала Joomla 3?

Сейчас у многих думаю промелькнуло 2 варианта. Первый это, конечно, создать пункт меню для этого материала и привязать к нему отображение. А если материалов тысяча? CMS малость припухнет от такого подхода. Второй вариант это воспользоваться каким-нибудь сторонним расширением типа Modules Anywhere. Это тоже не подходящий вариант для таких как я — не особых любителей сторонних расширений внутри своего ресурса. Поэтому я использую третий вариант — свой стиль модуля с условием его отображения.

В стандартной системе Joomla 3 у вас на выбор есть несколько стандартных стилей отображения модуля, обычно это что-то типа none, html5, table, horz, xhtml, rounded, outline которые описаны в файле /templates/system/html/modules.php и еще куча других, которые могут быть перезаписаны вашим шаблоном в файле /templates/ваш_шаблон/html/modules.php. Они задают скелет шаблона, в формате которого и выводится содержание какого-либо модуля. Но кто сказал, что нам нельзя в стиль отображения модуля включать какие-либо дополнительные условия его отображения? Допустим, чтобы модуль, которому присвоен стиль шаблона myxhtml, отображался только в случае, если посетитель сайта открыл страницу с полным содержанием статьи, а во всех остальных случаях модуль бы не срабатывал.

1. Получаем тип страницы в Joomla 3

Чтобы задать условие отображения модуля, нам надо сначала получить тип страницы, дабы узнать отображается на странице сейчас категория, список материалов на главной, либо как раз полное отображение материала. Если стили отображения модулей не заданы в вашем шаблоне, то скопируйте файл templates/system/html/modules.php в /templates/ваш_шаблон/html/modules.php. Скопируем, например, в нем стиль xhtml, и переименуем его в Myxhtml. После обозначения функции добавляем строчки:

При помощи родного класса JFactory мы получаем в переменную $task значение типа отображаемой страницы.

2. Задаем условие отображение модуля исходя из типа страницы Joomla 3

Создаете свой модуль, в дополнительных параметрах выбираете стиль Myxhtml, привязываете на отображение на всех страницах без исключения, включаете его. И начинаете листать страницы на сайте.

В зависимости от того, какую страницу вы открыли переменная $task будет принимать типовое значение и отображаться прямо в теле модуля. Допустим если вы увидите featured, значит вы на странице с избранными материалами, если category значит это шаблон категории, а вот если article — это то что нам нужно, макет отображения полного текста статьи. Далее собственно задаем условие отображения:

И он будет отображаться только на странице материала. Можно поиграться и понять, какие значения может принимать переменная $task, будь то html, search, login и другие, а как это использовать вы теперь уже знаете. Готовые примеры файла modules.php, которые я использую в шаблонах Ja_Elastica и Ja_Simpli доступны ниже:

Спасибо за внимание, успехов вам и вашим проектам!

У меня есть проблема, когда я пытаюсь загрузить пользовательские модули на мою страницу index.php, и они вообще не отображаются, когда я указываю модулю меню позицию пользовательского, которое отображается в меню.
(Использование Joomla: 3.6.5)

Я использую этот код в моем index.php для загрузки модуля

Я сделал позицию в templateDetails, чтобы не там, где проблема.

Решение

Надеюсь, что вы прошли через этот урок https://docs.joomla.org/J3.x:Creating_a_simple_module/Developing_a_Basic_Module перед созданием собственного модуля. Теперь, когда вы создали модуль, вам нужно отобразить его на главной странице. Для этого

  1. ваш модуль должен выводить некоторые данные
  2. Ваш модуль должен быть опубликован
  3. Должен быть назначен шаблон позиции
  4. В назначении меню должно быть выбрано либо все, либо несколько меню. Иначе он не будет отображаться, если для модуля назначено «Нет страниц».
  5. Проверьте правильность разрешений, чтобы пользователь мог их просматривать.

В данной статье мы рассмотрим полезную «фишку» для Joomla.

А именно, будем давать условия отображения модулю. То есть будем указывать, где отображаться, а где нет.

Начнем с того, что скачаем расширение Advanced Module Manager http://www.nonumber.nl/extensions/advancedmodulemanager

После устанавливаем его, идем в менеджер плагинов (Расширения — Менеджер плагинов), ищем «System — Advanced Module Manager», заходим и включаем его.

Теперь перейдем к настройки модуля.

Идем в Менеджер модулей и создаем модуль типа HTML.

Даем заголовок и публикуем созданный модуль.

Как видно на картинке, справа есть вкладка «Отображение модуля по условиям».

Там мы и сможем дать нужные условия отображения.

Условия из модуля

Можно взять настройки из уже настроенного модуля. То есть модуль будет иметь такие же настройки, как и указанный.

Зеркально

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

Режим сравнения условий

И — будет активно, если все условия ниже, соблюдены.

ИЛИ — будет активно, если одно либо несколько условий, перечисленных ниже, будут соблюдены.

У нас есть возможность настройки по таким условиям:

  • пункты меню;
  • главная страница;
  • категории;
  • материалы;
  • компоненты;
  • URL;
  • интернет-обозреватели;
  • дата и время;
  • уровни доступа;
  • языки;
  • шаблоны.

Так же есть три переключателя условий:

  • выбрать;
  • исключить выбранное;
  • игнорировать.

Выбрать

Активны только выбранные условия.

Исключить выбранное

Активация всех условий, кроме указанных.

Игнорировать

Игнорировать все условия (отключить все условия).

Давайте разберем настройки:

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

Просто отмечаем флажками меню, в котором хотим видеть модуль.

2. Категории, Материалы

Отмечаем флажками категории, в которых хотим видеть модуль.

Указываем IDматериалов или ключевые слова через запятую.

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

Отмечаем флажками компоненты, в которых хотим видеть модуль.

4. URL

Указываем URL’ы на которых хотим видеть модуль.

5. Браузеры

Указываем, в каком браузере отображать модуль.

(картинку не поставил, у меня почему-то эта функция не работает)

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

Назначаем время и дату публикации модуля.

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

Указываем группу пользователей, которым будет показываться модуль.

8. Языки

Указываем при каких языках активировать модуль.

9. Шаблоны

Отмечаем шаблоны для каких будет активирован модуль.

После всех настроек, сохраняем созданный модуль и смотрим результаты.

Часто из-за версии PHP ниже 5.2, компонент работает не корректно.

Оцените статью