Здравствуйте!
Помогите разобраться в проблеме.
Декорации: на сайт посредством Feeds импортируется лента (не созданием материала, а через планировщик), из содержимого которой автоматически создаются ноды.Есть необходимость, чтобы содержимое нод автоматически обрабатывалось перед публикацией (убирались некоторые ненужные элементы, копировались картинки по ссылкам, создавался тизер и т.п.), что сделал при помощи Rules (настроил на событие "Content is going to be saved", и далее через PHP-вставку настраиваю параметры самой ноды).
Проблема: при создании ноды заполняются все прописанные в скрипте поля (форматы, язык, таксономия), но само $node->body остается без изменений (в итоговом материале там соответственно исходное содержимое которое было в ленте).
Пытаюсь делать примерно так: $node->body = preg_replace('some_expression','', $node->body)
Что интересно, если получившийся материал я сохраняю вручную (открываю для редактирования и сразу жму "Сохранить"), то триггер срабатывает снова и на выходе получаю в $node->body то что хотел!
Догадываюсь, что при создании материала посредством Feeds исходный текст хранится где то совсем в другом месте, в не в $node, но где именно, додуматься не могу пока что.
Буду очень признателен за ценные идеи.
Комментарии
ноде->боди - это массив
в 7-м друпале. В 6-м тоже? И почему триггер при ручном сохранении срабатывает как надо?
не знаю на счет шестерки
вместо ноде->боди используйте токены
Речь идет о 6-м.
И как тогда корректно написать
<?php $node->body = preg_replace('some_expression','', $node->body);?>
с помощью токенов?
З.Ы. Кстати, если я просто пишу
<?php $node->body = 'some_text';?>
то все ОК, содержимое ноды заменяется с первого раза.Т.е. можно сделать вывод: при создании ноды модулем Feeds исходное содержимое находится где то непонятно где, и вставляется в боди уже после обработки триггером (т.е. содержимое из ленты вставляется только если боди после триггера остается пустой). Где искать? Своих знаний пока что не хватает чтобы выяснить.
З.Ы.Ы. $node_unchanged проверял, результат тот же.
примерно так
<?php $node->body = preg_replace('some_expression','', '[node:body]' );?>
Так, да не так.
Ладно, продолжу сам разбираться,о результатах доложу (если будут).
Подключаюсь к вопросу. Проблема еще существует. Ноды, созданные Feeds, не реагируют на дополнительные требования при их сохранении, почему-то. Если сохранять вручную все работает на ура!
Не нашли решение?