【问题标题】:Use custom module to insert tags before page content on Drupal使用自定义模块在 Drupal 上的页面内容之前插入标签
【发布时间】:2012-12-14 01:27:28
【问题描述】:

我正在尝试创建一个 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'] 插槽,因为我不希望微数据标签中包含这些链接和其他代码。我也尝试过使用负重将其向上移动,但没有成功。

我已尝试搜索有关节点或博客或文章结构的更多信息,以查看代码是否还有其他插槽,但我找不到任何东西。

我确信这很容易——我缺少用于理解页面结构的资源吗?我缺少一些简单的解决方案?

【问题讨论】:

    标签: drupal drupal-7 drupal-modules


    【解决方案1】:

    两种可能的解决方案:

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

    2. 从使用hook_page_build() 切换到your_module_preprocess_page(&$variables),将您的微数据标签和其他内容作为自定义条目添加到那里的“$variables”数组中。然后调整您的页面模板以随意放置这些附加变量。这使您可以很好地控制添加的位置,但代价是与主题自定义相关(即它适用于自定义站点构建,但如果您的模块旨在用于任意主题的一般用途,则效果不佳)。

    【讨论】:

    • #1 到目前为止工作 - 还没有不良影响,但我会密切关注它。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多