web-dev-qa-db-ja.com

URLエイリアスで分類法を取得する方法は?

gradeボキャブラリーに6。Class分類用語を使用しています。分類法ページにはw​​ww.example.com/foo/6-class/barのようなURLがあり、次のコードでは分類法を見つけることができません。

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

文字列(例:6。Class)を使用すると機能しますが、arg(2)では機能しません。このURLエイリアスを使用して正しい分類法を取得するにはどうすればよいですか?問題は、それが公開フィルターであり、コンテキストフィルターではないことです。しかし、私はこの事実を変えることはできません。

また、次のコードではソースパスを取得できません。

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

これはかなり古い質問ですが、まだ答えられていないようです。このDrupal 7スニペットは、分類用語をロードするのに役立ちますが、それが属している語彙の名前を知っている必要があります。それが「ポジション」だとしましょう。例: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);

knowあなたのURLが分類用語のエイリアスである場合は、

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

ソースとURIを使用したdrupal_lookup_pathアプローチは機能しませんでした。おそらくそのパスはエイリアスではないため、または少なくとも分類では使用できないためです。

これが誰かを助けることを願っています。

3
Victor Alfonso

私はDrupal 8で作業しており、何らかの理由で上記の解決策をどれも機能させることができませんでした。以下は、用語idのURLを取得するために使用したものです。これを行うにはより良い方法が必要であり、これらのオプションのすべてが必要なわけではないことは確かですが、これが誰かの役に立つことを願っています。

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

URLから分類用語を取得する最も簡単な方法は、

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

arg(2)は、パスが_taxonomy/term/[tid]_になるため、名前ではなく分類用語の用語IDを返します。

arg()関数はエイリアスパスではなく元のパスを読み取るため、読み取らない用語ページのエイリアスを追加しました。

使用している関数は、分類名を引数として使用します。しかし、あなたが渡しているのは、idという用語です。したがって、taxonomy_term_load(arg(2))を使用すると、返された用語オブジェクトの用語に関する詳細が得られます。

こちらのドキュメントをチェックしてください: https://api.drupal.org/api/drupal/modules!taxonomy!taxonomy.module/function/taxonomy_term_load/7

お役に立てれば。 :)

1
Malabya Tewari