Обработка ноды при помощи Rules при создании через Feeds

Главные вкладки

Аватар пользователя accce accce 8 ноября 2012 в 17:11

Здравствуйте!

Помогите разобраться в проблеме.

Декорации: на сайт посредством Feeds импортируется лента (не созданием материала, а через планировщик), из содержимого которой автоматически создаются ноды.Есть необходимость, чтобы содержимое нод автоматически обрабатывалось перед публикацией (убирались некоторые ненужные элементы, копировались картинки по ссылкам, создавался тизер и т.п.), что сделал при помощи Rules (настроил на событие "Content is going to be saved", и далее через PHP-вставку настраиваю параметры самой ноды).

Проблема: при создании ноды заполняются все прописанные в скрипте поля (форматы, язык, таксономия), но само $node->body остается без изменений (в итоговом материале там соответственно исходное содержимое которое было в ленте).
Пытаюсь делать примерно так: $node->body = preg_replace('some_expression','', $node->body)
Что интересно, если получившийся материал я сохраняю вручную (открываю для редактирования и сразу жму "Сохранить"), то триггер срабатывает снова и на выходе получаю в $node->body то что хотел!

Догадываюсь, что при создании материала посредством Feeds исходный текст хранится где то совсем в другом месте, в не в $node, но где именно, додуматься не могу пока что.

Буду очень признателен за ценные идеи.

Комментарии

Аватар пользователя accce accce 9 ноября 2012 в 0:21

imarat wrote:
ноде->боди - это массив

в 7-м друпале. В 6-м тоже? И почему триггер при ручном сохранении срабатывает как надо?

Аватар пользователя accce accce 9 ноября 2012 в 1:54

Речь идет о 6-м.

И как тогда корректно написать
<?php $node->body preg_replace('some_expression',''$node->body);?>
с помощью токенов?

З.Ы. Кстати, если я просто пишу <?php $node->body 'some_text';?> то все ОК, содержимое ноды заменяется с первого раза.
Т.е. можно сделать вывод: при создании ноды модулем Feeds исходное содержимое находится где то непонятно где, и вставляется в боди уже после обработки триггером (т.е. содержимое из ленты вставляется только если боди после триггера остается пустой). Где искать? Своих знаний пока что не хватает чтобы выяснить.

З.Ы.Ы. $node_unchanged проверял, результат тот же.

Аватар пользователя imarat imarat 9 ноября 2012 в 8:11

"accce" wrote:
И как тогда корректно написать
<?php $node->body = preg_replace('some_expression','', $node->body);?>
с помощью токенов?

примерно так

<?php $node->body = preg_replace('some_expression','', '[node:body]' );?>

Аватар пользователя hypnoser hypnoser 29 апреля 2015 в 10:38

Подключаюсь к вопросу. Проблема еще существует. Ноды, созданные Feeds, не реагируют на дополнительные требования при их сохранении, почему-то. Если сохранять вручную все работает на ура!

Не нашли решение?