Где находится Drupal 7 Termpath? - PullRequest
       3

Где находится Drupal 7 Termpath?

1 голос
/ 26 августа 2010

Использование модуля pathauto и token в Drupal 6 позволило вам создавать псевдонимы url, используя такой шаблон:Drupal 7. Я понимаю, что D7 все еще находится в альфа-версии, но бета-версия, по-видимому, появится здесь довольно скоро, и D6 IMO намного приятнее.

Ответы [ 5 ]

3 голосов
/ 26 августа 2010

В Drupal 7 слово path означает что-то очень специфическое, и, очевидно, нечто иное, чем то, к чему относится termpath , и не похоже, что предпринято какое-либо действие чтобы заменить [*path] токены только что (хотя это известная проблема): BIKESHED: токен для всего дерева или иерархии элемента или элемента меню .

Похоже, что он не собирается превращаться в ядро, и останется частью токена contrib, и даже проекты, объявленные # D7CX, до окончательного выпуска дадут завершить свои порты Drupal 7, которые, возможно, будут близки к конец года.

1 голос
/ 23 сентября 2011

Я уже несколько месяцев ломаю голову над этой проблемой и, наконец, нашел решение, которое, кажется, работает:

http://drupal.org/node/741914#comment-5025862

Короче, я создал кастоммодуль, который предоставляет несколько дополнительных токенов (которые могут использоваться в таких модулях, как заголовок страницы или pathauto).В выделенном фрагменте кода токены заменяются полным путем иерархической таксономии либо узла, либо термина таксономии (существуют токены, предназначенные для URL-адреса и другие, предназначенные для заголовка страницы).можно найти в обсуждении на связанной странице.

Я надеюсь, что это может помочь некоторым людям с их собственными реализациями.

1 голос
/ 23 сентября 2010

Модуль поддержки токенов здесь.Здесь больше работы, потому что жетоны таксономии не совсем простые.Теперь они поля, и мы еще не написали поддержку токенов для полей D7.Это то, что мы должны сделать, хотя.

0 голосов
/ 05 декабря 2012

Я не помню, в каком проекте песочницы я нашел это, но это идеальное решение.

taxonomy_path_token.info

name = Taxonomy Path Token
description = Taxonomy path token creates a path of parent taxonomy terms of a node
package = Token 
core = 7.x

dependencies[] = token

taxonomy_path_token.module

<?php

/**
 * Implements hook_tokens().
 */
function taxonomy_path_token_tokens($type, $tokens, array $data = array(), array $options = array()) {
  $replacements = array();

  if (!empty($tokens['taxonomy_path']) && !empty($data['node'])) {
    if(!empty($options['sanitize'])) {
       $sanitize = $options['sanitize'];
    } else {
      $sanitize = FALSE;
    }

    $node = $data['node'];
    $replacements[$tokens['taxonomy_path']] = $sanitize ? check_plain(taxonomy_path_token_get_parents($node)) : taxonomy_path_token_get_parents($node);
  }

  if ($type == 'array' && !empty($data['array'])) {
    $array = $data['array'];

    foreach ($tokens as $name => $original) {
      switch ($name) {
        case 'join-path-except-first':
          module_load_include('inc', 'pathauto');
          $values = array();
          foreach (element_children($array) as $key) {
            $value = is_array($array[$key]) ? render($array[$key]) : (string) $array[$key];
            $value = pathauto_cleanstring($value);
            $values[] = $value;
          }
                    array_shift($values);
          $replacements[$original] = implode('/', $values);
          break;
      }
    }
  }

  return $replacements;
}

/**
 * Implements hook_token_info().
 */
function taxonomy_path_token_token_info() {
  $info['tokens']['node']['taxonomy_path'] = array(
    'name' => t('taxonomy_path'),
    'description' => t('Custom taxonomy_path token.'),
  );

    $info['tokens']['array']['join-path-except-first'] = array(
    'name' => t('Joined path'),
    'description' => t('The array values each cleaned by Pathauto and then joined with the slash into a string that resembles an URL.'),
  );

  return $info;
}

function taxonomy_path_token_get_parents($node) {
  module_load_include('inc','pathauto','pathauto');

    if(!empty($node->field_tags)){
        $tid = current($node->field_tags);
        $tid = $tid[0]['tid'];
    }
    else{
     return '';
    }

  $parents = taxonomy_get_parents_all($tid);
  $paths = array();

  foreach ($parents as $parent) {
    $paths[] = pathauto_cleanstring($parent->name);
  }

    $paths = array_reverse($paths);
    array_shift($paths);
  $pathauto = implode('/', $paths);

  return $pathauto;
}

Затем добавьте этот «[node: taxonomy_path] / [node: title]» в паттерны патхауто.

0 голосов
/ 28 сентября 2012

Вы можете использовать модуль taxonomy_entity_index с исправлениями из очереди выдачи .Единственное, что действительно плохо, это то, что вам нужно использовать команду Drush для построения индекса на рабочем сайте или каким-либо образом импортировать содержимое текущего сайта.

...