Неверная работа роутера тегов в 3.4.6

  • 107 Ответов
  • 5160 Просмотров

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

*

voland

  • ********
  • 9346
  • 419
  • СКАЙП утерян! Пишите в телеграм @volandku
Решение:
- сделано, требуется сделать pull

Статус:
желательна проверка

Описание:
Я создал пункт меню в скрытом меню типа список меток и дал ему алиас tags

Ожидаемый результат
Ссылки на тэги будут иметь вид /tags/tagname.html

Полученный результат
После посещения странички /tags.html ссылки действительно имеют такой вид, однако через некоторое время они вновь приобретают вид
/component/tags/tag/tagname.html

Информация о системе
Joomla 3.4.6 + модуль меток стандартный опять же
« Последнее редактирование: 17.12.2015, 19:25:31 от voland »

*

b2z

  • *****
  • 7449
  • 741
  • Разраблю понемногу
Re: Неверная работа роутера в 3.4.6
« Ответ #1 : 17.12.2015, 01:12:05 »
Цитировать
однако через некоторое время они вновь приобретают вид
/component/tags/tag/tagname.html
Это как? Само по себе?

*

voland

  • ********
  • 9346
  • 419
  • СКАЙП утерян! Пишите в телеграм @volandku

*

voland

  • ********
  • 9346
  • 419
  • СКАЙП утерян! Пишите в телеграм @volandku
Re: Неверная работа роутера в 3.4.6
« Ответ #3 : 17.12.2015, 01:14:30 »
Вот, там можно увидеть адреса ссылок.
А потом зайти сюда и ссылки станут правильными.
Но, на некоторое время

*

b2z

  • *****
  • 7449
  • 741
  • Разраблю понемногу
Re: Неверная работа роутера в 3.4.6
« Ответ #4 : 17.12.2015, 01:19:02 »
Так по моему они так всегда работали. Пока находишься внутри компонента тегов, всё ок, а как выходишь из него - нет. Или я не прав?

*

voland

  • ********
  • 9346
  • 419
  • СКАЙП утерян! Пишите в телеграм @volandku
Re: Неверная работа роутера в 3.4.6
« Ответ #5 : 17.12.2015, 01:23:13 »
Не знаю.
Даже если выйти, модуль некоторое время показывает верные ссылки.

В любом случае - это некорректная работа роутера

*

b2z

  • *****
  • 7449
  • 741
  • Разраблю понемногу

*

voland

  • ********
  • 9346
  • 419
  • СКАЙП утерян! Пишите в телеграм @volandku
Re: Неверная работа роутера в 3.4.6
« Ответ #7 : 17.12.2015, 10:46:43 »
Ну так надо создать пункты меню для всех тегов и всё будет ок. Это же Joomla.
Да вы издеваетесь!
Тем более что тэги создаются на лету и ссылки то ИНОГДА правильные.

*

AlekVolsk

  • ********
  • 6301
  • 336
Re: Неверная работа роутера в 3.4.6
« Ответ #8 : 17.12.2015, 10:48:59 »
А если тегов несколько тысяч?

*

robert

  • ********
  • 4002
  • 371
Re: Неверная работа роутера в 3.4.6
« Ответ #9 : 17.12.2015, 11:00:14 »
Не пробовали в шаблоне модуля приписать к url тэгов Itemid того пункта меню?
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

*

voland

  • ********
  • 9346
  • 419
  • СКАЙП утерян! Пишите в телеграм @volandku
Re: Неверная работа роутера в 3.4.6
« Ответ #10 : 17.12.2015, 11:09:20 »
Нет. А разве они не в хелпере генерируется?

*

robert

  • ********
  • 4002
  • 371
Re: Неверная работа роутера в 3.4.6
« Ответ #11 : 17.12.2015, 11:20:37 »
Не знаю, я этот модуль не юзаю, но не думаю, что в хелпере определяется ID вашего пункта меню (что в принципе тоже можно делать). Могу ошибиться, но насколько я помню, router.php сначала ищет подходящий пункт меню по Itemid и в случае неуспеха оставляет url в виде "component/tags".
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

*

voland

  • ********
  • 9346
  • 419
  • СКАЙП утерян! Пишите в телеграм @volandku
Re: Неверная работа роутера в 3.4.6
« Ответ #12 : 17.12.2015, 11:49:15 »
Кстати, как ни странно, но ссылки формируются уже в шаблоне вывода
Код
JRoute::_(TagsHelperRoute::getTagRoute($item->tag_id . ':' . $item->alias))

*

b2z

  • *****
  • 7449
  • 741
  • Разраблю понемногу
Re: Неверная работа роутера в 3.4.6
« Ответ #13 : 17.12.2015, 12:11:18 »
Могу ошибиться, но насколько я помню, router.php сначала ищет подходящий пункт меню по Itemid и в случае неуспеха оставляет url в виде "component/tags".
Именно, стандартный роутер - ищет Itemid конкретного элемента. Он такой везде в Joomla - во всех компонентах. Нет фолбэка на список.

*

robert

  • ********
  • 4002
  • 371
Re: Неверная работа роутера в 3.4.6
« Ответ #14 : 17.12.2015, 12:30:53 »
Нет фолбэка на список.
Исключение - если он активный. Интересно, почему?
P.S. Ведь если не найдется пункта меню для конкретного элемента, то логично использовать существующий пункт меню списка, так? В общем, думаю, что всю систему образования ссылок нужно менять.
« Последнее редактирование: 17.12.2015, 12:43:00 от robert »
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

