Sipaj
0
Репутация
0
Рейтинг
Проблема решена, закрываю тему.
О, в релизе 2.10.1 пишут, что этот косяк исправлен.
Приветствую уважаемые форумчане!
Тоже этим вопросом озадачен давно и хотел уже создать тему, но нашел ее уже созданной)))
У меня такая же проблема, что когда переходишь с виджета, добавляется системное имя, когда переходишь со списка, системного имени типа контента нет.
Не знаю, проблема ли это, но скорее всего да и кто-нибудь еще сталкивался с подобным?
Версия 2.10
Кстати, в версии 2.10 все эти неточности остались без изменений.
Установил тип контента по умолчанию на Статьи и ожидал увидеть ссылки в виджетах типа Список контента в соответствующем виде. Вместо
test.tdl/articles/war/33-trydtsat-tri-bogatyrya.html
такое
test.tdl/war/33-trydtsat-tri-bogatyrya.html
И… не дождался. Стал разбираться и выяснил следующее.
В виджетах ссылка на контент формируется в функции href_to определённая в system/libs/html.helper.php
Смотрим код и видим попытку очистить $controller если он совпадает с установленным типом контента по умолчанию. Но этого не происходит.
Оказалось, что в href_to должна попадать ссылка с префиксом .html, что следует из регулярного выражения (в регулярке маленькая неточность, которая вообщем-то не влияет на результат). Например: war/33-trydtsat-tri-bogatyrya.html
Но в href_to попадает такая строка war/33-trydtsat-tri-bogatyrya и… регулярка не срабатывает и очистки контролёра $controller не происходит.
В результате виджеты выводят ссылки на контент без учёта настройки типа контента по умолчанию. А что — всё работает по прежнему )))
Как оказалось, в файлах шаблонов в папке templates/default/controllers/content/widgets/list/*.* есть строки, которые неверно передают параметры:
именно здесь передаётся параметр в $item['slug'] например war/33-trydtsat-tri-bogatyrya, тогда как должен был передать war/33-trydtsat-tri-bogatyrya.html
Префикс .html в самом буквальном смысле этого слова остаётся за скобками
Исправляется перемещением скобки вправо:
После чего регулярка правильно отрабатывает. Ну и устраните неточность в регулярке функции href_to_rel в файле system/libs/html.helper.php
Движок: InstantsCms 2.9.0
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 = ''; }
Да, таки поле юзера в форме добавления не появляется. В принципе, он мне не нужен, но судя по обязательным полям, появится обязан. Но его нет. Моя проблема лечится так, как в картинке — "Значение из профиля пользователя" устанавливается в Нет
Прикрепленный файл
instant01_prp5o.jpg
169 Кб
Тоже столкнулся с такой проблемой. (ICMS 2.8 обновлённый с 2.7.2) Создал тип контента "Каталог вэб сайтов", уже после обновления до ICMS 2.8. Добавляю запись, жму сохранить и вываливается белый экран с такими ошибками:
Однако сама запись корректно добавляется и из админки также корректно редактируется.
Посмотрел на что он ругается и не понял...
В чём может быть проблема? Или — откуда вызывается public function parse?
Warning: Illegal string offset 'nickname' in D:\OpenServer\domains\city\system\fields\user.php on line 17
Посмотрел на что он ругается и не понял...
class fieldUser extends cmsFormField { public $title = LANG_PARSER_USER; public $is_public = false; public $sql = 'varchar(255) NULL DEFAULT NULL'; public $filter_type = 'int'; public $filter_hint = LANG_PARSER_USER_FILTER_HINT; public $allow_index = false; public function getInput($value) { return html_input('text', $this->name, $value); } public function parse($value){ return '<a href="'.href_to('users', $value['id']).'">'.htmlspecialchars($value['nickname']).'</a>'; // Ругается на эту строку } public function applyFilter($model, $value) { $users_model = cmsCore::getModel('users'); $users = $users_model->filterLike('nickname', "%{$value}%")->getUsers(); if (!$users){ return $model->filterIsNull($this->name . '_id'); } else { $users_ids = array_collection_to_list($users, 'id', 'id'); return $model->filterIn($this->name . '_id', $users_ids); } } }