Joomla 2
Хлібні крихти (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 шуканий шматок коду виглядає так:
У моєму кастомними шаблоні, структура якого була побудована в Artisteer, навігатор виводиться спеціальний пристрій artxPost. виклик якої в index.php виглядає так:
Тепер визначимо код, що дозволяє приховати висновок модуля в залежності від наших умов. Якщо просто потрібно прибрати його з головної сторінки, критерій буде таким:
Застосувавши його для першого прикладу (Beez2 або Beez5), змінимо наведену частина коду на наступну:
У другому прикладі (шаблон, побудований в Artisteer) змінений код буде мати такий вигляд:
Ну весь index.php обрив вздовж і впоперек! Немає у мене нічого схожого на:
if ($ view-> containsModules ( 'breadcrumb')
JRequest :: getVar ( 'view')! = 'Frontpage')
echo artxPost ($ view-> position ( 'breadcrumb'));
І breadcrumb в ньому ніде не згадується (шаблон Артістер)!
Я сто років тому робив шаблон в Артістере, та й статті три з половиною роки. Киньте ваш index.php на мило (ogriogri.me), гляну.