使用自定义模块在Drupal上的页面内容之前插入标签

时间:2012-12-14 01:27:29

标签: drupal drupal-7 drupal-modules

我正在尝试创建一个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或文章结构的更多信息,以查看代码是否有其他插槽,但我找不到任何内容。

我确信这很容易 - 有没有我理解页面结构的资源?我错过了一些简单的解决方案?

1 个答案:

答案 0 :(得分:2)

两种可能的解决方案:

  1. 尝试the first comment on hook_page_build的提示,这会使你的体重声明真正生效。 (但不确定重置#sorted标志是否会产生不利影响。)

  2. 从使用hook_page_build()切换到your_module_preprocess_page(&$variables),将微数据标记和其他内容作为自定义条目添加到'$ variables'数组中。然后调整页面模板以根据需要放置这些附加变量。这可以让您对添加的位置进行相当不错的控制,但价格与主题自定义相关(即,它适用于自定义网站构建,但如果您的模块适用于任意主题的一般用途,则效果不佳)。 / p>