在page.tpl.php of Drupal中,以下代码具有变量$page,其中包含呈现部分网页所需的html代码。
<?php if ($page['content']): ?>
我尝试从DB中检索更新的内容,并在不刷新整个页面的情况下更新DIV。我的问题是,在哪里可以找到$page产生的DB查询代码?
发布于 2015-06-29 04:32:46
页面“内容”变量
当Drupal显示"content“变量时,请将其视为将在页面特定部分呈现的大量数据。在此之前,它要么从本机接口的块设置(块可见性设置)检索数据,要么从覆盖此原始设置(如f.e )的自定义模块中检索数据。上下文(https://www.drupal.org/project/context)。
>>模板文件
模板文件类似于构建数据并准备呈现并交付给客户端的最后一站。
通常,最佳实践是保持呈现模板的完整性,并将逻辑和变量操作保持在pre_hook级别上。
因此,如果您想要对可以显示的内容拥有“编程”控制,则可以使用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“template/7聚合不同数据的模板
如前面所述,使用views_get_view(“视图名称”)呈现视图。
这样的钩子可以帮助您添加/修改您想要的内容。
template_preprocess:(钩子模板
hook_node_view:(在呈现之前更改节点数组数据)
page_alter:(更改页面变量,如内容、标题等)
hook_views_pre_render:(视图是生成的,可以更改呈现过程)
hook_panels_alter:(用于页面管理器和ctools方法)
>>数据库查询对数据库执行直接查询也可以通过数据库api完成,然后呈现,但是要注意,您可能会错过drupal钩子功能,最终会有高维护代码逃避方便和安全的Drupal方式。
希望能帮上忙!
发布于 2015-06-29 01:24:42
该内容来自内部节点模板(如果您在该页上显示节点),或即在所显示的页面上查看template....or...depending。但是,如果我们假设您正在以某种内容类型显示节点页"player“,您创建的内容将”来自“模板文件”node -player.tpl.php“。
https://www.drupal.org/node/1089656
在该文件中,您可以执行数据库查询(通过使用Drupal的数据库api),甚至可以更容易地使用Drupal的视图模块查询数据库:
发布于 2015-06-29 04:48:58
你想要做的是:
“我试图在不刷新整个页面的情况下从DB中检索更新的内容,并更新一个> DIV”
,通常是通过Javascript从浏览器发送Http请求,而不是在Drupal模板文件中从执行服务器端的PHP代码发送Http请求,名为AJAX。使用Drupal进行AJAX可以通过多种方式完成,推荐的方法之一是使用“”,从而生成带有"Drupal“调用服务器端的PHP代码,该服务器端将在Drupal的输出中为您生成适当的JavaScript客户端代码呈现器。Drupal“视图”模块也可能对此任务有所帮助,因为它“了解”Drupal AJAX框架。要正确地做到这一点,需要对一般AJAX机制和Drupal框架有很好的理解。
https://stackoverflow.com/questions/31110833
复制