Рабочие SEF-ссылки транслитом для JoomGallery через router.php и совместимость с JoomFish
В создаваемых сайтов на Joomla! использую компонент JoomGallery, хоть он и не MVC, но довольно многофункциональный, легко настраивается и работает. До последнего времени не смог сделать для галереи ЧПУ.
SEF-компоненты не использую, так как для sh404SEF надо всё равно плагины искать, чтобы нормальные ссылки получались, поэтому преимущество перед стандартным SEF невелико, а разобраться с Artio JoomSEF не выходило, оба раза когда его ставил начинали лезть ошибки причину которых не мог понять, да и платные эти компоненты, хотя это не проблема. Если прямо потребуют какой-то из этих компонентов на сайт, то уже тогда поставлю разберусь, а сейчас слишком много времени получается на них надо, не люблю на столько глючные вещи.
Конечно, сразу же нашел эту тему, размещённый там router.php подходит для англоязычных сайтов, да и для русских подходит, только ссылки получаются с буквами того языка, на котором сайт. И заглавные буквы в них получаются, что всё же не красиво и проблемы может вызвать в некоторых браузерах и при передаче ссылок, не могу назвать такие ссылки дружественными.
Да, там предложили решение проблемы, добавив функцию замены букв, но после этого у меня переставала работать галерея, не знаю, как у других продолжала работать. Ведь тогда ссылки создаются как надо, названия транслитерируются и всё с адресами хорошо, но эти адреса никуда не ведут, так как сам скрипт берет название категории или фото с адреса и потом в базе ищет категорию с таким же названием, но в базе категории записаны на русском, а в адресах уже на транслите, поэтому все ссылки ведут в корень галереи.
Из-за этого на сайтах использовал галерею без красивых ссылок, да и не надо было оптимизировать галерею, основной упор на тексты всегда делался. На неделе выдалось свободное время и было настроение разобраться с router.php. В итоге, поменял немного принципы поиска соответствующей категории в адресе, сделал, чтобы с базы считывался весь список удовлетворяющих названий категорий или фото, потом уже каждое название транслитерировал и сравнивал с нужным, так получалось определить нужные айди категории или фото. Для этого дописал дополнительную функцию и добавил её после изменённых запросов к базе, да, такой скрипт чуть больше ресурсов потребляет и дольше выполняется, но для Джумлы это не проблема, если сравнивать с прожорливость ядра и остальных вещей.
Когда скопировал полученный router.php на многоязычный сайт на JoomFish, то обнаружилась ещё проблема. Запросы к базе возвращали уже переведенные имена категорий и фото, поэтому их нельзя было поставить в соответствие к названиям из ссылок. Но это решилось просто. Так как JoomFish переопределяет методы обращения к базе, в самом скрипте в запросы этих методов дописал аргументы, указывающие, что не нужно переводить, в итоге всё заработало. Может не красиво, что в английской версии сайта в путях русские транслитерированные названия, но вряд ли это можно просто исправить, да и в остальных компонентах с путями так же.
Скачать новый router.php для JoomGallery можно по этой ссылке. Код скрипта не идеальный, но рабочий.
Результаты его работы можно посмотреть здесь: http://mebelok.com.ua/gallery (первый сайт, на котором его испытал, так как названия фото повторяются, то добавил вывод айди в адреса, поэтому соответствующие фото ищутся не по названию); http://bizukov.org.ua/ru/photo (многоязычный сайт, айди в адреса фотографий не выводятся, поэтому проверить работу можно в полной мере).