当前位置

Drupal 7修改网页HTML和显示Title的办法

James Qi 在 2013年5月6日 - 09:58 提交
内容摘要:以前的Drupal 6版本中使用函数drupal_set_title来修改页面Title是页面的HTML标题和页面显示<h1></h1>中的标题都一起变化,但Drupal 7版......

  以前的Drupal 6版本中使用函数drupal_set_title来修改页面Title是页面的HTML标题和页面显示<h1></h1>中的标题都一起变化,但Drupal 7版本中再调用这个函数的时候发现只是页面HTML标题变更了,但页面显示在<h1></h1>中间的标题却没有变,这在有些情况下其实更好,但在确实需要页面显示标题也变化的时候就不行了,还得想另外的办法。

  下面一段代码放在my_module.module中就可以实现对原来的title进行翻译然后显示在页面中:

/*
* modify <h1>title</h1>, translate
*/
function my_module_preprocess_page(&$vars){
    if (isset($vars['node']) && $vars['node']->type == 'product'){
        $title=$vars['node']->title;
        $title_t=t($title);
        drupal_set_title($title_t);
    }
}

  补充另外一个不算正规但简单有效的办法:添加一个block,在block的php程序中对页面显示title进行设置,例如:

<?php
$nid = arg(1);
$node = node_load($nid);
$title = check_plain($node->title);
$title_t = t($title);
drupal_set_title($title_t);
?>

  还有面包屑,也可以在block中用drupal_set_breadcrumb进行设置。

自由标签:

评论

-- 发自IP地址: 58.48.153.212 (位置 | 谁是)

  可以设置一个名为breadcrumb的block专门用来修改面包屑,block就放在内容(Content)里面,设置文本格式为php以便添加下面的程序来修改面包屑:

<?php
$nid = arg(1);
$node = node_load($nid);

if (isset ($node->field_name['und'][0]['safe_value'])) {
  $name = $node->field_name['und'][0]['safe_value'];
} else {
  $name = NULL;
}

if (isset ($node->field_category['und'][0]['safe_value'])) {
  $category = $node->field_category['und'][0]['safe_value'];
} else {
  $category = NULL;
}

//计算链接

if ($category==NULL) {
  $category_display=NULL;
} else {
  $category_breadcrumb=l($category,"category/$category");
}

$breadcrumb = array();
$breadcrumb[] = l('首页', '<front>');
if ($category!==NULL) { $breadcrumb[] = $category_breadcrumb; }
$breadcrumb[] = $name;

drupal_set_breadcrumb($breadcrumb);

drupal_set_title("$name ($category)");
?>

  上面是一个例子,放置了这个block的页面中,会读取category的内容,添加面包屑为category的链接以及页面标题本身,另外,最后一句也修改了页面标题。

James Qi / 祁劲松

添加新评论

Plain text

  • 不允许使用HTML标签。
  • 自动将网址与电子邮件地址转变为链接。
  • 自动断行和分段。
验证码
本问题用于测试您是否为人类访问者,避免自动垃圾发贴。
图形验证
键入显示在图片中的字符