Как сделать необязательным выбор категории при добавлении контента?
Но добавление контента без категории запрещено.
Иногда всё-таки требуется переключить категорию. Кому это надо — те знают, как переключить.
Просто хотелось бы облегчить жизнь остальным пользователям и не заставлять их каждый раз выбирать категорию.
Пробовал манипулировать хуком content_мойтипконтента_form.php — успеха не добился.
При невыбранной категории получаю ошибку "Найдены ошибки в форме".
Если перейти к добавлению контента из нужной категории — выбор не требуется, категория уже заполнена.
Может кто знает, как заполнить категорию значением по умолчанию?
'default' => 100500, // - тут id категории по умолчанию
там вроде только один хук content_item_form, в нем и проверяете тип контента и в нем же заменяете поле с категорией на такую же с
Как это сделать?
и где править?
Там есть еще в \system\controllers\content\actions\item_add.php хуктам вроде только один хук content_item_form
И вроде и форма туда отправляется, но все манипуляции с этой формой приводят к ошибке. Даже просто разпаковка массива и отправка его обратно
приводит к ошибке
Notice: Undefined offset: 0 in D:\OSPanel\domains\NO211.tes\system\controllers\content\frontend.php on line 786
Notice: Undefined offset: 1 in D:\OSPanel\domains\NO211.tes\system\controllers\content\frontend.php on line 786
Notice: Undefined offset: 2 in D:\OSPanel\domains\NO211.tes\system\controllers\content\frontend.php on line 786
А вот манипуляции с формой в content_item_form оказались возможны и успешны!
Сделал так:
$form->structure['category']['childs']['category_id']->default = 3;
Loadырь, огромное спасибо!
На 2.12.2 ошибок не видел. Сделал в своем компоненте хук для новостей с таким содержимымприводит к ошибке
class onItoolsContentNewsForm extends cmsAction {
public function run($data){
list($form, $item) = $data;
$structure = $form->getStructure();
$structure['category']['childs']['category_id']->default = 3;
$form->setStructure($structure);
return array($form, $item);
}
}
Сделал, как Вы написали.
Все ошибки пропали.
Даже если отправлять обратно return $data; — всё равно работает после $form->setStructure($structure);
Видимо, что-то неявно сдвигается в мозгу php.
Видимо придётся углубиться в изучение объектов php…
надо правильно распаковать форму и потом обратно правильно запаковать
Так я собственно и спрашивал, как это сделать.надо правильно распаковать форму и потом обратно правильно запаковать
Срабатывают уже две строчки.
$structure = $form->getStructure(); $structure['category']['childs']['category_id']->default = 3;
-----------------------------------------------------------------------------
Также решил вопрос по отображению выбора группы для этого контента только для админов.
$structure['group_wrap'] = $user->is_admin ? $structure['group_wrap'] : null;
Верите-нет? Помогло! (сейчас дополню как)
Вот скажи мне американец, в чём сила?
А сила в коде. У кого знание кода, тот и сильней.
Спасибо! Ris!
Как-то субъективно, по дилетантски забредаю туда, куда сам Ris велел,
и, методом интуитивного тыка просто ставлю ВМЕСТО «0»,
номер той категории, которая нужна.
Выставил «1», и теперь по умолчанию стоит корневая категория.