php - Drupal 7 : Database Query file

标签 php mysql ajax drupal drupal-7

在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/

相关文章:

PHP Guzzle 5 : Cannot handle URL with PORT number in it

php - 如何为 PhpStorm 注释从不返回控制权的 PHP 函数/方法

php - jQuery html元素动态添加事件处理程序?

javascript - 如何提前关闭来自 php 的 ajax 调用?

jquery - 通过将 jquery ajax 中的文件发布到 asmx 来上传文件

php - MySQL 查询在由第二个表中的另一个值连接的列中查找最流行的值

php - 如何在 Javascript 中使用 PHP

javascript - 参数化动态查询/SQL 清理 NodeJS

python - 使用 latin1 字符集对表中的 UTF8 数据进行编码

javascript - 如何将 JSON 数组中的特定对象元素获取到 JavaScript 数组中