Как убрать ID категории из ссылок Joomla
Незнаю причины возникновения этой мульки, было замечено на Joomla 2.5.18.
Ссылка на категорию материалов в адресной строке выглядит так http://artlabor.ee/68-ssylka-na-kategoriju
Для Joomla 2.5 и 3:
Вариант 1
в файле: корень_сайта/administrator/components/com_content/config.xml
в конец файла вставляем строки
<field name="sef_advanced_link"
type="radio"
default="1"
label="SEF: Удалить ID материала в ссылке?"
description="Удалить ID материала в ссылке?">
<option value="0">JNO</option>
<option value="1">JYES</option>
</field>
После добавления этих строк кода, Вы получили возможность включать и отключать ID из ссылок прямо из административной панели своего сайта. Для этого Вам нужно перейти в менеджер материалов и нажать "Настройки". И в настройках теперь у Вас будет находиться строка: "Удалить ID материала в ссылке?":
Нажимаете "Да". После этого очистите кэш сайта. Теперь ссылки в Joomla 2.5 будут отображаться без ID. Если на некоторых ссылках выскакивает 404 ошибка, то следует в файле _ваш-сайт/components/com_content/router.php найти строку:
// then we assume it is a category. If they don't we assume it is an article
if ($count === 1) {
// then we assume it is a category. If they don't we assume it is an article
if ($count === 1 && !$advanced) {
в Joomla 3 может быть так:
->where($db->quoteName('alias'). ' = ' . $db->quote($db->quote($segment)));
И заменить её на:
->where($db->quoteName('alias'). ' = ' . $db->quote($segment) );
Вариант 2
В файле ваш-сайт/components/com_content/router.php
примерно 27 строка
$advanced = $params->get('sef_advanced_link', 0);
заменяем на
$advanced = $params->get('sef_advanced_link', 1);
в Joomla 2.5 - 228 строка, в Joomla 3 - 250
$advanced = $params->get('sef_advanced_link', 0);
заменяем на
$advanced = $params->get('sef_advanced_link', 1);
и закомментируем это
if (strpos($segments[0], ':') === false)
{
$vars['view'] = 'article';
$vars['id'] = (int) $segments[0];
return $vars;
}
Важное примечание для Joomla 3: если при переходе по ссылкам без ID у Вас возникает 404 ошибка, то найдите в файле _ваш-сайт/components/com_content/router.php строку 376 (в разных версиях Joomla эта строка может отличаться):
->where($db->quoteName('alias') . ' = ' . $db->quote($db->quote($segment)));
заменяем
->where($db->quoteName('alias') . ' = ' . $db->quote($segment));
Ссылка на категорию материалов в адресной строке выглядит так http://artlabor.ee/68-ssylka-na-kategoriju
Для Joomla 2.5 и 3:
Вариант 1
в файле: корень_сайта/administrator/components/com_content/config.xml
в конец файла вставляем строки
<field name="sef_advanced_link"
type="radio"
default="1"
label="SEF: Удалить ID материала в ссылке?"
description="Удалить ID материала в ссылке?">
<option value="0">JNO</option>
<option value="1">JYES</option>
</field>
После добавления этих строк кода, Вы получили возможность включать и отключать ID из ссылок прямо из административной панели своего сайта. Для этого Вам нужно перейти в менеджер материалов и нажать "Настройки". И в настройках теперь у Вас будет находиться строка: "Удалить ID материала в ссылке?":
Нажимаете "Да". После этого очистите кэш сайта. Теперь ссылки в Joomla 2.5 будут отображаться без ID. Если на некоторых ссылках выскакивает 404 ошибка, то следует в файле _ваш-сайт/components/com_content/router.php найти строку:
// then we assume it is a category. If they don't we assume it is an article
if ($count === 1) {
// then we assume it is a category. If they don't we assume it is an article
if ($count === 1 && !$advanced) {
в Joomla 3 может быть так:
->where($db->quoteName('alias'). ' = ' . $db->quote($db->quote($segment)));
И заменить её на:
->where($db->quoteName('alias'). ' = ' . $db->quote($segment) );
Вариант 2
В файле ваш-сайт/components/com_content/router.php
примерно 27 строка
$advanced = $params->get('sef_advanced_link', 0);
заменяем на
$advanced = $params->get('sef_advanced_link', 1);
в Joomla 2.5 - 228 строка, в Joomla 3 - 250
$advanced = $params->get('sef_advanced_link', 0);
заменяем на
$advanced = $params->get('sef_advanced_link', 1);
и закомментируем это
if (strpos($segments[0], ':') === false)
{
$vars['view'] = 'article';
$vars['id'] = (int) $segments[0];
return $vars;
}
Важное примечание для Joomla 3: если при переходе по ссылкам без ID у Вас возникает 404 ошибка, то найдите в файле _ваш-сайт/components/com_content/router.php строку 376 (в разных версиях Joomla эта строка может отличаться):
->where($db->quoteName('alias') . ' = ' . $db->quote($db->quote($segment)));
заменяем
->where($db->quoteName('alias') . ' = ' . $db->quote($segment));
Предлагаю вашему вниманию подборку интересных каналов Telegram по дизайну интерьера и архитектуре
https://tele.gg/dizain_interjera - канал практикующего дизайнера интерьера с интересными советами по ремонту и декору.
https://tele.gg/interio_inspiration - канал с ежедневной подборкой проектов интерьера для вашего вдохновения
https://tele.gg/arh_inspiration - так же подборка вдохновляющих проектов, но уже по архитектуре
Спасибо! Вариант #1 не помог (Joomla 2.5.28)
ОтветитьУдалитьВариант #2 получился. Только у меня строка не 228, а 208