Работа с контентом из кода

 
Посетитель
no avatar
Сообщений: 70
Есть необходимость добавлять, редактировать и удалять контент (создан собственный тип контента) прямо из кода, т.е. страница получает данные из POST и создаёт/редактирует контент. Куда рыть, где смотреть...Понятно, что нужен addContentItem видимо, но хотелось бы примеры посмотреть. Спасибо!
Посетитель
no avatar
Сообщений: 70
Antuanett:

Есть необходимость добавлять, редактировать и удалять контент (создан собственный тип контента) прямо из кода, т.е. страница получает данные из POST и создаёт/редактирует контент. Куда рыть, где смотреть...Понятно, что нужен addContentItem видимо, но хотелось бы примеры посмотреть. Спасибо!
Никто не поможет?
Тогда конкретизирую : function addContentItem($ctype, $item, $fields) - можно поподробней о входных параметрах?
Редактировалось: 1 раз (Последний: 28 февраля 2015 в 00:31)
Реклама
cms
Посетитель
small user social cms
МедальПочетный донор проектаАвторитет форумаКубок зрительских симпатийПочетный донор проекта
Сообщений: 2552
тут в двух словах нереально. Вы посмотрите код, как формируется массив $item в экшне добавления контента.

И эта функция вам вряд ли подойдет для автонаполнения. Она требует id юзера. Лучше напрямую писать в базу через инсерт. В таблицах контента из обязательных полей вроде только title.

а о $ctype и $fields смотрите в model.php, что в папке core.
Виджеты, поля и компоненты для instantcms 2 http://www.zau4man.ru/
Посетитель
no avatar
Сообщений: 70
Zau4man:

тут в двух словах нереально. Вы посмотрите код, как формируется массив $item в экшне добавления контента.

И эта функция вам вряд ли подойдет для автонаполнения. Она требует id юзера. Лучше напрямую писать в базу через инсерт. В таблицах контента из обязательных полей вроде только title.

а о $ctype и $fields смотрите в model.php, что в папке core.
Спасибо за советы! Сижу, копаюсь в исходниках..Кстати в моём случае ID юзера будет поступать в POSTе , так что планирую обойтись без записи в обход модели.
Просто не совсем понимаю, зачем мне нужны $fields...$ctype и $item вполне достаточно для формирования новой записи контента.
Редактировалось: 1 раз (Последний: 28 февраля 2015 в 01:21)
Посетитель
small user social cms
МедальПочетный донор проектаАвторитет форумаКубок зрительских симпатийПочетный донор проекта
Сообщений: 2552
Antuanett:
$fields
получается из
Antuanett:
$ctype
с помощью одного простенького метода в model. Я не стал заморачиваться, зачем они :)
Виджеты, поля и компоненты для instantcms 2 http://www.zau4man.ru/
Посетитель
no avatar
Сообщений: 70
Zau4man:

Antuanett:
$fields
получается из
Antuanett:
$ctype
с помощью одного простенького метода в model. Я не стал заморачиваться, зачем они :)

Насколько я понимаю $fields нужен для заполнения формы...мне это как бы и не нужно.
Делаю getContentItem, получаю в $item уже имеющуюся запись и пытаюсь её же и записать с помощью addContentItem.

Не пишет. Меняю id в $item , другие поля дергаю - не хочет писать. Может из разрабов кто поможет?
Редактировалось: 1 раз (Последний: 28 февраля 2015 в 15:30)
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1159
Antuanett, Если вам нужно просто заполнить таблицу cms_con_КОНТЕНТ, покажите свой код, то что уже имеется, то есть какие переменные получаете через POST?
Дополнения для InstantCMS 2 | Готовый сайт Доска объявлений
Посетитель
no avatar
Сообщений: 70
Evanescence:

