Drupal 7:数据库查询文件

时间:2015-06-29 08:15:20

标签: php mysql ajax drupal drupal-7

在Drupal的page.tpl.php中,以下代码包含变量$ page,其中包含呈现网页部分所需的html代码。

<?php if ($page['content']): ?>

我试图以一定间隔从DB检索更新的内容并更新DIV而不刷新整个页面。我的问题是,在哪里可以找到$ page出现的数据库查询代码?

3 个答案:

答案 0 :(得分:1)

该内容来自内部节点模板(如果您在该页面上显示节点)或视图模板....或...取决于您显示的页面。但是如果我们假设您在某些内容类型中显示节点页面&#34;播放器&#34;你创建的内容会来#34;来&#34;来自模板文件&#34; node - player.tpl.php&#34;

https://www.drupal.org/node/1089656

在该文件中,您可以进行数据库查询(使用Drupal的数据库api),甚至可以更轻松地使用Drupal的视图模块来查询数据库:

https://www.drupal.org/project/views

答案 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框架。