В предыдущей статье я описал процесс переноса информационного наполнения сайта-источника на сайт-приемник и интегрирования его в виде отдельного раздела в структуру сайта-приемника. Компонент J2XML справился с этой задачей хорошо. Поставить ему оценку "отлично" не позволил тот факт, что, как отмечалось в конце статьи, его функционал не включает перенос и интеграцию структуры меню. Впрочем, воспроизвести ее на сайте-приемнике вручную не заняло много времени. А вот когда я начал привязывать пункты к соответствующим элементам контента, то столкнулся с некоей проблемой. Именно в процессе ее решения я впервые в своей практике познакомился с опцией, вынесенной в заголовок данной статьи.

Опишу задачу. На сайте-источнике было несколько меню. На сайте-приемнике нужно поместить их в том же виде - отдельными модулями, но, поскольку новый контент должен по задумке стать отдельным разделом, в URL и хлебных крошках все подразделы должны содержать название и алиас раздела. Меню же, соответствующие подразделам, при этом должны быть первого уровня. Однако, если выполняется второе условие, то не выполняется первое. Вот тут и помогла опция выбора типа пункта меню как псевдонима другого пункта.

Логика возникновения проблемы станет ясной, когда я проиллюстрирую ее конкретным примером. Для пущей наглядности заменю узкую тематику моего сайта-источника более популярной, а именно - автомобилями. Надеюсь, читатели, относящиеся к прекрасному полу, простят меня за тему, более типичную для интересов пола сильного )).

Итак, предположим, что сайт на автомобильную тематику присоединяется к сайту на любую общую в качестве раздела "Автомобили". После импорта через J2XML к структуре категорий добавилась новая структура следующего вида:

menu-aliases-01-categories

Здесь введена корневая категория, соответствующая новому разделу - "Автомобили". В ней имеются 2 категории первого уровня вложенности - "О проекте" и "Новости проекта". Они по задумке должны соответствовать отдельному меню "Автомобили", содержащему общие сведения о разделе-проекте.

Еще 3 категории того же уровня - Honda, Audi и Ford - содержат подкатегории. Эти три категории должны сформировать еще одно меню, на этот раз двухуровневое - "Каталог авто". Выглядеть это должно примерно так:

menu-aliases-02-menu-view

Для начала, создадим оба меню с привязкой пунктов так, как это было на автомобильном сайте-источнике. Первое меню:

menu-aliases-03-menu1

Второе меню:

menu-aliases-04-menu2

Добавим для каждого из меню модули и опубликуем их в позиции по желанию (в моем случае - левый столбец). Меню отобразились именно так, как и планировалось. Однако линки, соответствующие пунктам и подпунктам, хоть и открывают правильные страницы, не соответствуют задуманной концепции. Рассмотрим, к примеру, первый пункт "О проекте" первого меню "Автомобили". Ссылка этого пункта имеет вид

http:/ogri.me/ru/o-proekte

.., в то время как по задумке URL должен включать алиас всего раздела:

http://ogri.me/ru/avtomobili/o-proekte

Хлебные крошки, соответственно, также не содержат промежуточного пункта раздела.

Попробуем создать вместо двух меню одно со структурой, точно соответствующей структуре категорий, и назовем его "Автомобили-ALL". Вот оно:

menu-aliases-05-menu-all

Создав и опубликовав модуль для этого меню, увидим на сайте следующую картину:

menu-aliases-06-menu-view-2

С линками и навигатором теперь все как задумывалось, с самим же меню - отнюдь. Все в одной куче, корневой пункт дублирует заголовок раздела, ну и пропал "Каталог авто". Не к тому мы стремились. Надо что-то изобретать.

Можно вспомнить, что в модуле меню есть опция "Начальный уровень". Попробуем сдвинуть начальный уровень объединенного меню на один вглубь. Изменим значение параметра с 1 на 2. Сохраним.

menu-aliases-07-module

Вернувшись на сайт и перезагрузившись на главную страницу, обнаруживаем, что меню там отсутствует как класс. Появляется оно только в ветке "avtomobili/". Корневой пункт теперь не выводится. В принципе, моей задумке это отвечает, остается лишь вернуться к варианту двух раздельных меню, добавить в них корневой пункт "Автомобили" и в настройках модулей выставить "Начальный уровень" равный 2. Однако, что если впоследствии захочется выводить эти меню на страницах вне ветки "avtomobili/"? Данная методика не оставляет такой возможности, а значит, недостаточно универсальна.

И вот тут мы, наконец, подошли к теме статьи. Использование появившейся в Joomla начиная с версии 1.6 возможности выбора типа пункта меню как псевдонима другого пункта того же или другого меню позволяет решить поставленную задачу и сохранить полный контроль над привязкой меню к страницам сайта. Небольшая плата за это - тот факт, что для каждой опции придется создавать по два пункта меню, однако это нас не смущает, мы ведь не ленивые?

Итак, перейдем к окончательной реализации нашей задумки. Все необходимое для этого уже есть: меню "Автомобили-ALL", содержащее полную иерархию всех пунктов, распределенных по требуемым уровням (модуля для этого меню, кстати, не требуется), и еще два меню - "Автомобили" и "Каталог авто". При этом пункты первого меню имеют стандартные типы - "Материал", "Список материалов категории", "Блог категории" и т. д., как оно было на сайте-источнике. Тип пунктов остальных меню заменим на "Псевдоним пункта меню", и ссылаться они будут на соответствующие пункты первого меню.

menu-aliases-08-set-alias

Таким образом, ссылки и навигатор определяются уровнями общего меню, а вывод меню на сайте и привязка к страницам - остальными меню и настройками их модулей.

Вообще, опция назначать пунктам меню тип псевдонима другого пункта имеет более стандартное применение - например, дублировать основное меню в подвале сайта. Тогда, в случае изменения основного пункта, ссылающийся на него автоматически подхватит новое значение. Изначально, по-видимому, эта функция и была введена для клонирования меню. Но описанный в статье случай использования этой функции являет из себя пример того, что возможности, предоставляемые сайтостроителю разработчиками CMS Joomla, зачастую могут быть расширены для решения и других задач. Гибкость системы имеет место, что не может не радовать.

Комментарии  

Janette
0 # Janette 23.09.2021 16:45
Do you mind if I quote a few of your articles as long as I provide credit
and sources back to your blog? My blog is in the exact same niche as yours
and my visitors would certainly benefit from some of the information you present here.
Please let me know if this ok with you. Cheers!

Feel free to visit my site ... ee [Janette]
Ответить | Ответить с цитатой | Цитировать

Добавить комментарий


Работая с этим сайтом, вы даете свое согласие на использование файлов cookie, необходимых для сохранения выбранных вами настроек, а также для нормального функционирования сервисов Google.