Drupal 7 向Drupal闭包添加HTML?
要添加javascript,您可以使用:Drupal 7 向Drupal闭包添加HTML?,drupal-7,drupal-6,closures,footer,Drupal 7,Drupal 6,Closures,Footer,要添加javascript,您可以使用: drupal_add_js 与css类似: drupal_add_css 但是如果我只想在页面的末尾添加html呢。例如,在页面末尾添加一个包含一些文本的div?您可以将以下内容添加到主题的template.php文件中: function phptemplate_preprocess_page(&$vars) { $vars['closure'] .= 'Add markup here'; } 您可以编写一个块来执行此操作,并将该块放入
drupal_add_js
与css类似:
drupal_add_css
但是如果我只想在页面的末尾添加html呢。例如,在页面末尾添加一个包含一些文本的div?您可以将以下内容添加到主题的template.php文件中:
function phptemplate_preprocess_page(&$vars) {
$vars['closure'] .= 'Add markup here';
}
您可以编写一个块来执行此操作,并将该块放入闭包。…或者,可能不像其他答案那样推荐,但更直接的是,您可以直接将html添加到page.tpl.php文件。Drupal有一个钩子,您可以实现并添加任何代码到页面的页脚-钩子页脚。参见已经有人提出了一些很好的建议:
- 使用块
- 编辑模板
- 使用预处理函数
- 您可以100%控制标记的生成位置(您可以在标记中定义区域)
- 您可以100%控制生成的标记
您可以在自定义模块中执行几乎相同的操作,但在模块中执行此操作没有多大意义,因为这纯粹是演示,而且您始终依赖于您的主题。如果您希望更改基于主题,这里有很多建议都是可行的,但是如果您希望此操作来自模块,使用块区域,页面模板或页面预处理不会剪切它,因为您将更改与主题绑定。 从模块化的角度来看,以下选项是最好的: hook\u footer()::my\u module\u footer()应该返回一个HTML字符串,甚至可以是javascript。例如
function my_module_footer(){
return "<script type='text/javascript'>//your script</script>"
}
function my_module_footer(){
返回“//您的脚本”
}
您可以使用drupal$_GET['q']来获取页面URL,并使该返回对页面URL是有条件的
否则,我有时使用$GLOBALS[“\u add\u my\u footer”]作为布尔值,并在模块中的各个点设置它,然后在hook\u footer()中,查看它是否为真
drupal_add_js--api.drupal.org/api/drupal/includes--common.inc/function/drupal_add_js/6::您可以通过将$scope参数设置为“footer”,将javascript添加到页脚中,例如
函数my_module_init(){
$script=“您的脚本”;//注意没有标记
drupal_add_js($script,'inline,'footer');
//您还可以使用此函数获取.js文件
}
请注意,我将drupal_add_js放入hook_init()——我这样做是因为如果不这样做,当使用drupal的主动缓存特性时,脚本可能会丢失
不幸的是,drupal_add_css没有$scope参数,这里有一个小技巧可以在drupal 6和7中使用
$script = '//--><!]]></script><strong>this is bold html code</strong><script type="text/javascript"><!--//--><![CDATA[//><!--';
drupal_add_js($script, 'inline', 'footer');
$script='/-->这是粗体html代码因为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>',
);
}
}
/**
*实现hook\u page\u alter()。
*/
功能示例_page _alter(&$page){
if(变量_get('dev_query',0)){
$page['page_bottom']['devel']=数组(
“#键入”=>“标记”,
“#markup'=>”.devel_query_table()”,
);
}
}
(From)我不建议使用block,因为仅仅在页脚上添加一些元素就太过分了。 这是一个钩子,您可以使用它为Drupal7添加
标记之前的内容
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>',
);
}
函数挂钩页面构建(&$page){
$page['page\u bottom']['YOUR\u MODULE']=array(
“#markup”=>“我想在页面的bootom处插入”,
);
}
我想这样做,当我启用一个模块时,它会出现在页面中,如果我禁用该模块,它不会出现。所以这些方法都不起作用。添加一个条件来检查模块是否存在:同意Jeremy。我甚至使用了一个块来添加一个脚本SRC标记,它工作得很好。
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>',
);
}