Drupal → Пример замены токенов на текст

10.03.2011

Пример работы с токенами:

/**
 * Реализация hook_menu()
 */
function token_example_menu() {
  $items['token-test'] = array(
    'title' => 'Token test',
    'page callback' => 'drupal_get_form',
    'page arguments' => array('token_example_form'),
    'access callback' => TRUE,
  );
  return $items;
}

/**
 * Форма для проверки работы токенов
 */
function token_example_form() {
  $form['text'] = array(
    '#type' => 'textfield',
    '#title' => 'Тест с токенами',
    '#required' => true,
  );
  if (module_exists('token')) {
    $form['token_tree'] = array(
      '#type' => 'fieldset',
      '#title' => 'Подстановочные шаблоны',
      '#collapsible' => TRUE,
      '#collapsed' => TRUE,
      '#description' => theme('token_tree', array('token_types' => array('node'))),
    );
  }
  $form['actions']['submit'] = array(
    '#type' => 'submit',
    '#value' => 'Поехали!',
  );
  return $form;
}

/**
 * Сабмит формы token_example_form
 */
function token_example_form_submit($form, $form_state) {
    $text = token_replace($form_state['values']['text'], array('user' => $GLOBALS['user']));
    drupal_set_message($text);
}

Скриншот получившейся формы:

Форма

Результат отправки формы:

Результат отправки формы

Подробности в описании функции token_replace().

Написанное актуально для
Drupal 7.x
Похожие записи

Комментарии

Скажите, а вот тут у вас array('user' => $GLOBALS['user']) :

 $text = token_replace($form_state['values']['text'], array('user' => $GLOBALS['user']));

Допустим мне нужны токены commerce-order от Drupal Commerce, какие параметры можно передать?

array('commerce-order' => commerce_order_load($order_id))

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