Особенности Rules в Drupal 7

03.11.2013

Ко мне обратился человек с просьбой помочь ему реализовать механизм доски объявлений, подобный описанному мной тут и тут, но для 7-й версии Drupal. Нужно было настроить схему подтверждения созданных на сайте объявлений через e-mail. Казалось бы, что могло измениться в технологии - нужно-то всего лишь получить строку - адрес, на который зашёл аноним, чтобы подтвердить своё объявление, и вырезать из конца этого адреса номер ноды. Потом по этому номеру эту ноду загрузить и опубликовать её.

Как выяснилось, в семёрке произошли изменения, которые заставили изменить предыдущую реализацию этого алгоритма. Во-первых, шаблон [site:current-page:path] возвращает реальный путь типа node/45, а не confim/advert777 - синоним, по которому пришёл пользователь. В связи с этим нужно использовать шаблон [site:current-page:url], который включает в себя полный url http://.... Во-вторых, я столкнулся с тем, что семёрка не понимает шаблонов внутри php-функций.

Например, вот такое действие - вывод системного сообщения:

работает:

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

то получу вот такой результат.

Функция работает с текстом шаблона, а не с его содержимым. Чтобы избежать этого, можно использовать дополнительную переменную, которой Rules даёт имя.

Это имя можно использовать вместо шаблона.

В результате получаем то, что нужно.

Для того, чтобы вырезанное из строки число можно было использовать, например, как номер ноды для её загрузки и последующих действий, необходимо конвертировать его (оно сейчас представляет собой строку, поскольку переменная типа Text) в тип Integer. Конвертирование осуществляется с помощью действия Convert data type.



Комментарии

женя
03.11.2013

Здравствуйте, большое Вам спасибо за помощь и за данную статью.

С Уважением, Евгений.

Добавить комментарий