test.tdl/articles/war/33-trydtsat-tri-bogatyrya.html
такое
test.tdl/war/33-trydtsat-tri-bogatyrya.html
И… не дождался. Стал разбираться и выяснил следующее.
В виджетах ссылка на контент формируется в функции href_to определённая в system/libs/html.helper.php
function href_to($controller, $action = '', $params = false){ $lang_href = cmsCore::getLanguageHrefPrefix(); return cmsConfig::get('root') .($lang_href ? $lang_href.'/' : ''). href_to_rel($controller, $action, $params); } function href_to_rel($controller, $action = '', $params = false){ // лишнее покоцано //.... $ctype_default = cmsConfig::get('ctype_default'); if ($ctype_default && $ctype_default == $controller){ $controller = ''; } } // лишнее покоцано //.... } }
Оказалось, что в href_to должна попадать ссылка с префиксом .html, что следует из регулярного выражения (в регулярке маленькая неточность, которая вообщем-то не влияет на результат). Например: war/33-trydtsat-tri-bogatyrya.html
Но в href_to попадает такая строка war/33-trydtsat-tri-bogatyrya и… регулярка не срабатывает и очистки контролёра $controller не происходит.
В результате виджеты выводят ссылки на контент без учёта настройки типа контента по умолчанию. А что — всё работает по прежнему )))
Как оказалось, в файлах шаблонов в папке templates/default/controllers/content/widgets/list/*.* есть строки, которые неверно передают параметры:
// файл templates/default/controllers/content/widgets/list/list_basic.tpl.php (строка 7) $url = href_to($ctype['name'], $item['slug']) . '.html';
Префикс .html в самом буквальном смысле этого слова остаётся за скобками
Исправляется перемещением скобки вправо:
// файл templates/default/controllers/content/widgets/list/list_basic.tpl.php (строка 7) $url = href_to($ctype['name'], $item['slug'] . '.html');
// Так будет правильно $controller = ''; }