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 参数设置为“footer”来使用它来将 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_footer没有在 Drupal 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

您可以编写一个块来执行此操作并将该块放入闭包中。

于 2009-09-04T09:57:34.650 回答
2

Drupal 有一个钩子,您可以实现并将您想要的任何代码添加到页面的页脚 - hook_footer。见http://api.drupal.org/api/function/hook_footer/6

于 2010-05-12T11:04:35.840 回答
1

...或者,可能不像其他答案那样推荐,但更直接的是,您可以将 html 直接添加到 page.tpl.php 文件中。

于 2009-09-04T22:46:23.683 回答
1

已经有人提出了一些好的建议:

  • 使用块
  • 编辑模板
  • 使用预处理功能。

最简单的方法是添加您创建的块,您可以在其中放置自定义标记。你甚至可以为它创建一个特殊的模板,这样你就不会得到你通常的drupal块标记,而只会得到你在块内容中写的东西。

这应该满足您的需求:

  • 您可以 100% 控制生成标记的位置(您可以在其中定义区域)
  • 您可以 100% 控制生成的标记

现在,如果您不想使用块,因为您不希望站点管理员知道该块,那么最好的第二件事是:

  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 回答
1

我不推荐使用 block ,因为它只是在页脚上添加一些元素。这是您可以用来在</body>Drupal 7 标记之前添加内容的钩子。

function hook_page_build(&$page) {
  $page['page_bottom']['YOUR_MODULE'] = array(
    '#markup' => '<div> I want to get inserted at the bootom of the page </div>',
  );
} 
于 2013-11-26T17:27:50.497 回答