Создание, сопровождение и продвижение сайтов на CMS Drupal

Webform: использование токенов %title и %nid

Один из популярных модулей в Друпал – webform. Модуль удобный и с богатым функционалом. На всех моих сайтах фактически один из обязательных. Недавно столкнулся с проблемой – проблема с отображением адреса страницы в скрытом поле webform, когда вебформа используется как блок на странице. Другими словами – есть страница услуги и на этой странице размещен блок заказа услуги через вебформ, в сообщении необходимо указать с какой страницы было отправлено сообщение.

Ранее использовал токен %server[REQUEST_URI] для скрытого поля , но в вебформ для анонимных пользователей он закрыт из соображения безопасности (как давно это произошло не могу скзать, может так было всегда, просто при разработке под админом не обратил внимания)

В версии webform 3.16 есть токены %title и %nid, но в коде для них установлен NULL, т.е. на данный момент они не работают. «Стандартное» использование данных токенов через патч приводит к тому, что %title и %nid указывают на страницу Вебформ, а не на текущую страницу с которой идет запрос.

Пока решается вопрос по дороботке токенов, для себя нашел решение - патч, которым и делюсь.
http://drupal.org/files/issues/webformnodetokens-1224130-7.patch
Собственно после определения переменных в функцию function _webform_filter_values добавляется код :

// Use the current node as a fallback if it wasn't passed in.
if ($node == NULL) {
$q = $_GET['q'];
$q = explode('/',$q);
$qid = (int)$q[1];
$node = node_load($qid);
}

Да, у мне неоходимо было эту проблему решить для Друпал 6, но похоже и для Друпал 7 она актуальна. Опять же если токены будут решаться в «стандартном» исполнении, то их замена все равно будет необходима.

UPD. Drupal 7

В Друпал 7 данную проблему для себя я решил использованием данного кода в своем модуле:

function имя-модуля_form_alter(&$form, $form_state, $form_id) {
  if ($form_id == 'webform_client_form_Номер ноды формы') {
    if ($node = menu_get_object()) {
      $form['submitted']['page']['#value'] = $node->title;
    }
  }
}
 

Последнее время полюбил качественные японские кухонные ножи. Фото наверху – японский кухонный нож производителя Misono, который был мне подарен на день рожденье. Неудержался пофотографировал – фото с небольшим описанием ножа на сайте о Японии.