Удалить идентификатор статьи из Joomla 3 URL

9

Я пытаюсь удалить идентификатор статьи из URL Joomla 3. Я искал вокруг, и ответ находится в

components\com_content\router.php

изменить 0на 1в$advanced = $params->get('sef_advanced_link', 1);

по строкам 38 и 290

а также закомментировал

if (strpos($segments[0], ':') === false) {
    $vars['view'] = 'article';
    $vars['id'] = (int)$segments[0];
    return $vars;
}

Я считаю, что это хорошо работает в Joomla 2.5, так как все комментарии упоминают об этом.

Но это не делает работу для меня на моем сайте Joomla 3.3.

Как этого добиться, не создавая пунктов меню для каждой статьи?

кляп
источник
У вас есть ошибки?
Дмитрий Рекун
Просто создайте ссылку на меню для вашей статьи.
saibbyweb
Лоддер - Да, я получаю нужную ссылку, но вместо моей статьи появляется страница с ошибкой 404.
кляп
Saibbyweb - у меня более 100 статей, и их число должно увеличиться до 500, поэтому я не думаю, что было бы хорошей идеей создать меню для всех этих.
кляп
Если расширение K2 вариант для вас, то вы можете добиться этого действительно легко. К2 имеет опции для расширенной маршрутизации, с необходимыми опциями. Вы можете импортировать существующие статьи в K2. Проверьте мой блог K2 и сгенерированные ссылки readmore. Другое решение состоит в том, чтобы использовать что-то вроде sh404sef или youwait для этого indiegogo.com/projects/advance-the-joomla-url-router/x/7216161
Joomla Agency

Ответы:

11

Шаг 1

Отредактируйте «components / com_content / router.php», затем перейдите к шагу 2.
(Вероятно, вам придется повторять этот шаг каждый раз, когда вы обновляете Joomla.)

Шаг 2

(Есть два места, чтобы сделать это изменение, одно около вершины, одно посередине) Замените это:

$advanced = $params->get('sef_advanced_link', 0);

С этим:

$advanced = $params->get('sef_advanced_link', 1);

Шаг 3

замещать

->where($db->quoteName(‘alias’) . ‘ = ‘ . $db->quote($db->quote($segment)));

с

->where($db->quoteName(‘alias’) . ‘ = ‘ . $db->quote($segment));

и вы сделали.

saibbyweb
источник
пожалуйста @gag
saibbyweb
Я пробовал вышеуказанное решение на моем сайте 3.3.3 безрезультатно. Весь сайт будет пустым.
5

Для тех, кто не хочет зацикливаться на редактировании кода Joomla, отметим, что сторонние расширения SEF предоставляют возможность удалять идентификаторы из URL-адресов SEF.

Есть много расширений SEF, которые можно найти в JED :

Например, SH404SEF , является одним из самых популярных и используемых расширений Joomla, с длинной историей и расширенной поддержкой многих сторонних компонентов.

Что касается более простого решения, я недавно наткнулся на новый плагин, который предоставляет несколько функций, включая «Удаление идентификаторов из статьи, категорий и тегов URL SEF». Простое и удобное решение, которое работает.

* Примечание 1: оба расширения, упомянутые выше, являются платными.

* Примечание 2: есть еще один похожий вопрос в JSE .

Ф.Фрюин
источник
Пользуясь этим, я фанат Direct Alias, который является плагином, который просто удаляет идентификаторы статьи / категории и ничего больше. Хорошее решение, если вам не нужен целый компонент SEF. extensions.joomla.org/extensions/extension/site-management/sef/…
YellowWebMonkey