Как убрать ID материала из ссылки в Joomla

Суббота, 21 Март 2015 23:56 Автор 
Оцените материал
(2 голосов)
Я уже писал подобную статью для тех, кто использует компонент K2 : K2 - убираем из ссылки item и id
Однако, если использовать стандартные материалы Joomla и стандартные средства SEF, то возникает сложность со ссылками, так как в них добавляется ID материала.
В этой статье я расскажу как избавиться от этих ID и сделать ссылки идеальными.

В статье Как в Joomla убрать index.php из url я уже рассказывал какие должны быть параметры в настройках штатных средств SEF Joomla, поэтому предполагается, что вы уже используете эти настройки.

Но этого ещё мало, потому что ссылки будут выглядеть вот так:

 joomla no id 1

В ссылке видно цифру, которая соответствует ID материала.
Для того, чтобы убрать эти ID, потребуется сделать два исправления в файлах Joomla.

1. Правка файла config.xml

Этот файл расположен по следующему пути: корень_вашего_сайта/administrator/components/com_content/config.xml

joomla no id 2
Как ни странно, но в Joomla выше версии 1.5 уже предусмотрена функция для отключения ID материала из URL, но, почему-то, это не вынесено в настройки.
Действия, описанные ниже, позволят визуализировать эту функцию в настройках материалов.

Итак, необходимо в файле config.xml после строчки  description="COM_CONTENT_CONFIG_ARTICLE_SETTINGS_DESC">  добавить код

<field name="sef_advanced_link"
   type="radio"
   default="1"
   label="SEF: Удалить ID материала из URL?"
   description="Удаление ID материала в ссылке URL">
   <option value="0">JNO</option>
   <option value="1">JYES</option>
</field>

 

В итоге у вас должно получиться следующее:

joomla no id 3

Теперь, если вы зайдёте в админку сайта, откроете менеджер материалов и выберите "Настройки", то во вкладке "Материалы" будет видна необходимая нам опция.

joomla no id 4

По умолчанию у нас уже высталено значение "Да", но вы всегда сможете его изменить.

Проделанные действия убирают ID материала из ссылки, но этого не достаточно. Некоторые страницы будут вываливаться с ошибкой 404! Поэтому, обязательно выполните следующий пункт, даже если вам показалось, что в вашем случае всё и так хорошо и ошибок никаких нет!

2.  Правка файла router.php

Данный файл расположен по адресу: корень_вашего_сайта/components/com_content/router.php

joomla no id 6

В этом файле ищем строчку if ($count == 1) и меняем её на if ($count == 1 && !$advanced) 
В итоге должно получиться так, как показано на рисунке

joomla no id 7


для Joomla 3 возможно понадобиться в этом же файле изменить
where($db->quoteName('alias') . ' = ' . $db->quote($db->quote($segment)));
на where($db->quoteName('alias') . ' = ' . $db->quote($segment));

Вот теперь ссылки будут без лишних цифр!

joomla no id 5

Последнее изменение Воскресенье, 22 Март 2015 01:19
Stanislav

Master's degree

Сайт: skopil.ru
Авторизуйтесь, чтобы получить возможность оставлять комментарии