k2 — ЧПУ как в joomla 2.5
Достаточно вспомнить популярное облако тегов wp cumulus, которое достаточно сложно адаптируется под k2 и толком не хочет работать с тегами на русском языке. Да еще эти постоянные id в ссылках категорий, материалов, которые портят вид достойного ЧПУ.
Ведь идея ЧПУ – понятные для людей ссылки, и чем проще ссылка, чем меньше в ней технического «мусора», тем лучше. А почему бы не сделать ЧПУ вида /alias категории на английском/alias материала на английском.html? При этом оставив доступными и старые ссылки и сделать максимально корректной и возможной поддержку старых ссылок для уже проиндексированных сайтов на k2?
Итак, с задачей определились. Но что делать, если у нескольких документов, категорий один и тот же alias? Тут было две идеи:
- Изменить сам псевдоним/alias для категории/материала на другой, например, с добавлением префикса и записать его в базу данных. Но пришлось от этой идеи отказаться, чтобы сохранить совместимость с уже проиндексированными ссылками.
- Если несколько одинаковых псевдонимов/alias у разных материалов/категорий – то только в этом случае добавить в ссылку id перед псевдонимом. Так что если увидите в ваших материалах/категориях где-то id в ссылке после установки моего router.php, просто зайдите в редактирование материала в панели управления и измените псевдоним материала/категории.
Создает ли этот router.php для k2 дополнительную нагрузку на базу данных?
Router.php для k2, написанный мною, создает небольшую нагрузку в 3 запроса к базе данных для выборки alias/псевдонимов у всех опубликованных материалов, категорий и для выборки имени всех опубликованных тегов. Запросы не содержат каких–то сложных объединений таблиц и не отзовутся особой дополнительной «нагрузкой» на базу данных.
А что же с расходом памяти? Так как alias/псевдоним не может быть больше 255 символов, а зачастую не бывает больше 60-70 символов, при этом практически всегда он на английском языке, то 1 символ равняется 1 байту памяти.
Предположим, что у Вас на сайте 30 тысяч статей и 200 категорий: тогда 70 байт x 30 000 + 70 байт x 200 = 2 100 000 байт + 14 000 байт = 2 114 000 байт = 2065 кбайт = 2 мегабайта оперативной памяти. То есть для 100 тысяч статей в к2 с 600 категориями это добавит около 6-7 мегабайт памяти на страницу.
Как установить/настроить новый router.php для к2?
Router.php написан и тестировался на данный момент с joomla 2.5. Для более ранней версии joomla 1.5 будет переписан чуть попозже. Чтобы установить новый router, его достаточно скачать, распаковать и заменить существующий в папке /components/com_k2/router.php. Дальше нужно обязательно проверить, чтобы ссылки транслировались верно в английский, не Unicode вариант. И что ЧПУ преобразование ссылок обязательно включено.
Для этого нужно перейти в панель управления joomla 2.5 /administrator/. Далее в верхнем меню проследовать Сайт – общие настройки. Вкладка Сайт справа область Настройки Seo Включить ЧПУ – да, перенаправление URL – да (если Ваш сервер работает под управлением Apache, нужно зайти на ftp и переименовать файл htaccess.txt в файл .htaccess), Алиасы в Unicode – нет.
Если были внесены какие–то изменения, не забудьте в правом верхнем углу экрана нажать кнопку Сохранить. Также у Вас должен быть доступен на запись файл конфигурации Joomla 2.5 configuration.php в корне Вашего сайта.
Как исключить из ссылок /component/k2/?
Для этого достаточно создать для категории материалов необходимые пункты меню. Даже если категорий на Вашем сайте много: чтобы завести пункты меню для 100-200 категорий, вам понадобится всего лишь пара часов
С какими версиями joomla, k2 тестировался router.php?
Router тестировался с joomla 2.5.8, k2 2.6.2, но должен без проблем работать с любой версией joomla 2.5, и с k2 версии 2.5 включительно
Почему были переделаны только ссылки категорий/статей/тегов в router.php для k2?
Пока что не вижу смысла менять остальные ссылки, например, ссылки статей по автору, или делать более короткими ссылки по определенному тегу, или дате, так как эти ссылки не так часто добавляются в избранное, запоминаются посетителями, а для поисковых систем их вообще желательно закрыть через rel=»nofollow», чтобы избежать дублирования содержимого страниц внутри самого сайта