Некорректный вывод ссылок в виджетах при установленном типе контента по-умолчанию 2.X

баг

 
Посетитель
no avatar
Сообщений: 6
Установил тип контента по умолчанию на Статьи и ожидал увидеть ссылки в виджетах типа Список контента в соответствующем виде. Вместо
http://test.tdl/articles/war/33-trydtsat-tri-bogatyrya.html
такое
http://test.tdl/war/33-trydtsat-tri-bogatyrya.html
И... не дождался. Стал разбираться и выяснил следующее.
В виджетах ссылка на контент формируется в функции href_to определённая в system/libs/html.helper.php
Код PHP:
  1. function href_to($controller, $action = '', $params = false){
  2.  
  3. $lang_href = cmsCore::getLanguageHrefPrefix();
  4.  
  5. return cmsConfig::get('root') .($lang_href ? $lang_href.'/' : ''). href_to_rel($controller, $action, $params);
  6.  
  7. }
  8.  
  9. function href_to_rel($controller, $action = '', $params = false){
  10.  
  11. // лишнее покоцано
  12. //....
  13.  
  14. $ctype_default = cmsConfig::get('ctype_default');
  15.  
  16. if ($ctype_default && $ctype_default == $controller){
  17. if (preg_match('/([a-z0-9\-\/{}]+)(.html|\/view\-[a-z0-9\-_]+)$/i', $action)){
  18. $controller = '';
  19. }
  20. }
  21. // лишнее покоцано
  22. //....
  23. }
  24.  
  25. return trim($href, '/');
  26.  
  27. }
Смотрим код и видим попытку очистить $controller если он совпадает с установленным типом контента по умолчанию. Но этого не происходит.
Оказалось, что в href_to должна попадать ссылка с префиксом .html, что следует из регулярного выражения (в регулярке маленькая неточность, которая вообщем-то не влияет на результат). Например: war/33-trydtsat-tri-bogatyrya.html
Но в href_to попадает такая строка war/33-trydtsat-tri-bogatyrya и... регулярка не срабатывает и очистки контролёра $controller не происходит.

В результате виджеты выводят ссылки на контент без учёта настройки типа контента по умолчанию. А что - всё работает по прежнему )))

Как оказалось, в файлах шаблонов в папке templates/default/controllers/content/widgets/list/*.* есть строки, которые неверно передают параметры:
Код PHP:
  1. // файл templates/default/controllers/content/widgets/list/list_basic.tpl.php (строка 7)
  2. $url = href_to($ctype['name'], $item['slug']) . '.html';
именно здесь передаётся параметр в $item['slug'] например war/33-trydtsat-tri-bogatyrya, тогда как должен был передать war/33-trydtsat-tri-bogatyrya.html
Префикс .html в самом буквальном смысле этого слова остаётся за скобками laugh
Исправляется перемещением скобки вправо:
Код PHP:
  1. // файл templates/default/controllers/content/widgets/list/list_basic.tpl.php (строка 7)
  2. $url = href_to($ctype['name'], $item['slug'] . '.html');
После чего регулярка правильно отрабатывает. Ну и устраните неточность в регулярке функции href_to_rel в файле system/libs/html.helper.php
Код PHP:
  1. // Так будет правильно
  2. if (preg_match('/([a-z0-9\-\/{}]+)(\.html|\/view\-[a-z0-9\-_]+)$/i', $action)){
  3. $controller = '';
  4. }
Движок: InstantsCms 2.9.0
Редактировалось: 2 раз (Последний: 14 марта 2018 в 22:16)
Посетитель
small user social cms
МедальПочетный донор проектаКубок зрительских симпатийАвторитет форумаПочетный донор проекта
Сообщений: 2814
@Sipaj:
Исправляется перемещением скобки вправо:
Может не надо?
Украинский для инстант
Реклама
cms
Посетитель
small user social cms
МедальПочетный донор проекта
Сообщений: 641
Приветствую уважаемые форумчане!
Тоже этим вопросом озадачен давно и хотел уже создать тему, но нашел ее уже созданной)))
У меня такая же проблема, что когда переходишь с виджета, добавляется системное имя, когда переходишь со списка, системного имени типа контента нет.
Не знаю, проблема ли это, но скорее всего да и кто-нибудь еще сталкивался с подобным?
Версия 2.10
Посетитель
no avatar
Сообщений: 6
skewes:

Приветствую уважаемые форумчане!
Тоже этим вопросом озадачен давно и хотел уже создать тему, но нашел ее уже созданной)))
У меня такая же проблема, что когда переходишь с виджета, добавляется системное имя, когда переходишь со списка, системного имени типа контента нет.
Не знаю, проблема ли это, но скорее всего да и кто-нибудь еще сталкивался с подобным?
Версия 2.10

Кстати, в версии 2.10 все эти неточности остались без изменений.
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1549
Создавайте тикет на гите, смысл в свалке форума писать о таких проблемах?
Люблю эту CMS!
Я немного художествую тут: http://virelart.ru :)
Пока по большей части выкладываюсь тут vk.com/virelart. p.s.: пасибки можно в карму :3
Посетитель
no avatar
Сообщений: 6
О, в релизе 2.10.1 пишут, что этот косяк исправлен.
Редактировалось: 1 раз (Последний: 7 июля 2018 в 01:47)
Посетитель
no avatar
Сообщений: 6
Проблема решена, закрываю тему.
В начало страницы
Предыдущая темаСледующая тема Перейти на форум: