Drupal 8でテンプレートをレンダリングしようとしています。Drupal7では、hook_themeでテーマを作成し、モジュールにテンプレートディレクトリを作成し、テンプレートファイルをドロップして、theme()で表示できます。Drupal 8でどのようにして能力を発揮しますか?私は以下を試しましたが、エラーになります:
twitter_pull.module
/ ** * hook_theme()を実装します。 * / function twitter_pull_theme($ existing、$ type、$ theme、$ path){ 配列を返す( 'twitter_pull_tweet_listing' => array( '変数' =>配列( '説明' => array()、 )、 'テンプレート' => 'テンプレート/ twitter_pull_tweet_listing'、 )、 ); }
twitter_pull / templates内:twitter_pull_tweet_listing.html.twig
私のブロック内:
$ tweet_template = array( '#theme' => 'twitter_pull_tweet_listing'、 '#attributes' => array( 'params' => $ params)); $ output = drupal_render($ tweet_template、array( 'params' => $ params)); $ outputを出力します。
ログに次のエラーが表示されます。
ユーザーエラー:「コンテンツ」はDrupal \ Core \ Render \ Element :: children()の無効なレンダー配列キーです(C:\ xampp \ htdocs \ drupal \ core \ lib \ Drupal \ Core \ Render \ Elementの89行目)。 php)。
編集:別のエラー:
Twig_Error_Loader:テンプレート "modules / custom / twitter_pull / templates / templates / twitter_pull_tweet_listing.html.twig"が見つかりません(C:\ xampp \ htdocs \ drupalにあります)。Twig_Loader_Filesystem-> findTemplate()内(C:\ xampp \ htdocs \ drupal \ core \ vendor \ twig \ twig \ lib \ Twig \ Loader \ Filesystem.phpの202行目)。
名前空間を使用していないため、このエラーが発生していると思います。テンプレートファイルはどこに置くのですか?エラーメッセージに基づいて、C:\ xampp \ htdocs \ drupal \ templates \に配置しようとしましたが、それでも機能しませんでした。
drupal_render()
?の2番目の引数としてパラメーターの配列を渡す特定の理由 ブール値を期待しています
templates/templates/
第二エラーメッセージの一部は、私はあなたが試みるべきだと思います'template' => 'twitter_pull_tweet_listing',
の代わり'template' => 'templates/twitter_pull_tweet_listing',
にhook_theme()