Скрытие модулей
В Joomla, если требуется скрыть или показать модуль на определённых страницах (связанных с пунктами меню) используется инструмент модуля "Привязка к пунктам меню". Для получения дополнительной информации смотрите документацию Joomla: Extensions Module Manager Edit.
Но иногда этого инструмента бывает недостаточно, поэтому в JoomlaKassa, в некоторых модулях добавлена дополнительная функция "Скрыть на страницах", позволяющая выбрать страницы компонента JoomlaKassa, где вы хотите скрыть используемый модуль.
Ниже описан случай, когда скрытие модуля может вызывать не корректное отображение экрана, где модуль был скрыт. Для примера взят модуль "JKLatest (JoomlaKassa - Новые продукты)", который расположен в позиции position-7 (слева).
После того как вы скроете модуль при помощи параметра "Скрыть на страницах", например на странице продукта (product) и модуль в этой позиции расположен только один, это может не скрыть всю левую колонку, вместо него появиться пустое место.
Эта ситуация возникла потому, что большинство шаблонов Joomla для вычисления макета отображения позиций модулей и основного контента используют функцию Joomla: $this->countModules('position-7')
. Эта функция определяет количество опубликованных модулей в указанной позиции, а в используемом модуле просто скрыто его содержимое, фактически он по-прежнему существует.
Ниже приведено решение для устранения этой проблемы (требуется минимальное знание PHP языка).
В вашем шаблоне Joomla (в основном это файл index.php
) добавьте следующий код:
$jk_latest = JModuleHelper::getModule('jk_latest'); $hide_jk_latest = FALSE; if ($jk_latest) { $jk_latest_params = json_decode($jk_latest->params); if (isset($jk_latest_params->hide_on_pages)) { $app = JFactory::getApplication(); $option = $app->input->get('option', null); // имя компонента $view = $app->input->get('view', null); // текущий view // Скрыть модуль jk_latest на странице if ($option == 'com_joomlakassa' && in_array($view, $jk_latest_params->hide_on_pages)) { $hide_jk_latest = TRUE; } } }
Далее в коде вашего шаблона вы можете использовать переменную $hide_jk_latest
, которая имеет значение TRUE
– скрывать модуль на выбранных страницах или значение FALSE
– не скрывать модуль, в зависимости от результатов вычисления.
Ниже приведён пример для регулировки ширины контента шаблона Joomla установленного по умолчанию "Protostar":
// Adjusting content width if ($this->countModules('position-7') && $this->countModules('position-8') && !$hide_jk_latest) { $span = "span6"; } elseif ($this->countModules('position-7') && !$this->countModules('position-8') && !$hide_jk_latest) { $span = "span9"; } elseif (!$this->countModules('position-7') && $this->countModules('position-8') && $hide_jk_latest) { $span = "span9"; } else { $span = "span12"; }
Таким образом, вы можете полностью скрыть позицию position-7, если в ней нет опубликованных модулей и скрыт используемый модуль JoomlaKassa.