4

javascriptを追加するには、次を使用できます。

drupal_add_js

そしてcssについても同様です:

drupal_add_css

しかし、ページの最後にhtmlを追加したい場合はどうなりますか。つまり、ページの最後にテキストを含むdivを追加しますか?

4

9 に答える 9

9

変更をテーマベースにしたい場合は、ここでの多くの提案が機能しますが、これをモジュールから取得したい場合は、ブロック領域、ページテンプレート、またはページ前処理を使用してもうまくいきません。テーマの変更。

モジュールの観点からは、次のオプションが最適です。

hook_footer() -- http://api.drupal.org/api/function/hook_footer/6 :: my_module_footer() は HTML の文字列を返す必要があります。これは JavaScript であってもかまいません。例えば

function my_module_footer(){

    return "<script type='text/javascript'>//your script</script>"

}

drupal $_GET['q'] を使用してページ URL を取得し、ページ URL の条件付きで返すことができます。

それ以外の場合は、$GLOBALS["_add_my_footer"] をブール値として使用し、モジュール内のさまざまなポイントで設定してから、hook_footer() で真かどうかを確認します。


drupal_add_js -- api.drupal.org/api/drupal/includes--common.inc/function/drupal_add_js/6 :: $scope パラメーターを「フッター」に設定することで、これを使用して JavaScript をフッターに追加できます。

function my_module_init(){

    $script = "your script "; // notice no <script> tags
    drupal_add_js($script, 'inline', 'footer');
    // you can also use this function to grab a .js file

}

その drupal_add_js を hook_init() に入れたことに注意してください。そうしないと、Drupal の積極的なキャッシュ機能を使用するときにスクリプトが失われる可能性があるためです。

残念ながら、drupal_add_css の $scope パラメータはありません

于 2010-11-18T20:44:33.123 に答える
5

hook_footerDrupal 6 では生き残れなかったので、同等の関数と Drupal 7 での実装方法を次に示します。

/**
* Implements hook_page_alter().
*/
function example_page_alter(&$page) {
  if (variable_get('dev_query', 0)) {
    $page['page_bottom']['devel']= array(
      '#type' => 'markup',
      '#markup' => '<div style="clear:both;">' . devel_query_table() . '</div>',
    );
  }
}

( http://preprocess.me/drupal-hookfooter-in-drupal-7より)

于 2013-04-09T16:19:03.703 に答える
3

以下をテーマの template.php ファイルに追加できます。

  
function phptemplate_preprocess_page(&$vars) {
  $vars['closure'] .= 'Add markup here';
}
  
于 2009-09-04T09:45:02.193 に答える
2

Drupal には、実装してページのフッターに任意のコードを追加できるフックがあります - hook_footer です。http://api.drupal.org/api/function/hook_footer/6を参照してください

于 2010-05-12T11:04:35.840 に答える
2

それを行うブロックを作成し、そのブロックをクロージャーに入れることができます。

于 2009-09-04T09:57:34.650 に答える
1

...または、おそらく他の回答ほど推奨されていませんが、より直接的に、html を page.tpl.php ファイルに直接追加できます。

于 2009-09-04T22:46:23.683 に答える
1

すでにいくつかの良い提案がなされています:

  • ブロックの使用
  • テンプレートの編集
  • 前処理機能の使用。

最も簡単な方法は、カスタム マークアップを配置できるブロックを作成して追加することです。そのための特別なテンプレートを作成することもできるので、通常の drupal ブロッ​​ク マークアップではなく、ブロック コンテンツに記述したものだけを取得できます。

それはあなたのニーズをカバーするはずです:

  • マークアップが生成される場所を 100% コントロールできます (それらの領域を定義できます)
  • 生成されるマークアップを 100% コントロールできます

サイト管理者にブロックについて知られたくないので、ブロックを使用したくない場合は、2 番目に良い方法は次のとおりです。

  1. テーマ設定にチェックボックスを追加します。
  2. チェックボックスがチェックされているかどうかにかかわらず、前処理ページフックでブール変数を設定します。
  3. ページ テンプレートで変数をチェックし、TRUE の場合は、必要な場所にマークアップを記述します。

これは基本的に上記と同じことを行いますが、ブロックを追加する代わりに、テーマに設定があるだけです。より多くの作業が必要になります。

カスタム モジュールでもほとんど同じことができますが、モジュールでこれを行うのはあまり意味がありません。これは純粋にプレゼンテーションであり、とにかくテーマに依存しているためです。

于 2010-08-27T09:56:49.463 に答える
1

これは、drupal 6 および 7 で機能するちょっとしたトリックです。

    $script = '//--><!]]></script><strong>this is bold html code</strong><script type="text/javascript"><!--//--><![CDATA[//><!--';
    drupal_add_js($script, 'inline', 'footer');

テンプレート ファイルを変更したり、上記で提案した他の方法を使用したりしたくないことは明らかなので、js や css の場合と同様に、ページに html を追加するためにこれが機能するはずです。

于 2011-07-19T20:23:50.807 に答える