*

b2z

  • *****
  • 7449
  • 741
  • Разраблю понемногу
Re: Неверная работа роутера в 3.4.6
« Ответ #15 : 17.12.2015, 12:40:17 »
Сергей, попробуй сделать так в /components/com_tags/helpers/route.php:

Добавь после 155 строки код:

Код: php
// Fallback to default tags view
if ($view == 'tags')
{
self::$lookup[$language]['tags']['default'] = $item->id;
}

Потом после строки 178:

Код: php
// Return the default itemid
if (isset(self::$lookup[$language]['tags']['default']))
{
return self::$lookup[$language]['tags']['default'];
}

*

b2z

  • *****
  • 7449
  • 741
  • Разраблю понемногу

*

robert

  • ********
  • 4002
  • 371
Re: Неверная работа роутера в 3.4.6
« Ответ #17 : 17.12.2015, 12:44:06 »
Ведь если не найдется пункта меню для конкретного элемента, то логично использовать существующий пункт меню списка, так?
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

*

b2z

  • *****
  • 7449
  • 741
  • Разраблю понемногу
Re: Неверная работа роутера тегов в 3.4.6
« Ответ #18 : 17.12.2015, 12:46:58 »
Ведь если не найдется пункта меню для конкретного элемента, то логично использовать существующий пункт меню списка, так?
Как бы да, логично. Выше я как раз предложил такое решение. Но реально нужно давать выбор, что использовать для фолбэка, а не хардкодить.

*

voland

  • ********
  • 9346
  • 419
  • СКАЙП утерян! Пишите в телеграм @volandku
Re: Неверная работа роутера тегов в 3.4.6
« Ответ #19 : 17.12.2015, 18:08:44 »
Сергей, попробуй сделать так в /components/com_tags/helpers/route.php:

Добавь после 155 строки код:

Код: php
// Fallback to default tags view
if ($view == 'tags')
{
self::$lookup[$language]['tags']['default'] = $item->id;
}

Потом после строки 178:

Код: php
// Return the default itemid
if (isset(self::$lookup[$language]['tags']['default']))
{
return self::$lookup[$language]['tags']['default'];
}
Точно после этих строк?


*

voland

  • ********
  • 9346
  • 419
  • СКАЙП утерян! Пишите в телеграм @volandku
Re: Неверная работа роутера тегов в 3.4.6
« Ответ #21 : 17.12.2015, 18:36:09 »
а 178 до первой правки или после?


*

voland

  • ********
  • 9346
  • 419
  • СКАЙП утерян! Пишите в телеграм @volandku
Re: Неверная работа роутера тегов в 3.4.6
« Ответ #23 : 17.12.2015, 18:39:46 »
Угу, сделал.
Проверил - поведение не изменилось.

*

b2z

  • *****
  • 7449
  • 741
  • Разраблю понемногу
Re: Неверная работа роутера тегов в 3.4.6
« Ответ #24 : 17.12.2015, 18:52:52 »
Аа, я затупил. Там же else, а значит он не отработает, так как $needles всегда есть. Убери else вообще.

И первую часть кода после строки 154 воткни.
https://github.com/joomla/joomla-cms/blob/staging/components/com_tags/helpers/route.php#L154

*

voland

  • ********
  • 9346
  • 419
  • СКАЙП утерян! Пишите в телеграм @volandku
Re: Неверная работа роутера тегов в 3.4.6
« Ответ #25 : 17.12.2015, 19:23:46 »
Не, всё же поставь первую часть после строки 155.
О, теперь работает!
Надо запуллить!

*

b2z

  • *****
  • 7449
  • 741
  • Разраблю понемногу
Re: Неверная работа роутера тегов в 3.4.6
« Ответ #26 : 17.12.2015, 19:29:28 »
О, теперь работает!
Надо запуллить!
Я уже пояснял, что так просто пулл не сделать. А если кто-то не хочет, чтобы по дефу брался пункт меню списка тегов?

*

voland

  • ********
  • 9346
  • 419
  • СКАЙП утерян! Пишите в телеграм @volandku
Re: Неверная работа роутера тегов в 3.4.6
« Ответ #27 : 17.12.2015, 19:31:01 »
Ну если 99% это надо, то может есть смысл игнорировать этого кого-то?

*

b2z

  • *****
  • 7449
  • 741
  • Разраблю понемногу
Re: Неверная работа роутера тегов в 3.4.6
« Ответ #28 : 17.12.2015, 19:38:29 »
Ты узко мыслишь... Сразу видно, пуллов не делал ;) Харкодить нельзя, понимаешь? Ты же не для себя делаешь...

Нужна свобода выбора, а это значит, что надо параметр вводить какой-то. Возможно в настройки компонента.

*

voland

  • ********
  • 9346
  • 419
  • СКАЙП утерян! Пишите в телеграм @volandku
Re: Неверная работа роутера тегов в 3.4.6
« Ответ #29 : 17.12.2015, 20:03:22 »
Ты узко мыслишь... Сразу видно, пуллов не делал ;) Харкодить нельзя, понимаешь? Ты же не для себя делаешь...

Нужна свобода выбора, а это значит, что надо параметр вводить какой-то. Возможно в настройки компонента.
Эх.. пока это случится