Хуки в ICMS2

#1 23 августа 2014 в 23:53
Вопрос больше к разработчикам или тем кто уже разобрался в структуре кмс.
Почему выполнение некоторых хуков с возвратом данных происходит, а некоторых без возврата, например, в контенте:
  1. cmsEventsManager::hook("content_add", $ctype);
  2. $form = cmsEventsManager::hook("content_{$ctype['name']}_form", $form);
И почему индивидуальный хук для для каждого вида контента имеется (2 строка), а общего нет, хотя наоборот логичнее было бы?
#2 24 августа 2014 в 08:04
а файл content_{$ctype['name']}_form существует? Если вы сами его создали то нужно добавить в manifest.php
Я вот так вывожу хук:
  1. $hooks_html = cmsEventsManager::hookAll("content_{$ctype['name']}_item_html", $item);
  2. if ($hooks_html) { echo html_each($hooks_html); } else { echo 'Проблема при загрузке хука.'; }
#3 24 августа 2014 в 08:16

Почему выполнение некоторых хуков с возвратом данных происходит, а некоторых без возврата

Aryuts
каждый хук имеет свою функцию или задачу и результатом выполнения этой задачи, могут быть возврат данных или true/false или ничего. В случае, если нам надо просто внести изменения в базе данных, то достаточно выполнить хук и забыть о его существовании. В случае, когда у нас есть часть данных и нам нужно их обработать определённым методом или способом, тогда хук возвращает результат своих действий для дальнейшей работы.

почему индивидуальный хук для для каждого вида контента имеется (2 строка), а общего нет

Aryuts
у каждого типа контента свой набор таблиц в базе данных. Чтобы вносить изменения или получать данные для конкретного типа контента, а не для всех сразу.
#4 24 августа 2014 в 11:38

а файл content_{$ctype['name']}_form существует? Если вы сами его создали то нужно добавить в manifest.php

Evanescence
Спасибо за ответ, но это все понятно. Я привел хуки, которые создали авторы в контенте.

каждый хук имеет свою функцию или задачу ...

Loadырь
Тут я в целом с Вами согласен, но ведь могут быть задачи, где вернуть данные все же потребуется, тем более, что метод cmsEventsManager::hook по сути данные возвращает.

Чтобы вносить изменения или получать данные для конкретного типа контента, а не для всех сразу.

Loadырь
Да, но вот только в общем хуке обработать данные для каждого вида контента можно, а в данном случае придется дублировать одни и теже действия в каждом хуке. Кроме того, если пользователь создаст новый вид контента (в админке), то ему придется вручную создать ("ковырятся" в коде) еще один хук для своего контента, чтобы с его контентом проводились аналогичные действия.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.