我正在为自定义路线使用挂钩菜单,如下所示:
function mymodule_menu() {
$items = [];
$items['myroute/%'] = array(
'page callback' => 'my_callback',
'page arguments' => array(1),
'access arguments' => array('access content'),
);
return $items;
}
在 theme_hook 中,我添加了一个新的模板功能,如下所示:
function mymodule_theme($existing, $type, $theme, $path) {
$default = array(
'path' => drupal_get_path('module', 'mymodule') . '/templates',
'variables' => array(),
);
return array(
'product_tile' => array_merge($default, array(
'template' => 'product-tile',
)),
);
}
我创建了一个名为“product-tile.tpl.php”的模板文件,它适用于所有情况,并且是一个部分模板。
在回调函数中,我需要返回一个特定的 .tpl.php 模板,如下所示:
function my_callback($parameter) {
$template_data = 'lorem ipsum';
$output = theme('product_tile', array('content' => $template_data ));
echo ($output);
}
关键是:“theme()”函数渲染数据的时间太长,它不仅渲染模板,而且渲染整个 html 结构,这不是必需的,也不是模板的一部分。
例如:模板是:
<div id="my structure></div>
但是,当我收到对“/myroute/myparameter”的回复时,它不是打印我的模板,而是打印所有 html 结构,如下所示:
<html>
<body>......lots of stuff here +js +css + all drupal stuff
<div id="my structure></div>
</body>
</html>
并且需要花费大量时间来打印(例如 10 秒或更多)。
我试图通过使用 cache_get 和 cache_set 来缓存它,但是奇怪的事情正在发生,比如随机的空响应。
有谁知道在 drupal 7 的挂钩菜单中打印部分模板的性能更高的方法?我这种方式非常慢。
提前致谢