我正在尝试创建一个Drupal自定义模块,该模块将包含特定微数据标记(以及其他内容)的任何页面或文章内容。我已经成功地在标题和结束标记之前插入了代码,但是当我尝试将页面内容封闭时,它只是在内容的末尾将所有内容混合在一起。
例如,这是模块代码:
function my_module_page_build(&$page) {
// add manifest value to header
$manifest_code = "..."
$page['header']['manifest'] = array(
"#weight" => 0,
"#markup" => t($manifest_code)
);
// add opening microdata tags
$opening_microdata = "...";
$page['content']['my_module_open_microdata'] = array(
"#weight" => 0,
"#markup" => t($opening_microdata)
);
$closing_microdata = "...";
$page['content']['my_module_close_microdata'] = array(
"#weight" => 25,
"#markup" => t($closing_microdata)
);
// add javascript to footer
$javascript = "...";
$page['page_bottom']['my_module_javascript'] = array(
"#weight" => 0,
"#markup" => t($javascript)
);
}
我不想将结束微数据插入$page['page-bottom']
插槽,因为我不想在微数据标记中包含其中一些链接和其他代码。我也尝试使用负重量来提升它,但没有运气。
我已尝试搜索有关Node或Blog或文章结构的更多信息,以查看代码是否有其他插槽,但我找不到任何内容。
我确信这很容易 - 有没有我理解页面结构的资源?我错过了一些简单的解决方案?
答案 0 :(得分:2)
两种可能的解决方案:
尝试the first comment on hook_page_build的提示,这会使你的体重声明真正生效。 (但不确定重置#sorted
标志是否会产生不利影响。)
从使用hook_page_build()
切换到your_module_preprocess_page(&$variables)
,将微数据标记和其他内容作为自定义条目添加到'$ variables'数组中。然后调整页面模板以根据需要放置这些附加变量。这可以让您对添加的位置进行相当不错的控制,但价格与主题自定义相关(即,它适用于自定义网站构建,但如果您的模块适用于任意主题的一般用途,则效果不佳)。 / p>