Drupal 7:数据库查询文件

Drupal 7: Database Query file

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

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

我正在尝试每隔一段时间从数据库中检索更新的内容,并在不刷新整个页面的情况下更新 DIV。我的问题是,我在哪里可以找到 $page 来自的数据库查询代码?

该内容来自内部节点模板(如果您在该页面上显示节点)或即视图模板....或...取决于您显示的页面。但是,如果我们假设您以某种内容类型 "player" 显示节点页面,您创建的内容将从模板文件 "node--player.tpl.php"

"come"

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

在该文件中,您可以进行数据库查询(通过使用 Drupal 的数据库 api),或者更容易使用 Drupal 的视图模块来查询数据库:

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

页面['content']变量

当 Drupal 显示 "content" 变量时,将其视为将在页面的特定部分呈现的大数据数组。 在此之前,它会从本机界面的块设置(块可见性设置)或覆盖此原始设置的自定义模块(如 f.e)中检索数据。上下文(https://www.drupal.org/project/context)。

>>模板文件

模板文件有点像构建数据并准备好呈现并交付给客户端的最后一站。

一般来说,最佳做法是保持渲染模板完整,并保持pre_hook级别的逻辑和变量操作

>> 所以如果你想 "programmatic" 控制你可以显示的内容,你可以 f.e.:

使用“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') 渲染视图。

这些挂钩可能会帮助您 adding/modifying 您想要的内容

template_preprocess : (挂钩模板

hook_node_view : (在渲染之前改变节点数组数据)

page_alter :(改变页面变量,如内容,header 等等)

hook_views_pre_render :(视图已构建,可以更改渲染过程)

hook_panels_alter :(对于页面管理器和 ctools 方法)

>> 数据库查询 直接查询数据库也可以通过数据库 api 完成,然后呈现,但请注意,您可能会错过 drupal 的钩子功能,并最终拥有高维护代码,从而避免使用方便且更安全的 Drupal 方式。

希望对您有所帮助!

您要做什么:

"I'm trying to retrieve the updated content from DB at an interval and update a > DIV without refreshing the whole page"

,通常是通过 Javascript 从浏览器发送 Http 请求来完成的,而不是从 PHP 在 Drupal 模板文件中执行服务器端的代码,并且被命名为 AJAX。使用 Drupal 执行 AJAX 可以通过多种方式完成,推荐的方法之一是使用 "Drupal AJAX Framework",导致 PHP 代码 "Drupal AJAX API" 调用服务器端将在 Drupal 的输出中为您生成适当的 JavaScript 客户端代码渲染器。 Drupal "Views" 模块也可以帮助完成这项任务,它是 Drupal AJAX 框架的 "aware"。要正确执行此操作,需要对一般 AJAX 机制和 Drupal AJAX 框架有很好的理解。