web-dev-qa-db-ja.com

すべてのページにHTMLを挿入するにはどうすればよいですか?

モジュールに次のコードがあります。理想的には_<body>_の先頭にあるHTMLを挿入しようとしていますが、hook_init()での呼び出しが機能していないようです。これで? _<body>_の後にSlidedown.tpl.phpをレンダリングすることを望んでいます。

_<?php
function slidedown_init() {
    drupal_add_js(drupal_get_path('module', 'slidedown') . '/slidedown.js');
    drupal_add_css(drupal_get_path('module', 'slidedown') . '/slidedown.css');
    slidedown_insert_html();
}

function slidedown_insert_html() {
    return theme('slidedown_template');
}

function slidedown_theme() {
    $themes = array (
        'slidedown_template' => array(
            'template' => 'slidedown', // your template file called slidedown.tpl.php
            'arguments' => array(),
        ),
    );
    return $themes;
}
?>
_
5
cjm2671

あなたはおそらく hook_page_build()

_function slidedown_page_build (&$page) {
  $path = drupal_get_path('module', 'slidedown');

  drupal_add_js($path . '/slidedown.js');
  drupal_add_css($path . '/slidedown.css');

  $page['page_top']['slidedown_template'] = array(
    '#weight' => -1000, 
    '#markup' => theme('slidedown_template'),
  );
}
_

そのフックがJSとCSSを追加するには遅すぎるかどうか覚えていません。それらを template_preprocess_html() に入れる必要があるかもしれません。 hook_init() よりも良い選択です。

4
mpdonadio

テンプレートpage.tpl.phpとそのバリアントは、<body> </ body>タグ内に配置されるものを定義します。

おそらく、page.tpl.phpでリージョンを定義し、それを必要な場所に配置することをお勧めします。次に、この領域でスライドショーをレンダリングします。

詳細については、チェックアウト Drupalテーマシステムの仕組み のしくみをご覧ください。

1
Triskelion