Як видалити id з посилання на статтю в Joomla! 2.5
В url-посиланнях на конкретну статтю Joomla! автоматично прописує id цієї статті.
Таким чином зменшується імовірність однакових url в різних статтей, і це позитив, а негатив -як мінімум, неестетичний вигляд посилання. В Joomla! 1.5 проблема елементарно вирішувалась за допомогою стороннього плагіна. Під 2.5 такого плагіна нема. Але позбутись циферок в посиланні цілком можливо.
Варіанти з окремим пунктом меню (хоча для сайтів з 3 - 4 сторінками це непогане рішення) чи настройкою стороннього компонента SEF розглядати не будем, а зразу перейдем до діла. Треба внести деякі зміни в файл components\com_content\router.php:
в функції ContentBuildRoute(&$query) міняєм рядок 27
27
|
$advanced = $params ->get( 'sef_advanced_link' , 0); |
на
27
|
$advanced = $params ->get( 'sef_advanced_link' , 1); |
в функції ContentParseRoute($segments) міняєм рядок 208
208
|
$advanced = $params ->get( 'sef_advanced_link' , 0); |
на
208
|
$advanced = $params ->get( 'sef_advanced_link' , 1); |
і найважливіше, закоментовуємо рядки 228-232
228
229
230
231
232
|
if ( strpos ( $segments [0], ':' ) === false) { $vars [ 'view' ] = 'article' ; $vars [ 'id' ] = (int) $segments [0]; return $vars ; } |
так щоб стало приблизно отак:
228
229
230
231
232
233
|
/* if (strpos($segments[0], ':') === false) { $vars['view'] = 'article'; $vars['id'] = (int)$segments[0]; return $vars; }*/ |
Оце, з грубшого і все. В мене це працювало на Joomla 2.5.4, і 2.5.5 та зараз працює на 2.5.6. Єдиний помічений недолік (зате суттєвий) - при оновленнях версії знов потрібно колупатись в системі. Ну але що поробиш, лишається тільки чекати. Тут навіть не треба бути php-гуру, щоб зрозуміти, що нічого з тим файлом не робиться, просто включається опція вже передбачена в Joomla!, але поки недоступна з адмінки. Доречі, є можливість додати в адмінку. Для цього треба додати в XML administrator\components\com_content\config.xml наступний код:
< field name = "sef_advanced_link" type = "radio" default = "0" label = "Sef Advanced Mode" description = "Remove ItemID from Content URL?" > < option value = "0" >JNO</ option > < option value = "1" >JYES</ option > </ field > |
це додасть переключалку "Sef Advanced Mode" в опціях менеджера статтей‘Article Manager Options’ window:
Але цей спосіб має повно багів, зокрема параметр default=”1? в XML не працює, з'являються ерори при переході на сторінки категорій які не мають пункту меню (тому все-одно доведеться коментувати рядки 228-232)...
За матеріалами: http://developernote.com/2012/05/how-to-remove-id-from-url-in-joomla-2-5/