Проблема с хуком "content_before_item"

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО InstantCMS 2.X

Работает только в типе контента по-умолчанию

#1 7 декабря 2017 в 10:27
Всем привет!

Создал в разрабатываемом компоненте хук "content_before_item".

Вношу изменения в поля, но изменения происходят только в том контенте, который установлен по умолчанию, если по-умолчанию не стоит не один контент, то изменения вообще нигде не происходят!

Подскажите, в чем может быть причина?
#2 7 декабря 2017 в 10:59

если по-умолчанию не стоит не один контент

Вадим Нарочный
что значит "по-умолчанию"?

Если я правильно понял то хук вызывается перед просмотром страницы контента.
Ему передается массив с полями этого контента

Ни на какие другие страницы вы повлиять этим хуком не можете.


Или я что-то не так понял?.. scratch
#3 7 декабря 2017 в 11:11
Вадим Нарочный,
Начнем сначала.
Хук content_before_item вызывается только в одном месте: в файле \system\controllers\content\actions\item_view.php
То есть срабатывать он будет только при просмотре одной записи типа контента.
Далее. Хук вызывается так:
  1. list($ctype, $item, $fields) = cmsEventsManager::hook('content_before_item', array($ctype, $item, $fields));
И логически сам хук должен содержать что-то подобное:
  1. <?php
  2.  
  3. class onContentContenBeforeItem extends cmsAction {
  4.  
  5. public function run($data){
  6.  
  7. list($ctype, $item, $fields) = $data; /*Разворачиваем входящий массив*/
  8.  
  9. //Здесь производим какие-либо действия
  10.  
  11. return array($ctype, $item, $fields); // Отправляем данные обратно
  12.  
  13. }
  14.  
  15. }
Попробуйте посмотреть прямо в хуке, что туда прилетает и что улетает. К примеру так:
  1. print_r($fields);
#4 7 декабря 2017 в 11:16
Много раз использовал хук content_before_item, никогда проблем не было, думаю ваш хук вообще не работает, так как к страницу списка не имеет отношение, а когда контент по умолчанию, вызывается хук content_before_list а не content_before_item.
Посмотрите в админке — компоненты — управление событием — возможно ваш хук ждет обновления
#5 7 декабря 2017 в 12:10

что значит "по-умолчанию"?

Sonat
В админке "Тип контента по-умолчанию"

думаю ваш хук вообще не работает, так как к страницу списка не имеет отношение, а когда контент по умолчанию, вызывается хук content_before_list а не content_before_item.

Evanescence
Хук работает только в контенте, который стоит по-умолчанию, о списке и речи не шло, все делается для шаблона item_view.php

Посмотрите в админке — компоненты — управление событием — возможно ваш хук ждет обновления

Evanescence
Я же говорю, Хук работает только в контенте, который стоит по-умолчанию, а значит он в событиях обновлен!
#6 7 декабря 2017 в 12:56
Все, друзья, разобрался.
Я заменял $item['content'], а нужно было $fields['content']['html']
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.