仅将Meta标签添加到特定页面

时间:2012-10-11 09:35:21

标签: drupal drupal-7 meta-tags

我是Drupal 7的新手。

我有不同的基本页面,我想使用元标记遍历每个页面:

<meta http-equiv="refresh" content="20; url=http://sitename/node/page2" />

第2页将包含元标记

<meta http-equiv="refresh" content="10; url=http://sitename/node/page3" />

我该怎么做?我希望仅在基本页面上添加元标记

我尝试使用TEMPLATEUSED_preprocess_html添加元标记但是我已经意识到这是错误的,因为它不是动态的并且适用于每个页面。

2 个答案:

答案 0 :(得分:1)

drupal_add_html_head可用于向标题添加标记,请查看以下示例。

// First, we must set up an array
$element = array(
  '#tag' => 'link', // The #tag is the html tag - <link />
  '#attributes' => array( // Set up an array of attributes inside the tag
     'href' => 'http://fonts.googleapis.com/css?family=Cardo&subset=latin', 
     'rel' => 'stylesheet',
     'type' => 'text/css',
  ),
);
drupal_add_html_head($element, 'google_font_cardo');

这将输出以下HTML:

<link href="http://fonts.googleapis.com/css?family=Cardo&amp;subset=latin" rel="stylesheet" type="text/css" />

答案 1 :(得分:1)

这是一个老问题,但它仍然没有更具体的回应。似乎我们必须使用preprocess_html在template.php中添加head元素。 $ node不可用(至少我无法从template.php / preprocess_html中访问它)但我可以使用drupal_get_path_alias获取路径,这是原始问题所要求的。

这是我的工作范例:

function THEMENAME_preprocess_html(&$variables) {
  if (drupal_get_path_alias() == "node/45") {
    $meta_refresh = array(
      '#type' => 'html_tag',
      '#tag' => 'meta', 
      '#attributes' => array( 
         'http-equiv' => 'refresh',
         'content' => '900, url=/node/45',
      ),
    );
    drupal_add_html_head($meta_refresh, 'meta_refresh');
  }
}

使用案例陈述可能更适合Warren的两条路径。