0

例如,我在浏览器中查询“ http://mydrupalsite.com/customers/1456 ”所期望的行为是只打开一个带有“body”的普通drupal页面(不是html <body>,而是页面主体,如显示主要信息的区域)由我传递“1456”的函数生成的代码。

我尝试使用 hook_menu 复制这种行为:

$items['customers/%'] = array(
    'access callback' => TRUE,
    'access arguments' => array(1),
    'type' => MENU_CALLBACK,
    'page callback' => 'mycustomer_render',
    'page arguments' => array(1)
);

mycustomer_render() 将接受一个参数(正确传递)并生成一些我想在该主要区域显示的代码。但是,回调将打开一个包含该函数生成的代码的页面。没有侧边栏,没有标题等。

请注意,我不想显示节点信息或任何内容,只是该函数生成的自定义 html 代码。

4

1 回答 1

1

根据您对回调函数的评论:

这几乎是 echo ""; echo htmlDataFromCustomer($arg1); 回声“”;

您希望您的回调函数返回数据,而不是回显它。在回调函数中回显数据将立即将其显示到页面上,并且不允许 drupal 正确运行渲染过程,因此您不会在页面上看到任何其他内容。

要在 drupal 中正确显示您的内容,您的回调函数应该类似于以下内容。

<?php
function mycustomer_render($arg1){
  return '<table>'.htmlDataFromCustomer($arg1).'</table>';
}
?>

但是,如果您只想获得函数输出的内容而没有其他内容,那么您应该回显您的内容,然后是drupal_exit(),如下所示:

<?php
function mycustomer_render($arg1){
  echo '<table>',htmlDataFromCustomer($arg1),'</table>';
  drupal_exit();
}
?>
于 2013-02-12T14:32:20.737 回答