Routing.ymlファイルでモジュールを作成しました。
mymodule.dossier:
path: '/dossiers/{node}/dossier'
defaults:
_entity_view: 'node.dossier_dossier'
requirements:
_permission: 'access content'
カスタムビューモード(node.dossier_dossier)と対応するTwigテンプレートを作成しました。dossiers/ 1/dossierに移動すると機能し、dossier_dossierビューモードでノードが表示されますそして適切なテンプレート。
node/1のパスエイリアスとして/ dossiers/my-custom-pathがあり、Pathautoモジュールから自動的に設定されます。/dossiers/my-custom-path/dossierにアクセスしようとすると、Page not foundエラーが返されます。
(デフォルトエイリアスとパスエイリアス)の両方のURLのノードでこのルートを機能させるにはどうすればよいですか?
編集:なぜ私はそれが必要なのか多分言及すべきです:
Pathautoはこれを行うことができません。デフォルトの表示モードへのエイリアスのみを生成できます。
独自のPathautoモジュールを作成できます。これにより、ビューモードごとに個別のエイリアスが生成されます。単一の目的のモジュールの場合、実行する作業はそれほど多くありません。エイリアスを生成して使用するだけです。
\Drupal::service('path.alias_storage')->save($source, $alias);
それらを保存します。
問題は、非常に大きなurl_aliasテーブルを取得することです。
またはroute_callbacks:
* .routing.ymlで、このコールバックでビューモードごとに異なるルートを定義します。これは、コントローラーを呼び出します。これにより、ルートにヒットした場合、エイリアスの中央部分が検索され、要求された表示モードでノードにリダイレクトします。これには静的エイリアステーブルがありませんが、リクエストごとに時間がかかる場合があります。
Subpathautoモジュール(pathautoに依存)は、ここで役に立ちます: https://www.drupal.org/project/subpathauto
サイトに/node/{id}
のpathautoエイリアスがあります(/node-slug
と呼びましょう)。 subpathautoモジュールをインストールして有効にすることで、/node/{id}/locations
からアクセスできるカスタムルート/node-slug/locations
を作成できました