xandeadx.ru Блог музицирующего веб-девелопера

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

Опубликовано в

Как известно, из-за спешки зарелизить 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
Похожие записи

Комментарии RSS

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

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

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

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

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

Да, подскажите. Не понятно((

Оставить комментарий

Содержимое этого поля является приватным и не будет отображаться публично. Если у вас есть аккаунт в Gravatar, привязанный к этому e-mail адресу, то он будет использован для отображения аватара.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступные HTML теги: <a> <i> <b> <strong> <code> <ul> <ol> <li> <blockquote> <em> <s>
  • Строки и параграфы переносятся автоматически.
  • Подсветка кода осуществляется с помощью тегов: <code>, <css>, <html>, <ini>, <javascript>, <sql>, <php>. Поддерживаемые стили выделения кода: <foo>, [foo].

Подробнее о форматировании