Drupal 8?で、その用語が選択されているノードタイプの自動エイリアスのパターンで、分類用語のエイリアスを参照するためにトークンを使用することは可能ですか?(単一の分類用語が選択されます。)
例:分類がNamesの場合、値はJames、Margaret、Danielと各名前パスが割り当てられています(/news/jim
、/news/peggy
、/news/dan
)。パターンが[taxonomy:Names:path]/[node:title]
のような「ニュース」ノードタイプの自動パスを作成できます。 Namesリストから "Margaret"を選択し、ノードに "Summer Vacation 2017、"というタイトルを付けると、次のようになります。 /news/peggy/summer-vacation-2017
の自動ノードパス?
私が見つけた分類法に基づくパスエイリアスへのすべての参照は、用語のエンティティ値を使用していますが、これは望ましくありません。上記の例の結果として/news/margaret/summer-vacation-2017
を使用したくありません。
pathauto を使用すると、次のようなパターンで静かに簡単になります。
通常の方法:
news/[node:{NAME_OF_TAXONOMY_FIELD}:entity:name]/[node:title]
階層あり:
news/[node:{NAME_OF_TAXONOMY_FIELD}:entity:parents:join-path]/[node:{NAME_OF_TAXONOMY_FIELD}:entity:name]/[node:title]
あなたの場合、これはうまくいくはずです
[node:{NAME_OF_TAXONOMY_FIELD}:entity:url]/[node:title]
あなたはhook_pathauto_alias_alterを実装することができます:
/**
* Implements hook_pathauto_alias_alter().
*/
function MYMODULE_pathauto_alias_alter(&$alias, array &$context) {
if ($context['module'] != 'node') {
return;
}
$node = $context['data']['node'];
// here you can write your logic to get the taxonomy term url alias
// something like:
//read out the taxonomy term field of your node
// get the term $term
// get the URL Alias of it
$options =
[
'absolute' => false,
];
$termUrl = \Drupal\Core\Url::fromRoute('entity.taxonomy_term.canonical', ['taxonomy_term' => $term->id()], $options);
if ($termUrl && strpos($termUrl,'/taxonomy/term/' === false)) {
$aliasPath = str_replace('/' . $languageId . '/', '/',$termUrl->toString());
}
$alias = $aliasPath . $alias;
}