如何在Drupal 7中覆盖已添加的meta标签?
如何在Drupal中覆盖主题添加的viewport Meta标签
要覆盖主题里的这个viewport设置,关键在于使用和主题代码完全相同的标识符(第二个参数),并且确保你的代码在主题的代码之后执行。
核心原因
主题里的代码用了bootstrap_responsive作为drupal_add_html_head()的第二个参数,这个参数是该HTML头部元素的唯一标识。如果你的代码不指定这个相同的标识,Drupal会把它当成一个新的meta标签添加,而不是覆盖原来的。
完整的覆盖代码
你需要补全代码,并且指定相同的key:
drupal_add_html_head(array( '#tag' => 'meta', '#attributes' => array( 'name' => 'viewport', 'content' => 'maximum-scale=1.0' // 你的自定义内容 ), ), 'bootstrap_responsive'); // 必须和主题里的key一致!
确保代码执行顺序
为了让你的代码覆盖主题的设置,需要保证它在主题的代码之后运行:
- 如果你是在自定义模块里写,推荐用
hook_page_build()或者hook_preprocess_html()(可以给钩子设置更高的权重,确保晚执行) - 或者在自定义主题的
template.php里使用hook_preprocess_html(),子主题的代码会在父主题之后执行,刚好能覆盖父主题的设置
举个模块里的hook_page_build示例:
function yourmodule_page_build(&$page) { drupal_add_html_head(array( '#tag' => 'meta', '#attributes' => array( 'name' => 'viewport', 'content' => 'maximum-scale=1.0' ), ), 'bootstrap_responsive'); }
这样就能完全替换掉主题里原来的viewport设置,不需要修改主题供应商的文件啦。
内容的提问来源于stack exchange,提问作者igorpavlov
相关产品推荐
相关产品推荐

