是否可以使用模板文件为 AJAX 调用返回 HTML?
我正在开发的一个网站广泛使用 AJAX 来延迟加载页面数据并进行 Twitter 风格的分页。我真的很希望能够通过模板文件呈现 HTML,因为它比在 PHP 函数中构建 HTML 字符串更容易编码和维护。
有没有某种方法可以从数据库获取数据并将其传递给加载 tpl 文件的主题函数?
解决方案: 我如何在主题(' node', $node) 和 drupal_render($node->content) 用于编程 $node 输出
$node = node_load($nid);
$node_view = node_view($node);
echo drupal_render($node_view);
A site I'm working on uses AJAX extensively to lazy load page data and to do Twitter style paging. I'd really like to be able to render the HTML via a template file as it will be easier to code and maintain than building an HTML string in a PHP function.
Is there some way to get the data from the DB and pass it to a theme function that loads a tpl file?
$node = node_load($nid);
$node_view = node_view($node);
echo drupal_render($node_view);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
是的,你可以。
Drupal 7 AJAX 需要一个回调,该回调需要返回已更新且需要返回到浏览器的表单元素,或者包含 HTML 的字符串或自定义 Ajax 命令的数组。
AJAX 命令之一是 ajax_command_html(),您可以使用它插入使用模板从主题函数返回的 HTML。
您可以使用类似于以下代码的代码:
主题函数在
hook_theme()
中定义,如以下代码所示:
要注意的是,模板文件名必须与主题函数的名称匹配;您可以在主题函数名称使用下划线的情况下使用连字符,但您不能拥有名为“foo”的主题函数,该函数使用“bar”作为模板文件的名称。
hook_theme()
报告的模板文件名称不包含在查找模板文件时从 Drupal 添加的扩展名(“.tpl.php”)。Yes, you can.
Drupal 7 AJAX requires a callback that needs to return the form element that has been updated and needs to be returned to the browser, or alternatively, a string containing HTML, or an array of custom Ajax commands.
One of the AJAX commands is ajax_command_html(), which you can use to insert the HTML returned from a theme function using a template.
You could have code similar to the following one:
The theme function is defined in
hook_theme()
as in the following code:To notice that the template filename must match the name of the theme function; you can use hyphens where the theme function name uses underscores, but you cannot have a theme function named "foo" that uses "bar" as name of the template file.
The name of the template file reported from
hook_theme()
doesn't include the extension (".tpl.php") that is added from Drupal when looking for the template file.