您在這裡

Drupal 7修改網頁HTML和顯示Title的辦法

James Qi 在 2013年5月6日 - 09:58 發表

  以前的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進行設置。

自由标簽:

回應

  可以設置一個名為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 標籤。
  • 自動將網址與電子郵件地址轉變為連結。
  • 自動斷行和分段。