Обновление контента из компонента

#1 6 ноября 2017 в 14:15
Привет всем)) скажите пожалуйста я правильно сделал обновление контента из моего компонента. Или есть какой то более простой путь?

  1.  
  2. //Достали модель контента
  3. $model = cmsCore::getModel('content');
  4.  
  5. //Нашли наш контент во всем этом
  6. foreach ($model->getContentTypes() as $c) {
  7. if ($c['name'] == $options['site_name_content']) {
  8. $ctype = $c;
  9. break;
  10. }
  11. }
  12.  
  13. // Получаем поля для данного типа контента
  14. $fields = $model->orderBy('ordering')->getContentFields($ctype['name']);
  15.  
  16. //Получаем нашу запись
  17. $item = $model->getContentItem($options['site_name_content'], $id_item);
  18.  
  19. //Меняем счетчик
  20. $item[$options['site_url_counter']] = (int) $item[$options['site_url_counter']] + 1;
  21.  
  22. //Сохраняем
  23. $res = $model->updateContentItem($ctype, $id_item, $item, $fields);
  24.  
а то такое ощущение что усложнил процедуру где можно было в принципе то одним запросом обойтись))
но хотелось сделать все в стиле движка)
#2 6 ноября 2017 в 16:12
kaktus, всё зависит от ситуации. Когда надо обработать данные методами классов полей или произвести обработку хуками участвующими при редактировании поле, тогда да, надо получаться поля, и прочее. Но в вашем конкретном случае достаточно обновить данные одного поле. Поэтому достаточно замутить нечто такое
  1. $content_model = cmsCore::getModel('content');
  2. $res = $content_model->update($content_model->table_prefix.$options['site_name_content'], $id_item, array('site_url_counter' => $options['site_url_counter']));
  3.  
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.