Перейти до вмісту

Робочі 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 (багатомовний сайт, айді в адреси фотографій не виводяться, тому перевірити роботу можна повною мірою).

Увімкніть коментарі, прийнявши куки.

Необхідні куки працюють завжди. Куки для статистики та коментарів використовуються лише з вашої згоди. Докладніше