You are here

定义标题回调

如果没有在菜单项中定义标题回调的话,Drupal将默认使用t()函数。我们也可以明确地给出这个回调函数的名字,在title callback键中声明它就是了:

 
function menufun_menu() {
    $items['menufun'] = array(
        'title' => 'Greeting',
       'title callback' => 't',
        'description' => 'A salutation.',
        'page callback' => 'menufun_hello',
        'access arguments' => array('receive greeting'),
    );
}
 
注意 不管title callback键的值如何,description键总是使用t()来翻译的。这里没有描述回调键。
 
    嗯。如果我们为标题回调声明自己的函数,那会怎么样呢?那就让我们看看吧:
 
function menufun_menu() {
    $items['menufun'] = array(
        'title' => 'Greeting',
       'title callback' => 'menufun_title',
        'description' => 'A salutation.',
        'page callback' => 'menufun_hello',
        'access callback' => TRUE,
    );
 
    return $items;
}
 
/**
* Page callback.
*/
function menufun_hello() {
    return t('Hello!');
}
/**
* Title callback.
*/
function menufun_title() {
    $now = format_date(time());
    return t('It is now @time', array('@time' => $now));
}
 
    如图4-10所示,通过使用一个自定义标题回调,就可以实现在运行时设置菜单项标题了。但是,如果想让菜单项标题和页面标题不一样时,那该怎么办呢?简单。我们可以使用drupal_set_title()来设置页面标题:
 
function menufun_title() {
    drupal_set_title(t('The page title'));
    $now = format_date(time());
    return t('It is now @time', array('@time' => $now));
}
 
4-10.标题回调设置了菜单项的标题
    这样就将页面和菜单项的标题分离了开来,如图4-11所示。
4-11. 将菜单项和页面的标题分离开来
 老葛的Drupal培训班 Think in Drupal

Drupal版本: