ノードではなくスタンドアロンのページである/about-us
のような事前定義されたコンテンツを含むカスタムのDrupal 8ルートを作成しようとしています。
次のチュートリアルは、#markup
を使用してページコンテンツを追加する必要があるところまでのみ有効です。 https://www.drupal.org/node/2116767
ページコンテンツに使用するtwigテンプレートを指定するにはどうすればよいですか?
私はそれを働かせました。これが私の解決策です。
path/to/your/module/templates/my-custom-page.html.twig
にテンプレートを作成します。
/**
* Implements hook_theme().
*/
function mymodule_theme($existing, $type, $theme, $path)
{
return [
'my_custom_page' => [
'render element' => 'custom_page',
'path' => $path . '/templates',
'template' => 'my-custom-page',
'variables' => [
'var1' => 'default value for var1',
],
],
];
}
render element
の意味がわかりませんが、必須です。
variables
要素は、テンプレートで使用可能な変数を定義し、それらのデフォルト値を提供します。あなたはあなたのコントローラーでそれらを上書きすることができます。
use Drupal\Core\Controller\ControllerBase;
/**
* Class CustomPageController
*/
class CustomPageController extends ControllerBase
{
public function getPage()
{
return array(
'#theme' => 'my_custom_page',
'#var1' => 'Actual value for var1',
);
}
}
キャッシュをクリアして、カスタムページルートにアクセスします。すべてが機能するはずです。
便利なリンク: