Pathautoで次のパターンを使用したい:
そのため、myCTのすべてのニュートラル(UND)ノードとENノードにはパターン2があり、他のすべての言語にはパターン1があります。同じパターンを持つ他の多くの言語があり、繰り返したくないので、他のすべての言語にALL言語パターンを使用しています。
MyCTのエンティティ変換モジュールを使用しています。
ノードを作成してデフォルトの言語(UND)と自動パスエイリアスで保存すると、常にpattern1が生成されます。 ノードを再編集して正しいパターンを取得させる(UND /ニュートラル言語の場合)、pattern2。
まず、ノードの作成前にpathauto_pattern_load_by_entity関数(pathauto.moduleファイル)が呼び出されるため、ノードの作成中、ノードの言語は常にUNDです。
次に、pathautoモジュールをデバッグしようとすると、次のようになります。
function pathauto_pattern_load_by_entity($entity, $bundle = '', $language = LANGUAGE_NONE) {
$patterns = &drupal_static(__FUNCTION__, array());
$pattern_id = "$entity:$bundle:$language";
if (!isset($patterns[$pattern_id])) {
$variables = array();
if ($language != LANGUAGE_NONE) {
$variables[] = "pathauto_{$entity}_{$bundle}_{$language}_pattern";
}
if ($bundle) {
$variables[] = "pathauto_{$entity}_{$bundle}_pattern";
}
$variables[] = "pathauto_{$entity}_pattern";
foreach ($variables as $variable) {
if ($pattern = trim(variable_get($variable, ''))) {
break;
}
}
$patterns[$pattern_id] = $pattern;
}
return $patterns[$pattern_id];
}
したがって、次の行では中立言語が考慮されないパスのようです。
if ($language != LANGUAGE_NONE) {
$variables[] = "pathauto_{$entity}_{$bundle}_{$language}_pattern";
}
Ifステートメントが削除されるべきではありませんか?それ以外の方法でニュートラル言語パスを使用するにはどうすればよいですか?
良い点、私も同じように考えていました。
削除する行ではなく、LANGUAGE_NONE
は、「und」言語の変数配列にパターンを設定します。次に、そうでない場合は、言語固有のパターンを配列に設定します。
私は問題を開いてパッチを投稿しました、チェックしてください https://www.drupal.org/node/2438745
Pathauto i18n モジュールを使用できます:
このモジュールは、各言語のエイリアスを作成する機能を提供します。また、このモジュールは、フィールド翻訳を使用していて、node/nidとは異なるパスを持つすべての言語でノードを表示したい場合に役立ちます。