在Drupal的page.tpl.php中,以下代码包含变量$ page,其中包含呈现网页部分所需的html代码。
<?php if ($page['content']): ?>
我试图以一定间隔从DB检索更新的内容并更新DIV而不刷新整个页面。我的问题是,在哪里可以找到$ page出现的数据库查询代码?
答案 0 :(得分:1)
该内容来自内部节点模板(如果您在该页面上显示节点)或视图模板....或...取决于您显示的页面。但是如果我们假设您在某些内容类型中显示节点页面&#34;播放器&#34;你创建的内容会来#34;来&#34;来自模板文件&#34; node - player.tpl.php&#34;
https://www.drupal.org/node/1089656
在该文件中,您可以进行数据库查询(使用Drupal的数据库api),甚至可以更轻松地使用Drupal的视图模块来查询数据库:
答案 1 :(得分:1)
page ['content']变量
当Drupal显示“内容”变量时,请将其视为将在页面的特定部分呈现的大数据数组。 在此之前,它要么从本机接口的块设置(块可见性设置)中检索数据,要么从覆盖此原始设置的自定义模块(如f.e.)中检索数据。上下文(https://www.drupal.org/project/context)。
<强>&GT;&GT;模板文件
模板文件有点像构建数据并准备好呈现并传递给客户端的最后一站。
一般来说,最佳做法是保持渲染模板不变,并将逻辑和变量操作保持在pre_hook级别。
<强>&GT;&GT;因此,如果你想对你可以展示的东西进行“程序化”控制,你可以这样做:
使用“ node_load ”函数渲染特定节点,然后使用node_view($ node)
F.E.
$node = node_load(23); //23 is random a node id
if (isset($node)) {
$node_data = node_view($node,'default''); // here's my node display data
print drupal_render($node_data); // here's my html
}
使用“ theme_render_template ”渲染聚合不同数据的模板 https://api.drupal.org/api/drupal/includes%21theme.inc/function/theme_render_template/7
使用 views_get_view ('view name')渲染视图,如前所述。
这些挂钩可能会帮助您添加/修改您希望的内容
template_preprocess :(挂钩模板
hook_node_view :(渲染前更改节点数组数据)
page_alter :(改变内容,标题等页面变量)
hook_views_pre_render :(构建了视图,可以改变渲染过程)
hook_panels_alter :(用于页面管理器和ctools方法)
<强>&GT;&GT;数据库查询 对数据库进行直接查询也可以通过数据库api进行,然后进行渲染,但请注意,您可能会错过drupal hook功能,并最终获得高维护代码,从而避免了方便,安全的Drupal方式。
希望它有所帮助!
答案 2 :(得分:0)
您要做的是:
“我正在尝试每隔一段时间从DB检索更新的内容并更新&gt; DIV而不刷新整个页面”
,通常使用Javascript从浏览器发送Http请求,而不是在Drupal模板文件中执行服务器端的PHP代码,并命名为AJAX。使用Drupal进行AJAX可以通过多种方式完成,其中一个推荐使用“Drupal AJAX Framework”,导致PHP代码使用“Drupal AJAX API”调用服务器端,为您生成相应的JavaScript客户端Drupal输出中的代码渲染器。 Drupal“Views”模块也可以帮助完成这项任务,“了解”Drupal AJAX框架。要正确地理解这一点,需要很好地理解一般的AJAX机制和Drupal AJAX框架。