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

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

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

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

/**
 * Implements hook_token_info().
 */
function mymodule_token_info() {
  $tokens['category'] = array(
    'name' => t('Category'),
    'description' => t('The category of the node.'),
  );
  return array(
    'tokens' => array('node' => $tokens),
  );
}
 
/**
 * Implements hook_tokens().
 */
function mymodule_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] = $node->field_category['und'][0]['value'];
      }
    }    
  }
 
  return $replacements;
}

Написанное актуально для
Drupal 7.x
Теги:
token, работа с полями
Добавлено: 29 Июля 2018 22:20:39 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...