Появление вопроса связано с выходом Joomla 1.5 и его новым, встроенным механизмом SEF-url. Речь идет о желании без последствий избавиться от цифр в начале некоторых блоков URL, которые представляют из себя id категорий и материалов, которые Joomla использует в целях однозначного определения материала для отображения. Далее примеры и варианты решения.
1. Использовать только ссылки присутствующие в меню
При создании ссылки на материал (статический или категоризированный) joomla записывает соответствие внутренней ссылки и псевдонима ссылки в таблицу #__menu (jos_menu). Соответственно при использовании ссылки с псевдонимом в любом месте сайта вы будете также перенаправляться на нужный материал как и при переходе из пункта меню.
Такой подход применим для небольших, редко-обновляемых сайтов, ссылки из модуля последних новостей будут содержать id категории и раздела при включенном стандартном SEF, записывать ссылку на каждую новость в меню достаточно трудоемко и не оправданно.
2. Удаление id категории и материала из ссылок плагином HP Router
Плагин является единственным в своем роде (по моим поискам), поэтому рассмотрим его несколько внимательнее.
Пример работы плагина HP Router на демо-установке Joomla:
Пример удаления id матриала:
http://test.site/the-news/1-welcome-to-joomla ->
http://test.site/the-news/welcome-to-joomla
Пример удаления id категории и id матриала в модуле последних новостей:
http://test.site/component/content/article/3-newsflash/41-newsflash-5 ->
http://test.site/component/content/article/newsflash/newsflash-5
Официальное описание плагина:
HP Router берет URL из ядра Joomla и удаляет из них ID, исключая ссылки в модулях меню. Теперь вы можете создавать URL без номеров в них и это даже может помочь с дублированием контента в некоторых ситуациях (прим. пер.: мне пока такие не встречались). Так же он реализует некоторые улучшения в URL.
Установка плагина HP Router:
Просто скачайте и установите как любой другой плагин.
- Вы не можете иметь двух одинаковых псевдонимов (alias) для двух статей, даже если они находятся в разных категориях. Если точнее, вы не можете иметь одинаковые псевдонимы для любого типа элемента контента. Как правило, если вы можете получить список этого типа элементов контета в меню администрирования, вы не можете использовать одинаковые псевдонимы для двух элементов из этого списка.
- Плагин работает только для компонентов ядра Joomla (прим. пер.: включенных в установочный дистрибутив). Для сторонних компонентов необходимо создавать дополнительные файлы с функцией удаления ID из URL и сохранять их в папке hpRouter плагина, если существующий механизм не работает для них сразу.
- Работа плагина приводит к некоторому снижению производительности, так как с ним добавляется выполняемый код и запросы к БД. Это снижение практически не заметно, но если у вас появились проблемы после установки плагина – лучше отключите его. Если вы уже имеете проблемы с производительностью, установка плагина вам не поможет.
Известные проблемы:
– Некоторые URL не могут быть приведены в SEF-вид. Это не проблема HP Router, а ошибка в самой Joomla.
Эти URL на служебных иконках статьи (прим. пер.: возможно имеются ввиду иконки печати, pdf и e-mail) и URL в модуле rss-экспорта новостей.
Эти ошибки должны быть исправлены в Joomla! 1.5.8 (прим. пер.: плагин 2008 года)
– Псевдонимы начинающиеся с цифр могут вызвать проблемы и скорее всего работать не будут.
Как избежать дублирования контента с этим плагином?
Множество людей создают пункты меню для просмотра содержимого раздела и затем создают домолнительный пункт меню для просмотра категории внутри этого раздела. Они часто называют пункт меню и категорию одинаково. Ранее через ID в URL, URL просмотра содержимого категории раздела отличался от ссылки в меню. С этим плагином когда два псевдонима одинаковы (один в меню и другой в ссылке на категорию), Joomla сгенерирует одинаковые URL для просмотра раздела и в меню. Тем не менее, необходимо отметить, что ссылка пункта меню всегда будет иметь преимущественную силу по сравнению с ссылкой на категорию (прим. пер.: правда пока непонятно в чем это выражается).
Таким образом если вы имеете различный набор модулей назначенных на пункт меню категории и вы кликните на ссылку внутри раздела, вы увидите назначенные пункту меню категории модули.
Примечение: пока что понять этот перевод немногоим легче чем оригинал на странице плагина, но, возможно, по мере использования плагина я его уточню. (Или уточните вы в комментариях).
Как известно ссылки в меню уже не содержат id (содержат только псевдоним пункта меню, который по соответствию в таблице jos_menu, ведет на нужный URL), поэтому плагин будет обрабатывать ссылки на материалы не записанные в каких либо меню (например ссылки из модулей «Последние новости», «Популярные материалы»).
Подходит для небольших сайтов, так как, возможно, поддерживает лишь ограниченное число компонентов Joomla.
Точно совместим со следующими:
- Com_content
- Com_contact
- Com_weblinks
- Com_newsfeed
- Com_rd_sitemap (надо проверить)
Вариант подходит для сайтов средней простоты, но с новостной лентой .
3. Использование компонента для SEF-преобразования ссылок
Данное решение ведет к созданию любых псевдонимов для любых ссылок (кроме, разумеется абсолютных дублей). В своей практике чаще всего использовал для этих целей ArtioJoomSEF.
Инструкция по установке ArtioJoomSEF и возможные проблемы и их решения описаны по ссылке.
Вариант подходит практически для любого сайта на Joomla, так как написано масса SEF-плагинов для большинства сторонних компонентов.
Помогите решить проблему: Выводится id материала в ссылке вместо псевдонима. Материалы выводятся в виде шаблона блога категории. Ccылка имеет вид: site.ru/nasosy/1, а надо: site.ru/nasosy/nasosy_himicheskie. Т.е. мне надо, чтобы вместо ID материала выводилось название материала из поля «псевдоним» — nasosy_himicheskie и др.
Убрать ID в Joomla легко... посмотрите тут seo4you.ws/texnicheskie-v...cms-vs-html.html