Antuanett, Если вам нужно просто заполнить таблицу cms_con_КОНТЕНТ, покажите свой код, то что уже имеется, то есть какие переменные получаете через POST?
Приветствую! Спасибо, что зашли!
В POSTе получаю ряд переменных, под них есть поля в созданном мною типе контента. Вопрос что должно быть передано addContentItem($ctype, $item, $fields) ? $ctype знаю, по нему получаю $fields = $content_model->getContentFields($ctype['name']), в $item передаю свои переменные, которые нужно записать, но ничего не происходит...
Код PHP:
  1.  
  2. $content_model = cmsCore::getModel('content');
  3. $ctype = $content_model->getContentTypeByName('battle');
  4. $content_model->orderBy('ordering');
  5. $fields = $content_model->getContentFields($ctype['name']);
  6. $item=Array
  7. (
  8. 'title'=>'АвтоБой из POST',
  9. 'user'=>$askinguser,
  10. 'user'=>$askinguser['id'],
  11. 'content'=>'Мой контент',
  12. 'team1'=>'123123213,123123213,123123213',
  13. 'team2'=>'5678567567,567567567567,567567567',
  14. );
  15. unset($item['ctype_name']);
  16. unset($item['ctype_id']);
  17. $item['is_approved'] = !$ctype['is_premod_add'] || $is_moderator;
  18. $item['parent_type'] = null;
  19. $item['id'] = 55;
  20. $item['parent_title'] = null;
  21. $item['parent_url'] = null;
  22. $item['is_parent_hidden'] = null;
  23. $item['date_pub'] = strtotime(date('Y-m-d', time()));
  24. $item['date_pub_end'] = false;
  25. $item = cmsEventsManager::hook("content_before_add", $item);
  26. $item = cmsEventsManager::hook("content_{$ctype['name']}_before_add", $item);
  27. $item = $content_model->addContentItem($ctype, $item, $fields);
  28.  
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 3549
Antuanett, сделайте
Код PHP:
  1. unset($item['id']);
, при в ставке в базу ИД записи само присвоится,
Эти данные
Код PHP:
  1. $item['parent_type'] = null;
  2. $item['parent_title'] = null;
  3. $item['parent_url'] = null;
  4. $item['is_parent_hidden'] = null;
  5. $item['date_pub'] = strtotime(date('Y-m-d', time()));
  6. $item['date_pub_end'] = false;
проставятся автоматически. А вот почему у вас нет $item['user_id'], но почему-то аж два раза
Код PHP:
  1. 'user'=>$askinguser,
  2. 'user'=>$askinguser['id'],
- непонятно. Видимо второе надо исправить на user_id. Без него запись если и пропишется в БД, то не выведется для просмотра.
Посетитель
no avatar
Сообщений: 70
Loadырь:

Antuanett, сделайте
Код PHP:
  1. unset($item['id']);
, при в ставке в базу ИД записи само присвоится,
Эти данные
Код PHP:
  1. $item['parent_type'] = null;
  2. $item['parent_title'] = null;
  3. $item['parent_url'] = null;
  4. $item['is_parent_hidden'] = null;
  5. $item['date_pub'] = strtotime(date('Y-m-d', time()));
  6. $item['date_pub_end'] = false;
проставятся автоматически. А вот почему у вас нет $item['user_id'], но почему-то аж два раза
Код PHP:
  1. 'user'=>$askinguser,
  2. 'user'=>$askinguser['id'],
- непонятно. Видимо второе надо исправить на user_id. Без него запись если и пропишется в БД, то не выведется для просмотра.

ТОЧНО! Спасибо большое, запутался в юзере и его ид. Исправил, запись в базе создалась, но с пустым slug и is_aproved, соответственно в листинге на сайте записи не видно. Добавил в БД slug и is_aproved вручную - запись в листинге появилась, но саму запись детально посмотреть не могу - 404.
Видимо проблема в slug?
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 3549
Antuanett:
Видимо проблема в slug?
А вы как его вручную добавляли? В типах контента есть некий шаблон для slug согласно которого и должен выглядеть url записи. Для этого при добавлении записи в БД сразу идёт её обновление с добавлением slug полученное специальной
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 3549
Что-то отправилось раньше чем дописал. Специальной функцией getItemSlug($ctype, $item, $fields);
Посетитель
no avatar
Сообщений: 70
Разобрался. slug передавать не надо - делается автоматом. Еще был затык, запись создается только если авторизован на сайте, пришлось делать хак content/model.php:
Код PHP:
  1.  
  2. if(!$item['user_id'])
  3. {
  4. $user = cmsUser::getInstance();
  5. $item['user_id'] = $user->id;
  6. }
Посетитель
no avatar
Сообщений: 70
Спасибо ответившим. Эту задачу решил. Впереди другие... cry
В начало страницы
Предыдущая темаСледующая тема Перейти на форум: