You are here

标题参数

Drupal的翻译函数,可以接受一个字符串和一个用来替换的数组(更多关于t()函数的详细,参看第18章),例如:

t($string, $keyed_array);
t('It is now @time', array('@time' => $now));
 
    那么,如果菜单项的title键就是传递给t()的字符串,那么用来替换的数组放在哪里呢?这个问题问得好。title arguments键就是负责这件事的:
function menufun_menu() {
    $items['menufun'] = array(
       'title' => 'Greeting for Dr. @name',
       'title callback' => 't',
       'title arguments' => array('@name' => 'Foo'),
        'page callback' => 'menufun_hello',
        'access callback' => TRUE,
    );
 
    return $items;
}
 
    在运行时,翻译函数运行了,占位符也被填充了,如图4-12所示。
4-12.标题参数被传递给了标题回调函数。
 
    不过这种替换也有一个缺点。因为定义在菜单钩子中的菜单项是在菜单构建流程期间保存在数据库中的,所以title arguments中的代码是在菜单构建时执行的,而不是在运行时。如果你想在运行时修改你的菜单的话,最好使用title callback键;定义在这里的函数将在运行时运行。
 
警告 title arguments键中的值必须是字符串。整数将被清除掉;因此,'title arguments' => array('@name' => 3)将不起作用,而'title arguments' => array('@name' => '3')则能正常工作。这是因为整数具有特殊含义,你将在接下来看到。
 
老葛的Drupal培训班 Think in Drupal

Drupal版本: