Joomla 3.4.5 Как убрать ID в ссылках на категории и материалы?

  • 29 Ответов
  • 1075 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

*

PR[E]D@TOR

  • Осваиваюсь на форуме
  • ***
  • 51
  • 0
Прошу прощения за повтор, но так больше шансов что увидят и помогут

Joomla 3.4.5
Как убрать ID в ссылках на категории и материалы?

*

PR[E]D@TOR

  • Осваиваюсь на форуме
  • ***
  • 51
  • 0
Если включить галочку "Удалить ID материала в ссылке?" и выбрать "Да" то при открытии новости выскакивает такая ошибка

*

Aleks.Denezh

  • Практически профи
  • *******
  • 2785
  • 376
Скажите мне где вы нашли "Удалить ID материала в ссылке?" В стандартном компоненте такого нет! Какой у вас комопнент?
Мой  блог по разработке на Joomla CMS!
Хотите отблагодарить материально? Мой WMR: R861060179016

*

voland

  • Профи
  • ********
  • 9375
  • 421
  • СКАЙП утерян! Пишите в телеграм @volandku
Ого. Тоже интересно, где такая галочка.


*

voland

  • Профи
  • ********
  • 9375
  • 421
  • СКАЙП утерян! Пишите в телеграм @volandku
Тьфу ты. Ну на заборе много чего написано, но нам это малоинтересно.

*

PR[E]D@TOR

  • Осваиваюсь на форуме
  • ***
  • 51
  • 0
Как тогда сделать правильно? как их все-таки убрать?

*

Фей

  • Завсегдатай
  • *****
  • 704
  • 83
  • skype: bel_ko_d
хех! метод настоящего джедая!
Файл /components/com_content/router.php
ищем строку $advanced = $params->get('sef_advanced_link', 0); Она присутствует в 2х местах.
0 меняем на 1

Сохраняем файл.

Идем на морду сайта и видим чистые ссылки без ИД у категорий и материала.
Поддержка приветствуется: R389709625951 Z385311708634 E421764509818

*

PR[E]D@TOR

  • Осваиваюсь на форуме
  • ***
  • 51
  • 0
хех! метод настоящего джедая!
Файл /components/com_content/router.php
ищем строку $advanced = $params->get('sef_advanced_link', 0); Она присутствует в 2х местах.
0 меняем на 1

Сохраняем файл.

Идем на морду сайта и видим чистые ссылки без ИД у категорий и материала.


не работает

*

Фей

  • Завсегдатай
  • *****
  • 704
  • 83
  • skype: bel_ko_d
а если просто так: $advanced = 1;
Поддержка приветствуется: R389709625951 Z385311708634 E421764509818

*

PR[E]D@TOR

  • Осваиваюсь на форуме
  • ***
  • 51
  • 0
Ошибка про которую писал выше появляется

*

voland

  • Профи
  • ********
  • 9375
  • 421
  • СКАЙП утерян! Пишите в телеграм @volandku
хех! метод настоящего джедая!
Файл /components/com_content/router.php
ищем строку $advanced = $params->get('sef_advanced_link', 0); Она присутствует в 2х местах.
0 меняем на 1

Сохраняем файл.

Идем на морду сайта и видим чистые ссылки без ИД у категорий и материала.

Этот метод работал на 1.7, уже на какой-то 2.5 его поломали, а уж в 3 - тем более.

ЗЫ. Сегодня выходит бетка 3.5, там вроде новый роутер обещали.

*

Фей

  • Завсегдатай
  • *****
  • 704
  • 83
  • skype: bel_ko_d
У вас похоже измененный файл роутера, тот что я указывал.
Возьмите дистрибутив Joomla и оттуда залейте себе на сервак рабочий файл роутера.
Поддержка приветствуется: R389709625951 Z385311708634 E421764509818

*

PR[E]D@TOR

  • Осваиваюсь на форуме
  • ***
  • 51
  • 0
Этот метод работал на 1.7, уже на какой-то 2.5 его поломали, а уж в 3 - тем более.

ЗЫ. Сегодня выходит бетка 3.5, там вроде новый роутер обещали.

а где найти бетку 3.5?

*

Фей

  • Завсегдатай
  • *****
  • 704
  • 83
  • skype: bel_ko_d
Воланд, да что ты, а я дурак юзаю этот метод и он блин, работает!
Предатор, у вас чутка испорченный роутер. Я повторил вашу ошибку:
если в методе public function parse(&$segments) класса class ContentRouter extends JComponentRouterBase
return $vars; будет возвращать НЕ МАССИВ, то:
Warning: array_merge(): Argument #2 is not an array in /var/www/..../libraries/cms/router/router.php on line 350
Fatal error: Unsupported operand types in /var/www/...../libraries/cms/router/router.php on line 234

так что или ищите ошибку в этом методе или возьмите рабочий файл роутера с дистриба.
Поддержка приветствуется: R389709625951 Z385311708634 E421764509818

*

PR[E]D@TOR

  • Осваиваюсь на форуме
  • ***
  • 51
  • 0
взял рабочий роутер и в него внес изменения. реакции 0.

*

Фей

  • Завсегдатай
  • *****
  • 704
  • 83
  • skype: bel_ko_d
Кеш отключите и почистите.
У вас больше никакие плагины-компоненты не юзаются для сеф-ссылок?
Поддержка приветствуется: R389709625951 Z385311708634 E421764509818

*

PR[E]D@TOR

  • Осваиваюсь на форуме
  • ***
  • 51
  • 0
Aimy Sitemap это есть

*

Фей

  • Завсегдатай
  • *****
  • 704
  • 83
  • skype: bel_ko_d
