Joomla 2.5: Убираем хлебные крошки с выбранных страницОпубликовано: 27.08.2013 16:45 Автор: Ogri Просмотров: 22216
Хлебные крошки (breadcrumbs), известные также как навигатор сайта, - полезный модуль Joomla. И, как всякий модуль, они могут привязываться ко всем или только определенным пунктам меню. Также можно отвязать их от всех или конкретных пунктов. Многие джумловоды желают скрыть навигатор на главной странице сайта, поскольку на ней он содержит только пункт "Главная" | "Home", к тому же без линка, не неся таким образом ни смысловой, ни функциональной нагрузки. Возможно, структура сайта предусматривает и другие страницы, на которых по тем или иным причинам есть смысл скрывать навигатор. Самым типичным примером является кастомная страница ошибки 404, которая, как я отмечаю в соответствующей статье, посвященной правилам ее создания и настройки, должна быть вписана в шаблон сайта, но при этом стоять как бы особняком. Навигатор на ней не только не нужен, но еще и идеологически вреден. Будем рассматривать именно эту страницу как частный случай, описывающий общий принцип отвязки хлебных крошек от определенного материала.
Стандартный метод через привязку модуля здесь не подходит, поскольку, как описано в упомянутой статье, пункт меню для страницы ошибки не создается. В принципе, таковой пункт создать все-таки можно (не привязывая к нему страницу, а чисто для привязки модулей - вот как раз навигатора в нашем случае). Тогда навигатор можно скрыть для этой страницы, выбрав пункт На всех страницах, кроме указанных | On all pages except those selected в списке Привязка модуля | Module Assignment на странице редактирования параметров модуля в админке сайта. Такой способ в данном случае вполне работает, при добавлении новых пунктов в разные меню breadcrumbs будут привязываться к ним автоматически, так что делать это каждый раз вручную не понадобится (в отличие от варианта Только на указанных страницах | Only on the pages selected, тут придется ручками добавлять каждый созданный пункт меню в модуль). Однако минус его - необходимость создания меню для материалов, когда другой нужды в них не наблюдается. Все эти меню добавляются как дополнительные табы в разделы Выбор меню | Menu Selection всех модулей и загромождают интерфейс. Особенно это проявляется в случае мультиязычности, когда приходится создавать меню для каждого языка отдельно, и, соответственно, количество табов в интерфейсах редактирования модулей возрастает пропорционально количеству языков.
Учитывая вышеприведенные доводы, предпочитаю альтернативное решение. Правда, оно потребует некоторых навыков чтения и редактирования PHP-кода. Однако, если точно следовать инструкции - то самых что ни на есть минимальных.
А начнем мы, как всегда, с поиска файла и места в его коде, куда будут вноситься изменения. Модуль хлебных крошек имеет отдельную позицию, которая задается в файле index.php
активного шаблона. Находится он в папке templates\[my_template]
, и вместо [my_template]
каждый подставляет папку своего шаблона. Откроем файл на редактирование и найдем вхождение модуля навигатора в его коде. Тут возможны варианты. Например, в поставляемых с Джумлой шаблонах Beez2 и Beez5 искомый кусок кода выглядит так:
<div id="breadcrumbs"> <jdoc:include type="modules" name="position-2" /> </div>
В моем кастомном шаблоне, структура которого была построена в Artisteer, навигатор выводится специальной функцией artxPost, вызов которой в index.php
выглядит так:
if ($view->containsModules('breadcrumb') echo artxPost($view->position('breadcrumb'));
В других шаблонах код хлебных крошек может быть другим, но общий принцип таков: найти нужное место в коде можно, поискав либо по слову "breadcrumb", либо, если в вашем шаблоне модуль стоит в позиции с менее интуитивно подходящим именем - то по этому имени. Выяснить позицию модуля легко на странице его редактирования в админке. Также может прояснить картину с модулями предпросмотр позиций в менеджере шаблонов (если включить предварительно опцию Просмотр позиций модулей | Preview Module Positions в его настройках).
Теперь определим код, позволяющий скрыть вывод модуля в зависимости от наших условий. Если просто требуется убрать его с главной страницы, критерий будет таким:
JRequest::getVar('view') != 'frontpage'
Применив его для первого примера (Beez2 или Beez5), изменим приведенную часть кода на следующую:
<div id="breadcrumbs"> <?php if (JRequest::getVar('view') != 'frontpage') { ?> <jdoc:include type="modules" name="position-2" /> <?php } ?> </div>
Во втором примере (шаблон, построенный в Artisteer) измененный код будет иметь такой вид:
if ($view->containsModules('breadcrumb') && JRequest::getVar('view') != 'frontpage') echo artxPost($view->position('breadcrumb'));
Вернемся теперь к ситуации, когда требуется убрать модуль навигатора со страниц, выводящих конкретные материалы. Рассмотрим случай мультиязычного сайта (а именно - двуязычного, каковым является мой на момент написания этих строк) и ликвидируем хлебные крошки с обеих страниц 404 - русской и английской. Начнем с того, что узнаем ID соответствующих материалов. Это легко сделать, найдя их в списке материалов в админке сайта. В моем случае идентификатор русской страницы - 80, английской же - 448. В следующих фрагментах кода, призванных, как и в предыдущем случае, заменить существующие, подставьте вместо них свои значения (подробнее об этой конструкции - в статье, описывающей методику избирательного вывода социальных кнопок).
<div id="breadcrumbs"> <?php $article_id = explode(':', JRequest::getVar('id')); if (!(JRequest::getVar('view') == 'article' && ($article_id[0] == '80' || $article_id[0] == '448'))) { ?> <jdoc:include type="modules" name="position-2" /> <?php } ?> </div>
if ($view->containsModules('breadcrumb') && !(JRequest::getVar('view') == 'article' && ($article_id[0] == '80' || $article_id[0] == '448'))) { echo artxPost($view->position('breadcrumb'));
По этой методике можно скрыть хлебные крошки и с других страниц, просто добавив их ID в условие. Можно также перевернуть логику и спрятать навигатор на всех статьях, кроме перечисленных (подробнее - там же). И наконец - она позволяет манипулировать и прочими модулями, для которых выделены отдельные позиции в основном шаблоне сайта.
Новые
-
20.07.2020 00:53
Joomla 3: Перенаправление на ту же страницу после авторизации -
13.02.2017 14:09
Joomla: как добавить свои языковые константы или переопределить существующие -
13.02.2017 13:23
Joomla: Интегрируем reCAPTCHA v2 (NO CAPTCHA) в JComments -
23.06.2016 10:48
Единая фильтрация вывода модуля mod_jcomments_latest -
13.09.2015 13:06
Постим иллюстрированные статьи Joomla-сайта на Facebook, используя OG-теги
Популярные
-
60477
Редактирование анимированных GIF-имиджей в Photoshop CS3 -
43309
Joomla: Интегрируем reCAPTCHA v2 (NO CAPTCHA) в JComments -
42785
Миграция с Joomla 1.5 на Joomla 2.5. Ч.2-1. Перенос jDownloads и jComments -
32966
Единая фильтрация вывода модуля mod_jcomments_latest -
30725
Joomla: как добавить свои языковые константы или переопределить существующие
Авторизация
Гитара
Гостевая колонка
Последние комментарии
-
Joomla: Интегрируем reCAPTCHA v2 (NO CAPTCHA) в JComments
-
Byron 26.01.2023 19:30
%% Feel free to surf to my page ... quartz bangers (Byron ...
-
asbestos 26.01.2023 19:12
%% Visit my site :: asbestos ...
-
-
Joomla: Сливаем два сайта в один при помощи компонента J2XML
-
Donny 26.01.2023 19:29
%% Here is my web page; asbestos legal - Donny ...
-
-
Joomla: как добавить свои языковые константы или переопределить существующие
-
en.forbeaut.co.Kr 26.01.2023 19:14
%% Here is my web-site ... asbestos attorney (en.forbeaut.co.Kr ...
-
-
Миграция с Joomla 1.5 на Joomla 2.5. Ч.2-1. Перенос jDownloads и jComments
-
labomet-ndt.ru 26.01.2023 19:13
%% my site ... mesothelioma compensation - labomet-ndt.ru ...
-
-
Структура внутренних ссылок сайта на Joomla
-
Accident Claims 26.01.2023 19:29
%% My blog ... Accident Claims: http://ttlink.com/lixrowena/all
-
dgjoy.co.kr 26.01.2023 19:21
%% My page medical malpractice lawyers (dgjoy.co.kr ...
-
kakaopluss.kr 26.01.2023 19:15
%% Feel free to surf to my homepage - bongs (kakaopluss.kr ...
-
-
Цифровые коды WEB (веб) цветов для сайта
-
Phil 26.01.2023 19:30
%% Feel free to surf to my page ... malpractice case; Phil ...
-
1191004.Com 26.01.2023 19:16
%% Feel free to visit my webpage: birth injury attorney (1191004.Com ...
-
Комментарии
This subject made available from you is very favourable for appropriate organizing.