Drupal → Как создать свой токен для поля материала

02.08.2011

Как известно, из-за спешки зарелизить Drupal 7, в ядро не включили токены для полей (field tokens, [node:field-name]). Отсутствующий функционал пытались добавить майнтейнеры оригинального модуля Token, но из-за разногласий пока ничего не вышло.

Разработчикам, нуждающимся в field tokens, можно попробовать использовать патчи (там вроде даже есть рабочие), но имхо лучше самостоятельно по быстрому накидать соответствующий функционал.

Пример модуля, который создаёт один единственный токен для текстового поля field_category:

/**
 * Implements hook_token_info().
 */
function modulename_token_info() {
  $node_tokens['category'] = array(
    'name' => t('Category'),
    'description' => t('The category of the node.'),
  );
  return array(
    'tokens' => array(
      'node' => $node_tokens,
    ),
  );
}

/**
 * Implements hook_tokens().
 */
function modulename_tokens($type, $tokens, array $data = array(), array $options = array()) {
  $replacements = array();
 
  if ($type == 'node' && !empty($data['node'])) {
    $node = $data['node'];
    
    foreach ($tokens as $name => $original) {
      if ($name == 'category') {
        $replacements[$original] = !empty($node->field_category['und'][0]['value']) ? $node->field_category['und'][0]['value'] : '';
      }
    }    
  }
  
  return $replacements;
}

Токены

По материалам статьи How to add your own Tokens from CCK fields in Druapl 7.

Поддержка токенов для своей сущности в Drupal.

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

Комментарии

круто. как то я пропустил сей момент)

Гость
04.08.2011, 07:26

Еще есть модуль Custom tokens. Под 7-ку адаптирован не официально, в комментариях смотрите. Я использую под 7-кой. Работает замечательно.

"Так велосипед же давно изобрели ;)
http://drupal.org/project/entity"

Подскажите как можно создать свой токен (ТЕРМИН_МАТЕРИАЛА) для пути материала:
content/ТЕРМИН_МАТЕРИАЛА/[node:nid]

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