это не то...
я чет даже не знаю куда рыть...
а это точно косячит com_content?
 и еще, попробуйте поиграться параметрами сео в общих настройках Joomla.
Поддержка приветствуется: R389709625951 Z385311708634 E421764509818

*

PR[E]D@TOR

  • Осваиваюсь на форуме
  • ***
  • 51
  • 0
А можете мне помочь, посмотреть в чем может быть проблема.

*

GT-SEO

  • Осваиваюсь на форуме
  • ***
  • 40
  • 0
  • мой шибзик
хех! метод настоящего джедая!
Файл /components/com_content/router.php
ищем строку $advanced = $params->get('sef_advanced_link', 0); Она присутствует в 2х местах.
0 меняем на 1

Сохраняем файл.

Идем на морду сайта и видим чистые ссылки без ИД у категорий и материала.


Спасибо всё работает ))) на J3.4.5

 *DRINK* *DRINK* *DRINK* *DRINK*

*

Dobreff

  • Давно я тут
  • ****
  • 214
  • 5
хех! метод настоящего джедая!
Файл /components/com_content/router.php
ищем строку $advanced = $params->get('sef_advanced_link', 0); Она присутствует в 2х местах.
0 меняем на 1

Сохраняем файл.

Идем на морду сайта и видим чистые ссылки без ИД у категорий и материала.


Сработало на 3.5.1 Спасибо!

*

SmokerMan

  • Профи
  • ********
  • 5329
  • 689
зачем это менять в файле не совсем понятно, это параметр и он записывается в базу
достаточно добавить его в XML записать 1 раз в базу и все, потом ничего слетать не будет при обновлении

*

Фей

  • Завсегдатай
  • *****
  • 704
  • 83
  • skype: bel_ko_d
зачем это менять в файле не совсем понятно, это параметр и он записывается в базу
достаточно добавить его в XML записать 1 раз в базу и все, потом ничего слетать не будет при обновлении

Ага! Ибо тут мы имеем обновление, потом какое-либо изменение в параметрах компонента (потребовалось) и опппа - ссылочки стали старыми с ИД материала.
Варианта всего два:
1. добавить в XML конфига и на хмл-файл выставить права только чтение
2. изменить файл router.php и на него выставить только чтение.
Что-то супер-пупер глобальное разработчики родить не могут...
Поддержка приветствуется: R389709625951 Z385311708634 E421764509818

*

SmokerMan

  • Профи
  • ********
  • 5329
  • 689
Ибо тут мы имеем обновление, потом какое-либо изменение в параметрах компонента (потребовалось) и опппа - ссылочки стали старыми с ИД материала.
как правило это все настраивается изначально, а вот обновление с той частотой как это происходит не сравнится
так что тут кому как)
сдается сайт и там  заказчик в какие-то настройки врядли полезит, а вот на жмякнуть на кнопку обновить (которая везде красуется) он скорее всего нажмет)

а так по сути не зря же они эту настройку никому не открывают, видимо есть на это причины.
как минимум я вижу одну из них, на каждую ссылку у вас будет формироваться лишний запрос к БД, т.е. если на главной грубо говоря 50 ссылок на материалы, у вас будет 50 лишних запросов

*

Фей

  • Завсегдатай
  • *****
  • 704
  • 83
  • skype: bel_ko_d
Плохо ты матчасть знаешь )
При создании ссылки обращение к таблице контента идет в том случае, если в запросе ID просто число,  а не пара ID:ALIAS.
Да и надеяться, что заказчик не полезет тоже не стоит. И еще, если уж начинать бояться лишних запросов к БД, то сайт лучше вообще не стравить )
Поддержка приветствуется: R389709625951 Z385311708634 E421764509818

*

SmokerMan

  • Профи
  • ********
  • 5329
  • 689
Плохо ты матчасть знаешь )
да я ее вообще не знаю)
При создании ссылки обращение к таблице контента идет в том случае, если в запросе ID просто число,  а не пара ID:ALIAS.
вот кусок кода из роутера контента, для построения ссылки
Код
					// Make sure we have the id and the alias
if (strpos($query['id'], ':') === false)
{
$db = JFactory::getDbo();
$dbQuery = $db->getQuery(true)
->select('alias')
->from('#__content')
->where('id=' . (int) $query['id']);
$db->setQuery($dbQuery);
$alias = $db->loadResult();
$query['id'] = $query['id'] . ':' . $alias;
}

И еще, если уж начинать бояться лишних запросов к БД, то сайт лучше вообще не стравить )
боятся лишних запросов стоит всегда, так как это на прямую влияет на производительность
конечно можно взять мощный сервер платить за него в несколько раз больше и не париться, или хостится на шареде, это про обычный сайт)


*

Фей

  • Завсегдатай
  • *****
  • 704
  • 83
  • skype: bel_ko_d
Именно кусок, который без основных условий...
Кароче, нефиг народ пугать производительностью... Флудить начинаешь!
Поддержка приветствуется: R389709625951 Z385311708634 E421764509818

*

SmokerMan

  • Профи
  • ********
  • 5329
  • 689
Именно кусок, который без основных условий...
Кароче, нефиг народ пугать производительностью... Флудить начинаешь!
каких условий?)
вот условие
Цитировать
               // Make sure we have the id and the alias
               if (strpos($query['id'], ':') === false)

*

Фей

  • Завсегдатай
  • *****
  • 704
  • 83
  • skype: bel_ko_d
Смокер, иди дальше кури бамбук!
Данное условие сработает только если в ссылке будет id=ID материала, а обычно id=ID:ALIAS. поэтому данный запрос не будет генериться 50 раз, если на странице выводится 50 материалов.
Поддержка приветствуется: R389709625951 Z385311708634 E421764509818