Работа с контентом из кода
Никто не поможет?
Есть необходимость добавлять, редактировать и удалять контент (создан собственный тип контента) прямо из кода, т.е. страница получает данные из POST и создаёт/редактирует контент. Куда рыть, где смотреть… Понятно, что нужен addContentItem видимо, но хотелось бы примеры посмотреть. Спасибо!
Тогда конкретизирую: function addContentItem($ctype, $item, $fields) — можно поподробней о входных параметрах?
И эта функция вам вряд ли подойдет для автонаполнения. Она требует id юзера. Лучше напрямую писать в базу через инсерт. В таблицах контента из обязательных полей вроде только title.
а о $ctype и $fields смотрите в model.php, что в папке core.
Спасибо за советы! Сижу, копаюсь в исходниках… Кстати в моём случае ID юзера будет поступать в POSTе, так что планирую обойтись без записи в обход модели.
тут в двух словах нереально. Вы посмотрите код, как формируется массив $item в экшне добавления контента.
И эта функция вам вряд ли подойдет для автонаполнения. Она требует id юзера. Лучше напрямую писать в базу через инсерт. В таблицах контента из обязательных полей вроде только title.
а о $ctype и $fields смотрите в model.php, что в папке core.
Просто не совсем понимаю, зачем мне нужны $fields...$ctype и $item вполне достаточно для формирования новой записи контента.
получается из$fields
с помощью одного простенького метода в model. Я не стал заморачиваться, зачем они :)$ctype
получается из$fields
с помощью одного простенького метода в model. Я не стал заморачиваться, зачем они :)$ctype
Насколько я понимаю $fields нужен для заполнения формы… мне это как бы и не нужно.
Делаю getContentItem, получаю в $item уже имеющуюся запись и пытаюсь её же и записать с помощью addContentItem.
Не пишет. Меняю id в $item, другие поля дергаю — не хочет писать. Может из разрабов кто поможет?
Приветствую! Спасибо, что зашли!
Antuanett, Если вам нужно просто заполнить таблицу cms_con_КОНТЕНТ, покажите свой код, то что уже имеется, то есть какие переменные получаете через POST?
В POSTе получаю ряд переменных, под них есть поля в созданном мною типе контента. Вопрос что должно быть передано addContentItem($ctype, $item, $fields)? $ctype знаю, по нему получаю $fields = $content_model->getContentFields($ctype['name']), в $item передаю свои переменные, которые нужно записать, но ничего не происходит...
$content_model = cmsCore::getModel('content'); $ctype = $content_model->getContentTypeByName('battle'); $content_model->orderBy('ordering'); $fields = $content_model->getContentFields($ctype['name']); ( 'title'=>'АвтоБой из POST', 'user'=>$askinguser, 'user'=>$askinguser['id'], 'content'=>'Мой контент', 'team1'=>'123123213,123123213,123123213', 'team2'=>'5678567567,567567567567,567567567', ); $item['is_approved'] = !$ctype['is_premod_add'] || $is_moderator; $item['parent_type'] = null; $item['id'] = 55; $item['parent_title'] = null; $item['parent_url'] = null; $item['is_parent_hidden'] = null; $item['date_pub_end'] = false; $item = cmsEventsManager::hook("content_before_add", $item); $item = cmsEventsManager::hook("content_{$ctype['name']}_before_add", $item); $item = $content_model->addContentItem($ctype, $item, $fields);
Эти данные
$item['parent_type'] = null; $item['parent_title'] = null; $item['parent_url'] = null; $item['is_parent_hidden'] = null; $item['date_pub_end'] = false;
'user'=>$askinguser, 'user'=>$askinguser['id'],
Antuanett, сделайте, при в ставке в базу ИД записи само присвоится,
Эти данныепроставятся автоматически. А вот почему у вас нет $item['user_id'], но почему-то аж два раза
$item['parent_type'] = null; $item['parent_title'] = null; $item['parent_url'] = null; $item['is_parent_hidden'] = null; $item['date_pub_end'] = false;— непонятно. Видимо второе надо исправить на user_id. Без него запись если и пропишется в БД, то не выведется для просмотра.
'user'=>$askinguser, 'user'=>$askinguser['id'],
ТОЧНО! Спасибо большое, запутался в юзере и его ид. Исправил, запись в базе создалась, но с пустым slug и is_aproved, соответственно в листинге на сайте записи не видно. Добавил в БД slug и is_aproved вручную — запись в листинге появилась, но саму запись детально посмотреть не могу — 404.
Видимо проблема в slug?
А вы как его вручную добавляли? В типах контента есть некий шаблон для slug согласно которого и должен выглядеть url записи. Для этого при добавлении записи в БД сразу идёт её обновление с добавлением slug полученное специальнойВидимо проблема в slug?
if(!$item['user_id']) { $user = cmsUser::getInstance(); $item['user_id'] = $user->id; }