You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Drupal自定义主题循环调用drupal_add_html_head仅添加最后一个meta标签问题

解决Drupal循环添加meta标签仅显示最后一项的问题

嘿,我懂你现在碰到的麻烦——循环里调用drupal_add_html_head,结果页面上只留下最后一个meta标签,其实问题核心就在第二个参数的唯一性上!

你看,drupal_add_html_head的第二个参数是元素的唯一标识key,如果多次调用时用了同一个key,Drupal会判定这是同一个元素,后面的调用会直接覆盖前面的内容。你代码里每次都传固定的'description',自然最后只有最后一个meta能留存下来。

修复方案:给每个meta标签生成唯一的key

只需要把第二个参数改成动态的、独一无二的值就行,比如结合循环里的$key或者meta标签的name属性来生成:

foreach ($metatags as $key => $metatag) {
  $metatag_description = [
    '#type' => 'html_tag',
    '#tag' => 'meta',
    '#attributes' => [
      'name' => $metatag['name'],
      'content' => $metatag['content'],
    ]
  ];
  // 用循环的key拼接成唯一标识符,避免覆盖
  drupal_add_html_head($metatag_description, 'metatag_' . $key);
}

要是你更倾向于用meta的name属性作为key的一部分(前提是每个name本身都是唯一的),也可以这么写:

drupal_add_html_head($metatag_description, 'metatag_' . $metatag['name']);

这样每次调用drupal_add_html_head时,第二个参数都是独一份的,Drupal就会把所有meta标签都添加到页面头部,不会再出现覆盖的情况啦。

内容的提问来源于stack exchange,提问作者Pratikshya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:16:02