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

Drupal → Добавить в токен [term:parents:*] текущий термин

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

Понадобилось в Metatag вывести через запятую иерархию имён термина. Нашёл токен [term:parents:join:, ], но проблема в том, что в него не входит текущий термин. Пришлось реализовать свой токен [term:parents-with-current:*]:

/**
 * Implements hook_token_info().
 */
function MODULENAME_token_info() {
  $info['tokens']['term']['parents-with-current'] = array(
    'name' => t('Parents with current term'),
    'description' => t("An array of all the term's parents with current term, starting with the root."),
    'type' => 'array',
  );
 
  return $info;
}
 
/**
 * Implements hook_tokens().
 */
function MODULENAME_tokens($type, $tokens, array $data = array(), array $options = array()) {
  $replacements = array();
 
  if ($type == 'term' && !empty($data['term'])) {
    $term = $data['term'];
 
    foreach ($tokens as $name => $original) {
      if ($name == 'parents-with-current') {
        $terms = token_taxonomy_term_load_all_parents($term->tid);
        $terms[] = entity_label('taxonomy_term', $term);
        $replacements[$original] = token_render_array($terms, $options);
      }
    }
 
    if ($parents_tokens = token_find_with_prefix($tokens, 'parents-with-current')) {
      $terms = token_taxonomy_term_load_all_parents($term->tid);
      $terms[] = entity_label('taxonomy_term', $term);
      $replacements += token_generate('array', $parents_tokens, array('array' => $terms), $options);
    }
  }
 
  return $replacements;
}
Написанное актуально для Drupal 7
Похожие записи

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

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

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