Форум русской поддержки Joomla!® CMS
06.12.2016, 18:05:19 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1] 2 3 4   Вниз
  Добавить закладку  |  Печать  
Автор

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

 (Прочитано 2965 раз)
0 Пользователей и 1 Гость смотрят эту тему.
voland
Профи
********

Репутация: +487/-86
Online Online

Пол: Мужской
Сообщений: 8711


любит наш народ всякое гавно...


« : 17.12.2015, 00:05:23 »

Решение:
- сделано, требуется сделать pull

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

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

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

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

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

Репутация: +710/-0
Offline Offline

Пол: Мужской
Сообщений: 7532


Разраблю понемногу


« Ответ #1 : 17.12.2015, 00:12:05 »

Цитировать
однако через некоторое время они вновь приобретают вид
/component/tags/tag/tagname.html
Это как? Само по себе?
Записан
voland
Профи
********

Репутация: +487/-86
Online Online

Пол: Мужской
Сообщений: 8711


любит наш народ всякое гавно...


« Ответ #2 : 17.12.2015, 00:13:06 »

Это как? Само по себе?
Да.
На обновленном блоге заметил.
Записан
voland
Профи
********

Репутация: +487/-86
Online Online

Пол: Мужской
Сообщений: 8711


любит наш народ всякое гавно...


« Ответ #3 : 17.12.2015, 00:14:30 »

Вот, там можно увидеть адреса ссылок.
А потом зайти сюда и ссылки станут правильными.
Но, на некоторое время
Записан
b2z
Support Team
*****

Репутация: +710/-0
Offline Offline

Пол: Мужской
Сообщений: 7532


Разраблю понемногу


« Ответ #4 : 17.12.2015, 00:19:02 »

Так по моему они так всегда работали. Пока находишься внутри компонента тегов, всё ок, а как выходишь из него - нет. Или я не прав?
Записан
voland
Профи
********

Репутация: +487/-86
Online Online

Пол: Мужской
Сообщений: 8711


любит наш народ всякое гавно...


« Ответ #5 : 17.12.2015, 00:23:13 »

Не знаю.
Даже если выйти, модуль некоторое время показывает верные ссылки.

В любом случае - это некорректная работа роутера
Записан
b2z
Support Team
*****

Репутация: +710/-0
Offline Offline

Пол: Мужской
Сообщений: 7532


Разраблю понемногу


« Ответ #6 : 17.12.2015, 09:30:24 »

Ну так надо создать пункты меню для всех тегов и всё будет ок. Это же Joomla.
Записан
voland
Профи
********

Репутация: +487/-86
Online Online

Пол: Мужской
Сообщений: 8711


любит наш народ всякое гавно...


« Ответ #7 : 17.12.2015, 09:46:43 »

Ну так надо создать пункты меню для всех тегов и всё будет ок. Это же Joomla.
Да вы издеваетесь!
Тем более что тэги создаются на лету и ссылки то ИНОГДА правильные.
Записан
AlekVolsk
Профи
********

Репутация: +316/-3
Offline Offline

Пол: Мужской
Сообщений: 6457



« Ответ #8 : 17.12.2015, 09:48:59 »

А если тегов несколько тысяч?
Записан
robert
Профи
********

Репутация: +344/-11
Offline Offline

Пол: Мужской
Сообщений: 3586


« Ответ #9 : 17.12.2015, 10:00:14 »

Не пробовали в шаблоне модуля приписать к url тэгов Itemid того пункта меню?
Записан
voland
Профи
********

Репутация: +487/-86
Online Online

Пол: Мужской
Сообщений: 8711


любит наш народ всякое гавно...


« Ответ #10 : 17.12.2015, 10:09:20 »

Нет. А разве они не в хелпере генерируется?
Записан
robert
Профи
********

Репутация: +344/-11
Offline Offline

Пол: Мужской
Сообщений: 3586


« Ответ #11 : 17.12.2015, 10:20:37 »

Не знаю, я этот модуль не юзаю, но не думаю, что в хелпере определяется ID вашего пункта меню (что в принципе тоже можно делать). Могу ошибиться, но насколько я помню, router.php сначала ищет подходящий пункт меню по Itemid и в случае неуспеха оставляет url в виде "component/tags".
Записан
voland
Профи
********

Репутация: +487/-86
Online Online

Пол: Мужской
Сообщений: 8711


любит наш народ всякое гавно...


« Ответ #12 : 17.12.2015, 10:49:15 »

Кстати, как ни странно, но ссылки формируются уже в шаблоне вывода
Код:
JRoute::_(TagsHelperRoute::getTagRoute($item->tag_id . ':' . $item->alias))
Записан
b2z
Support Team
*****

Репутация: +710/-0
Offline Offline

Пол: Мужской
Сообщений: 7532


Разраблю понемногу


« Ответ #13 : 17.12.2015, 11:11:18 »

Могу ошибиться, но насколько я помню, router.php сначала ищет подходящий пункт меню по Itemid и в случае неуспеха оставляет url в виде "component/tags".
Именно, стандартный роутер - ищет Itemid конкретного элемента. Он такой везде в Joomla - во всех компонентах. Нет фолбэка на список.
Записан
robert
Профи
********

Репутация: +344/-11
Offline Offline

Пол: Мужской
Сообщений: 3586


« Ответ #14 : 17.12.2015, 11:30:53 »

Нет фолбэка на список.
Исключение - если он активный. Интересно, почему?
P.S. Ведь если не найдется пункта меню для конкретного элемента, то логично использовать существующий пункт меню списка, так? В общем, думаю, что всю систему образования ссылок нужно менять.
« Последнее редактирование: 17.12.2015, 11:43:00 от robert » Записан
b2z
Support Team
*****

