我有一个drupal模块,其函数返回附件text / plain,
function mymodule_menu() {
$items = array();
$items[MY_PATH] = array(
'title' => 'some page',
'page callback' => 'myfunction',
'type' => MENU_CALLBACK,
);
}
function myfunction()
{
drupal_set_header('Content-Type: text/plain');
return "some text";
}
但是它返回了page.tpl.php模板中的页面,但是我希望它没有被模仿,我如何覆盖主题以使其返回纯文本?
谢谢,
汤姆
答案 0 :(得分:9)
这将返回纯文本
function myfunction() {
drupal_set_header('Content-Type: text/plain');
print "some text";
exit(0);
}
答案 1 :(得分:7)
或者,您可以使用菜单回调定义中的“投放回调”设置。现在你的页面回调函数将通过一个只打印和退出的自定义函数运行,而不是调用drupal_deliver_html_page(),这是输出所有典型主题标记等的。
function mymodule_menu() {
$items = array();
$items['MY_PATH'] = array(
'title' => 'some page',
'page callback' => 'myfunction',
'type' => MENU_CALLBACK,
'delivery callback' => 'mymodule_deliver_page',
);
return $items;
}
function mymodule_deliver_page($page_callback_result) {
print $page_callback_result;
exit(0);
}
答案 2 :(得分:2)
最好也是最简单的解决方案就是让你的回调打印你的html并且不返回任何内容。
例如,
// Hooks menu to insert new url for drupal
function MYMODULE_menu() {
$items = array();
$items['member-stats.php'] = array(
'page callback' => '_MYMODULE_menu_callback',
'access callback' => TRUE,
);
return $items;
}
// Callback prints and doesn't return anything
function _MYMODULE_menu_callback() {
print "Hello, world";
}
答案 3 :(得分:1)
如果您要创建像html这样的模板 - barebones.tpl.php,只包含
<?php
drupal_set_header('Content-Type: text/plain');
print $barebones;
?>
您可以将该模板挂钩到YOURTHEME_preprocess_html(),如下所示:
function YOURTHEME_preprocess_html(&$variables) {
if (array_key_exists('barebones',$_REQUEST)) {
$variables['barebones'] = $variables['page']['foo']['bar'];
$variables['theme_hook_suggestions'][] = 'html__barebones';
}
}
现在,如果您使用其他查询来调用您的页面?准分子,例如drupal/foo/bar?barebones
,它将返回准系统版本。
在获得结果方面有点棘手。 var_dump($variables['page'])
查看drupal离开文本的位置。它被隐藏在渲染数组中,周围是用于渲染文本的所有信息,您没有使用它。让我想知道在myfunction
内打印它和退出()是否更有效率: - )
答案 4 :(得分:0)
您的模块可以定义模板文件(reference):
<?php
function mymodul_preprocess_page(&$variables) {
foreach ($variables['template_files'] as $file) {
$template_files[] = $file;
if ($file == 'page-node') {
$template_files[] = 'page-'. $variables['node']->type;
}
}
$variables['template_files'] = $template_files;
}
?>
通过为相关页面创建新的.tpl.php文件。 E.g。
页面module.tpl.php
page-module.tpl.php只需要是一个简单的页面,例如
<?php
print $content;
?>