web-dev-qa-db-fra.com

Comment obtenir la taxonomie par alias d'URL?

J'ai un vocabulaire grade avec un terme de taxonomie 6. Class. La page de taxonomie a une URL comme www.example.com/foo/6-class/bar et je ne trouve pas la taxonomie avec le code suivant.

$grade = arg(2);
$term = taxonomy_get_term_by_name($grade)

Cela fonctionne lorsque j'utilise une chaîne (par exemple 6. Class), mais pas avec arg(2). Comment puis-je obtenir la taxonomie correcte avec cet alias d'URL? Le problème pourrait être qu'il s'agit d'un filtre exposé et pas de filtre contextuel. Mais je ne peux pas changer ce fait.

Je ne peux pas non plus obtenir le chemin source avec le code suivant.

drupal_lookup_path('source', $_GET['q']);
drupal_lookup_path('alias', current_path());
4
Jurik

Je sais que c'est une question assez ancienne mais qui semble encore sans réponse. Cet extrait Drupal 7 vous aidera à charger un terme de taxonomie mais vous devez connaître le nom du vocabulaire auquel il appartient, disons qu'il s'agit de "position". Ex. Www.example.com/foo/6-class/bar

$term_path=drupal_get_normal_path('position/'.arg(1));
$tid = basename($term_url);
$term = taxonomy_term_load($tid);

Si vous sais votre URL est un alias de votre terme de taxonomie, utilisez simplement

$term_path=drupal_get_normal_path(current_path());
$tid = basename($term_url);
$term = taxonomy_term_load($tid);

Le chemin drupal_lookup_path avec l'approche source et uri n'a pas fonctionné pour vous car probablement ce chemin n'est pas un alias, ou du moins pas pour votre taxonomie.

J'espère que cela aide quelqu'un.

3
Victor Alfonso

Je travaillais dans Drupal 8 et pour une raison quelconque, je n'ai pu faire fonctionner aucune des solutions ci-dessus. Ci-dessous, j'ai fini par utiliser pour obtenir l'URL avec le terme id. Il doit y avoir de meilleures façons de le faire et je suis sûr que toutes ces options ne sont pas nécessaires, mais j'espère que cela aide quelqu'un.

$term_url = \Drupal\Core\Url::fromRoute('entity.taxonomy_term.canonical', ['taxonomy_term' => $term->tid->value], ['absolute' => TRUE])->toString()
2
skribbz14

Le moyen le plus simple d'obtenir le terme de taxonomie à partir de l'URL est

$term = menu_get_object('taxonomy_term', 2);
1
Jimmy Ko

arg(2) renverra l'id du terme de taxonomie et non le nom car le chemin sera taxonomy/term/[tid].

Vous avez ajouté un alias pour les pages de termes que la fonction arg() ne lit pas car elle lit le chemin d'origine et non le chemin aliasé.

La fonction que vous utilisez avec prend le nom de taxonomie comme argument. Mais ce que vous passez est le terme id. Donc, si vous utilisez taxonomy_term_load(arg(2)), vous obtiendrez des détails sur le terme dans l'objet terme renvoyé.

Consultez la documentation ici: https://api.drupal.org/api/drupal/modules!taxonomy!taxonomy.module/function/taxonomy_term_load/7

J'espère que cela t'aides. :)

1
Malabya Tewari