Як видалити id з посилання на статтю в Joomla! 2.5

В url-посиланнях на конкретну статтю Joomla! автоматично прописує id цієї статті.

articl id in url

Таким чином зменшується імовірність однакових 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/

Мітки:

Додати коментар


Захисний код
Оновити