pathautoを使用して深くネストされた語彙のURLを生成するにはどうすればよいですか?


6

ここで説明するように、URL引数からパンくずを生成しています。

次のような語彙があります。

芸術->パフォーマンス->ダンス->バレエ

URLを次のようにしたい:arts / performing / dancing / ballet

pathautoモジュールを使用して、分類用語に対してこれを行うことができます。

[term:parent]/[term:name]

これは、バレエのページで次のようになります。私が欲しいものではありません:

dancing/ballet 

親の代わりに親を使用する場合、([term:parents]/[term:name]); これは近いですが、完全ではありません:

arts-performing-dancing/ballet

どのように私はから入手することができますarts-performing-dancingarts/performing/dancing

回答:


9

あなたの語彙パターンとして次のようなものを試してください:

[term:parent:parent:parent:name]/[term:parent:parent:name]/[term:parent:name]/[term:name]

そして、あなたの最後の質問は消えるはずです。

parent:少なくとも、語彙で予想される最大項の深さと同じ回数だけその部分を繰り返すようにしてください。Pathautoは頭上のアイテムを賢くスキップします。

私はそれが超スケーラブルではないことを知っていますが、それは私のために機能します。


やった!パフォーマンスが問題になる場合は、もっと良い方法を探しますが、今のところこれで十分です。
Patrick Kenny

5

スケールするより良い方法を見つけました

[node:menu-link:parents:join-path]/[node:title] 

同意した。このトークンは、スケーラブルでないソリューションを提案した時点では利用できませんでした:)
Artur

4

これらの答えはすべて正しいですが、 分類トークンを提供する分類エンティティインデックスモジュールを使用することもできます。用語にスラッシュが含まれていると、問題が発生します。

分類エンティティインデックスモジュールは、特定のエンティティとリビジョンに関連付けられたすべての用語の正規化されたインデックスを維持します。コアの{taxonomy_index}テーブルは、公開されたノードのデータのみを維持します。このモジュールは、すべてのエンティティタイプ(公開されているかどうかに関係なく)のデータを維持し、リビジョンによってインデックス付けされます。


1

Drupal 8のパターンを見つけた場合は、 [term:parents:join:/]/[term:name]

結果の例: arts/performing/dancing

私たちの区切り文字はスラッシュされているので、中にスラッシュを取り除く無効にすることを忘れないでください>設定>検索とメタデータ> URLエイリアス>設定管理、へ/管理/設定/検索/パス/設定を行って、句読点のセクション、見つけるスラッシュ(/)をドロップダウンで[アクションなし(削除しない)]を選択します。


0

パスエイリアスには次のパターンを使用します[term:i18n-vocabulary]/[term:parents:join-path]/[term:i18n-name]

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.