在Drupal的page.tpl.php中,以下代码有变量$page,其中包含渲染部分网页所需的html代码。
<?php if ($page['content']): ?>
我试图每隔一段时间从数据库检索更新的内容并更新 DIV 而无需刷新整个页面。我的问题是,在哪里可以找到 $page 产生的数据库查询代码?
最佳答案
页面['内容']变量
当 Drupal 显示“内容”变量时,请将其视为将在页面的特定部分呈现的大数据数组。 在此之前,它会从 native 接口(interface)的 block 设置( block 可见性设置)或从覆盖此原始设置(如 f.e.)的自定义模块中检索数据。上下文(https://www.drupal.org/project/context)。
>> 模板文件
模板文件有点像构建数据并准备渲染并交付给客户端的最后一站。
一般来说,最佳实践是保持渲染模板完整并将逻辑和变量操作保持在 pre_hook 级别。
>> 因此,如果您确实想对可以显示的内容进行“编程”控制,您可以:
使用“node_load”函数渲染特定节点,然后使用node_view($node)
FE
$node = node_load(23);//23是随机的一个节点id
如果(isset($节点)){
$node_data = node_view($node,'默认'');//这是我的节点显示数据
打印 drupal_render($node_data);//这是我的 html
}
使用“theme_render_template”聚合不同数据的渲染模板 https://api.drupal.org/api/drupal/includes%21theme.inc/function/theme_render_template/7
如前所述,使用 views_get_view('view name') 渲染 View 。
像这样的 Hook 可能会帮助您添加/修改您想要的内容
template_preprocess:( Hook 模板
hook_node_view:(在渲染之前更改节点数组数据)
page_alter:(更改页面变量,如内容、标题等)
hook_views_pre_render:( View 已构建,可以更改渲染过程)
hook_panels_alter:(用于页面管理器和 ctools 方法)
>> 数据库查询 对数据库进行直接查询也可以通过数据库 api 完成,然后进行渲染,但请注意,您可能会错过 drupal Hook 功能,并最终得到高维护代码,而这些代码无法使用方便且更安全的 Drupal 方式。
希望有帮助!
关于php - Drupal 7 : Database Query file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31110833/