Pregunta

Uso de la pathauto y el módulo token en Drupal 6 permitía crear alias de URL usando un patrón de este modo:. [TERMPATH-prima] / [title-raw]

Sin embargo, este no es el caso en Drupal 7. Entiendo que D7 se encuentra todavía en alfa, beta, pero la apariencia de estar aquí muy pronto y es tan mucho más agradable que la OMI D6.

¿Es esta funcionalidad no está disponible todavía?

¿Fue útil?

Solución

En Drupal 7, la palabra ruta significa algo muy específico, y al parecer algo diferente a lo que TERMPATH se referiría a, y no parece que haya ninguna habido las medidas adoptadas para reemplazar el [*path] fichas por el momento (aunque es un problema conocido): bikeshed: Token por un término o el menú del ítem todo el árbol / jerarquía .

También parece que no va a hacer que sea en el núcleo, y permanecerá una parte de la contribución de emergencia, e incluso # proyectos D7CX-comprometido tienen hasta el lanzamiento final para completar sus puertos Drupal 7, que factiblemente podría estar cerca de la a finales de año.

Otros consejos

Módulo de emergencia co-mantenedor aquí. Hay más en el trabajo aquí, porque las fichas de taxonomía no son muy simples. Son ahora los campos, y no han escrito un apoyo simbólico para los campos D7 todavía. Es algo que tenemos que hacer sin embargo.

he estado rompiendo la cabeza sobre este tema desde hace varios meses y finalmente he encontrado una solución que parece funcionar:

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

En resumen, he creado un módulo personalizado que expone unas pocas fichas adicionales (que pueden ser utilizados en módulos como el título de la página o pathauto). En el código subyacente, las fichas se sustituyen por el camino de la taxonomía jerárquica completa de cualquiera de nodo o el término taxonomía (hay fichas destinadas para la dirección URL y otras dirigidas por el título de la página).

La implementación real se puede encontrar en la discusión en la página enlazada.

Espero que esto podría ayudar a algunas personas con sus propias implementaciones.

Puede utilizar el taxonomy_entity_index módulo con parches de la cuestión cola . La única cosa que es realmente malo es que hay que utilizar el comando Drush para construir el índice en el lugar de trabajo o de alguna manera volver a importar los contenidos del sitio actual.

No recuerdo en qué proyecto cajón de arena que he encontrado esto, pero es la solución perfecta.

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;
}

A continuación, añadir esta "[nodo: taxonomy_path] / [nodo en el título]". Pathauto a sus patrones

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top