web-dev-qa-db-fra.com

Menu de taxonomie avec chemin personnalisé pour les termes de taxonomie

J'essaie de faire un menu de taxonomie en utilisant le Module de menu de taxonomie avec un chemin personnalisé pour les termes de taxonomie. Au lieu de/Taxonomie/Terme/Tid Je veux/Proj /! Tid (ou finalement/Proj /! Nom du terme mais je vais vous contenter de ce que je peux obtenir). J'ai le menu de taxonomie fonctionnant bien lorsque je laisse le paramètre "Type de chemin du menu" à défaut, ce qui la quitte comme/Taxonomie/Term/Tid. Chaque fois que j'essaie d'utiliser l'option "chemin de vocabulaire", les conditions de menu disparaissent tous. J'ai essayé de suivre les instructions dans la Documentation ici .

J'ai une vue avec taxonomie: ID à terme (avec profondeur) et taxonomie: des arguments de modification de profondeur de la profondeur d'ID et une page d'affichage de page avec le chemin défini sur Proj /%. J'ai essayé en outre un alias d'URL à Proj et Proj /% mais cela ne semblait pas faire de différence. Mais fondamentalement chaque fois que je définis le type de chemin de menu sur "Path de vocabulaire" ("Chemin personnalisé" dans la documentation), les éléments de menu disparaissent tous. Les termes sont toujours là et je peux naviguer vers/proj /%, mais il n'y a pas d'éléments de menu.

Toute aide sur la manière d'avoir un chemin personnalisé pour le vocabulaire tout en conservant les éléments de menu serait grandement apprécié.

4
Jay

Si vous souhaitez modifier les traces de taxonomie des termes de taxonomie mises en œuvre par votre module, vous pouvez mettre en œuvre Hook_term_path () , qui permet à un module de modifier les chemins de terrains de taxonomie.

La fonction qui renvoie les chemins de termes de taxonomie est la suivante:

    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 mise en œuvre de ce crochet aiderait également à modifier le chemin de tout vocabulaire, si le champ $vocabulary->module est remplacé par le nom abrégé du module que vous avez créé.

Alternativement, vous pouvez écrire le Custom_url_rewrite_outbound () et Custom_url_rewrite_inbound () qui permet de réécrire les URL montrées au monde "extérieur" et convertir une URL dans celle utilisée. par drupal.
L'exemple donné dans la documentation devrait préciser comment utiliser ces fonctions.

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

Dans d'autres cas, vous pouvez utiliser un module comme PathAuto ou Vues Term Path Remplacer , ce qui permet de remplacer les chemins de termes de taxonomie des points de vue.
[.____] Les autres modules pouvant être utiles sont Chemin de redirection et Redirection de taxonomie ; La page du projet pour Vues Term Path Remplacement suggère Intégrateur de taxonomie comme alternative.

3
kiamlaluno