it-swarm-es.com

Menú de taxonomía con ruta personalizada para términos de taxonomía

Estoy tratando de hacer un menú de taxonomía usando Módulo del menú de taxonomía con una ruta personalizada para los términos de la taxonomía. En lugar de/taxonomy/term/tid quiero/proj /! Tid (o finalmente/proj /! Term-name pero me conformaré con lo que pueda obtener). Tengo el menú de taxonomía funcionando bien cuando dejo el ajuste "tipo de ruta de menú" como predeterminado, lo que lo deja como/taxonomy/term/tid. Sin embargo, cada vez que intento usar la opción "ruta de vocabulario", los términos del menú desaparecen. Intenté seguir las instrucciones en documentación aquí .

Tengo una vista con Taxonomía: ID de término (con profundidad) y Taxonomía: argumentos del modificador de profundidad de ID de término y una visualización de página con la ruta establecida en proj /%. También intenté hacer un alias de URL en proj y proj /%, pero eso no pareció hacer ninguna diferencia. Pero básicamente, cada vez que establezco el tipo de ruta del menú en "ruta de vocabulario" ("ruta personalizada" en la documentación), todos los elementos del menú desaparecen. Los términos todavía están allí, y puedo navegar a/proj /%, pero no hay elementos de menú.

Cualquier ayuda sobre cómo tener una ruta personalizada para el vocabulario mientras se mantienen los elementos del menú sería muy apreciada.

4
Jay

Si desea modificar las rutas de término de taxonomía para los términos de taxonomía implementados por su módulo, puede implementar hook_term_path () , que es el gancho que permite que un módulo altere las rutas de término de taxonomía.

La función que devuelve las rutas de término de taxonomía es la siguiente:

    function taxonomy_term_path($term) {
      $vocabulary = taxonomy_vocabulary_load($term->vid);
      if ($vocabulary->module != 'taxonomy' && $path = module_invoke($vocabulary->module, 'term_path', $term)) {
        return $path;
      }
     return 'taxonomy/term/' . $term->did;
  }

La implementación de ese gancho también ayudaría a modificar la ruta de cualquier vocabulario, si el campo $vocabulary->module se cambia por el nombre corto del módulo que creó.

Alternativamente, puede escribir custom_url_rewrite_outbound () y custom_url_rewrite_inbound () que permite reescribir las URL que se muestran en el mundo "exterior" y convertir una URL en la utilizada por Drupal.
El ejemplo dado en la documentación debería aclarar cómo usar estas funciones.

function custom_url_rewrite_inbound(&$result, $path, $path_language) {
  global $user;

  // Change all article/x requests to node/x
  if (preg_match('|^article(/.*)|', $path, $matches)) {
    $result = 'node' . $matches[1];
  }
  // Redirect a path called 'e' to the user's profile edit page.
  if ($path == 'e') {
    $result = 'user/' . $user->uid . '/edit';
  }
}

function custom_url_rewrite_outbound(&$path, &$options, $original_path) {
  global $user;

  // Change all 'node' to 'article'.
  if (preg_match('|^node(/.*)|', $path, $matches)) {
    $path = 'article' . $matches[1];
  }
  // Create a path called 'e' which lands the user on her profile edit page.
  if ($path == 'user/' . $user->uid . '/edit') {
    $path = 'e';
  }
}

En otros casos, puede usar un módulo como Pathauto o Invalidación de ruta de término de vistas , que permite anular las rutas de término de taxonomía en las vistas.
Otros módulos que podrían ser útiles son redirección de ruta y redirección de taxonomía ; La página del proyecto para Vistas Anulación de ruta de término sugiere Integrador de vistas de taxonomía como alternativa.

3
kiamlaluno

Intenta usar Pathauto . Lo he usado junto con el Menú de taxonomía con excelentes resultados.

0
tim.plunkett

Es posible que desee probar http://drupal.org/project/tvi Tendría éxito tomando las páginas de término con eso. Especialmente con pantallas adjuntas.

Este afirma lo mismo: http://drupal.org/project/views_tpo

0
doublejosh