Репутация: +710/-0
Offline Offline

Пол: Мужской
Сообщений: 7532


Разраблю понемногу


« Ответ #15 : 17.12.2015, 11:40:17 »

Сергей, попробуй сделать так в /components/com_tags/helpers/route.php:

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

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

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

Код
// Return the default itemid
if (isset(self::$lookup[$language]['tags']['default']))
{
return self::$lookup[$language]['tags']['default'];
}
Записан
b2z
Support Team
*****

Репутация: +710/-0
Offline Offline

Пол: Мужской
Сообщений: 7532


Разраблю понемногу


« Ответ #16 : 17.12.2015, 11:42:09 »

Исключение - если он активный. Интересно, почему?
Так активный пункт может быть не только список.
Записан
robert
Профи
********

Репутация: +344/-11
Offline Offline

Пол: Мужской
Сообщений: 3586


« Ответ #17 : 17.12.2015, 11:44:06 »

Ведь если не найдется пункта меню для конкретного элемента, то логично использовать существующий пункт меню списка, так?
Записан
b2z
Support Team
*****

Репутация: +710/-0
Offline Offline

Пол: Мужской
Сообщений: 7532


Разраблю понемногу


« Ответ #18 : 17.12.2015, 11:46:58 »

Ведь если не найдется пункта меню для конкретного элемента, то логично использовать существующий пункт меню списка, так?
Как бы да, логично. Выше я как раз предложил такое решение. Но реально нужно давать выбор, что использовать для фолбэка, а не хардкодить.
Записан
voland
Профи
********

Репутация: +487/-86
Online Online

Пол: Мужской
Сообщений: 8711


любит наш народ всякое гавно...


« Ответ #19 : 17.12.2015, 17:08:44 »

Сергей, попробуй сделать так в /components/com_tags/helpers/route.php:

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

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

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

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

Репутация: +710/-0
Offline Offline

Пол: Мужской
Сообщений: 7532


Разраблю понемногу


« Ответ #20 : 17.12.2015, 17:35:42 »

Точно

https://github.com/joomla/joomla-cms/blob/staging/components/com_tags/helpers/route.php#L155
https://github.com/joomla/joomla-cms/blob/staging/components/com_tags/helpers/route.php#L178
Записан
voland
Профи
********

Репутация: +487/-86
Online Online

Пол: Мужской
Сообщений: 8711


любит наш народ всякое гавно...


« Ответ #21 : 17.12.2015, 17:36:09 »

а 178 до первой правки или после?
Записан
b2z
Support Team
*****

Репутация: +710/-0
Offline Offline

Пол: Мужской
Сообщений: 7532


Разраблю понемногу


« Ответ #22 : 17.12.2015, 17:37:14 »

а 178 до первой правки или после?
До $active = $menus->getActive();
Записан
voland
Профи
********

Репутация: +487/-86
Online Online

Пол: Мужской
Сообщений: 8711


любит наш народ всякое гавно...


« Ответ #23 : 17.12.2015, 17:39:46 »

Угу, сделал.
Проверил - поведение не изменилось.
Записан
b2z
Support Team
*****

Репутация: +710/-0
Offline Offline

Пол: Мужской
Сообщений: 7532


Разраблю понемногу


« Ответ #24 : 17.12.2015, 17:52:52 »

Аа, я затупил. Там же else, а значит он не отработает, так как $needles всегда есть. Убери else вообще.

И первую часть кода после строки 154 воткни.
https://github.com/joomla/joomla-cms/blob/staging/components/com_tags/helpers/route.php#L154
« Последнее редактирование: 17.12.2015, 18:40:05 от b2z » Записан
voland
Профи
********

Репутация: +487/-86
Online Online

Пол: Мужской
Сообщений: 8711


любит наш народ всякое гавно...


« Ответ #25 : 17.12.2015, 18:23:46 »

Не, всё же поставь первую часть после строки 155.
О, теперь работает!
Надо запуллить!
Записан
b2z
Support Team
*****

Репутация: +710/-0
Offline Offline

Пол: Мужской
Сообщений: 7532


Разраблю понемногу


« Ответ #26 : 17.12.2015, 18:29:28 »

О, теперь работает!
Надо запуллить!
Я уже пояснял, что так просто пулл не сделать. А если кто-то не хочет, чтобы по дефу брался пункт меню списка тегов?
Записан
voland
Профи
********

Репутация: +487/-86
Online Online

Пол: Мужской
Сообщений: 8711


любит наш народ всякое гавно...


« Ответ #27 : 17.12.2015, 18:31:01 »

Ну если 99% это надо, то может есть смысл игнорировать этого кого-то?
Записан
b2z
Support Team
*****

Репутация: +710/-0
Offline Offline

Пол: Мужской
Сообщений: 7532


Разраблю понемногу


« Ответ #28 : 17.12.2015, 18:38:29 »

Ты узко мыслишь... Сразу видно, пуллов не делал Wink Харкодить нельзя, понимаешь? Ты же не для себя делаешь...

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

Репутация: +487/-86
Online Online

Пол: Мужской
Сообщений: 8711


любит наш народ всякое гавно...


« Ответ #29 : 17.12.2015, 19:03:22 »

Ты узко мыслишь... Сразу видно, пуллов не делал Wink Харкодить нельзя, понимаешь? Ты же не для себя делаешь...

Нужна свобода выбора, а это значит, что надо параметр вводить какой-то. Возможно в настройки компонента.
Эх.. пока это случится
Записан
Страниц: [1] 2 3 4   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet