我需要知道将变量从自定义模块传递到其模板的最简单方法 我创建了custom.module并将custom.tpl.php放在模块文件夹
中function custom_menu(){
$items = array();
$items['custom'] = array(
'title' => t('custom!'),
'page callback' => 'custom_page',
'access arguments' => array('access content'),
'type' => MENU_CALLBACK,
);
return $items;
}
function custom_page() {
$setVar = 'this is custom module';
return theme('custom', $setVar);
}
我添加了主题功能,但它不起作用,任何人都可以建议我这个代码有什么问题
function theme_custom($arg) {
return $arg['output'];
}
function custom_theme() {
return array(
'Bluemarine' => array(
'variables' => 'output',
'template' => 'Bluemarine',
),
);
}
答案 0 :(得分:2)
这对我有用:
function custom_menu(){
$items = array();
$items['custom'] = array(
'title' => t('custom!'),
'page callback' => 'custom_page',
'access arguments' => array('access content'),
'type' => MENU_NORMAL_ITEM,
);
return $items;
}
function custom_page() {
$result = db_query('SELECT * from node');
return theme('custom', array('output' => $result));
}
function custom_theme() {
return array(
'custom' => array(
'arguments' => array('output' => NULL),
'template' => 'custom',
),
);
}
function template_preprocess_custom(&$variables) {
}
答案 1 :(得分:1)
您正在调用错误的主题功能。而不是function theme_custom
它应该是function theme_Bluemarine
。您还需要将数组传递给hook_theme()的变量片段。请参阅一个简单示例here。
使用您的示例:
function custom_menu(){
$items = array();
$items['custom'] = array(
'title' => t('custom!'),
'page callback' => 'custom_page',
'access arguments' => array('access content'),
'type' => MENU_NORMAL_ITEM,
);
return $items;
}
function custom_page() {
$setVar = 'this is custom module';
return theme('custom', array('output' => $setVar));
}
function custom_theme() {
$path = drupal_get_path('module', 'custom');
return array(
'custom' => array(
'variables' => array('output' => null),
'template' => 'custom',
),
);
}
现在在custom.tpl.php中只需要<?php print $output; ?>
答案 2 :(得分:0)
首先,您需要在hook_theme的帮助下声明主题及其行为方式。您可以轻松使用功能主题。
此外,您可能需要使用hook_preprocess。