Категория по умолчанию. 2.X

Как сделать необязательным выбор категории при добавлении контента?

 
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатийПочетный донор проекта
Сообщений: 2644
Имеется тип контента, где выбор категории требуется крайне редко. И весь контент этого типа, как правило в одной категории.
Но добавление контента без категории запрещено.
Иногда всё-таки требуется переключить категорию. Кому это надо - те знают, как переключить.
Просто хотелось бы облегчить жизнь остальным пользователям и не заставлять их каждый раз выбирать категорию.
Пробовал манипулировать хуком content_мойтипконтента_form.php - успеха не добился.
При невыбранной категории получаю ошибку "Найдены ошибки в форме".
Если перейти к добавлению контента из нужной категории - выбор не требуется, категория уже заполнена.
Может кто знает, как заполнить категорию значением по умолчанию?
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 3546
Ris, там вроде только один хук content_item_form, в нем и проверяете тип контента и в нем же заменяете поле с категорией на такую же с
Код PHP:
  1. 'default' => 100500, // - тут id категории по умолчанию
Но надо правильно распаковать форму и потом обратно правильно запаковать в $form
Реклама
cms
Посетитель
small user social cms
Сообщений: 577
Loadырь:
там вроде только один хук content_item_form, в нем и проверяете тип контента и в нем же заменяете поле с категорией на такую же с

Как это сделать?
и где править?
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатийПочетный донор проекта
Сообщений: 2644
Loadырь:
там вроде только один хук content_item_form
Там есть еще в \system\controllers\content\actions\item_add.php хук
Код PHP:
  1. list($form, $item) = cmsEventsManager::hook("content_{$ctype['name']}_form", array($form, $item));
И вроде и форма туда отправляется, но все манипуляции с этой формой приводят к ошибке. Даже просто разпаковка массива и отправка его обратно
Код PHP:
  1. list($form, $item) = $data;
  2. return array($form, $item);
приводит к ошибке
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 оказались возможны и успешны!
Сделал так:
Код PHP:
  1. $form->structure['category']['childs']['category_id']->default = 3;
В результате, при добавлении новой единицы контента, в форме сразу выбрана нужная категория! dance

Loadырь, огромное спасибо!
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 3546
Ris:
приводит к ошибке
На 2.12.2 ошибок не видел. Сделал в своем компоненте хук для новостей с таким содержимым
Спойлер
все работает нормально.
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатийПочетный донор проекта
Сообщений: 2644
Loadырь,
Сделал, как Вы написали.
Все ошибки пропали.
Даже если отправлять обратно return $data; - всё равно работает после $form->setStructure($structure);
Видимо, что-то неявно сдвигается в мозгу php.
Видимо придётся углубиться в изучение объектов php...
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 3546
Ris, я же говорил
Loadырь:
надо правильно распаковать форму и потом обратно правильно запаковать
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатийПочетный донор проекта
Сообщений: 2644
Loadырь:
надо правильно распаковать форму и потом обратно правильно запаковать
Так я собственно и спрашивал, как это сделать. zst

Срабатывают уже две строчки.
Код PHP:
  1. $structure = $form->getStructure();
  2. $structure['category']['childs']['category_id']->default = 3;
Всё остальное, как выяснилось, не обязательно...
-----------------------------------------------------------------------------
Также решил вопрос по отображению выбора группы для этого контента только для админов.
Код PHP:
  1. $structure['group_wrap'] = $user->is_admin ? $structure['group_wrap'] : null;
Редактировалось: 1 раз (Последний: 27 мая 2019 в 00:59)
В начало страницы
Предыдущая темаСледующая тема Перейти на форум:
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.