gpt4 book ai didi

mysql - 如何使用模块修改 Drupal 7.x 中 View 的输出

转载 作者:行者123 更新时间:2023-11-28 23:26:36 26 4
gpt4 key购买 nike

我想修改正在运行的查询以在 View 中创建一个表,但我遇到了困难,所以为了简单起见,我使用了一个简单的 View ,它只列出了一个表中的用户,并试图修改使表有两列的查询。我一直在查看 Drupal 查询的文档,试图找到教程,并查看有关其他人如何修改 Drupal 和 View 中的查询的博客文章,但到目前为止,没有一个有效或展示了如何做这么简单的事情,或者我我尝试按照他们所做的创建简单的查询语句,但没有结果。

我主要尝试使用 hook_views_pre_execute() 但也尝试过 .这就是我的代码目前的样子:

<?php
/**
* Implements hook_views_query_alter().
*/
// This function is called right before the execute process.
function my_module_views_pre_execute(&$view) {
if ($view->name == 'page' && $view->current_display == 'page') { //checks name of the view and what type it is
drupal_set_message("I can make changes to the view here.."); //diagnostic information, shows we can make changes to that view
$query =db_select('node','n')//select base table, alias is n.
->fields('n',array('nid', 'title', 'created', 'uid')); //adding fields nid, title, created, uid.
dpm($query->execute()->fetchAll()); // diagnostic information, shows whats being returned by the query
$query->execute()->fetchAll();

$view->build_info['query'] = $query;
}
}

我可以使用 drupal_set_message("I can make changes to the view here.."); 在 View 上创建消息,并在“ View 设置”选项卡中启用“显示 SQL” query',它的输出是来 self 的模块/代码的查询(它与 Views 创建的表不匹配)。

那么为什么它根本不影响表格输出呢?如何修改正在运行的查询以显示 View (这显然不同于“显示 SQL 查询”输出)?

最佳答案

我在这里仅以 nid 为例,我可以为您提供一个改变 View 输出的想法。

/**
*
* @param type $view
* @param type $query
* Implements hook_views_query_alter(). This function is Used when we need to Alter the query before executing the query.
*/
function mymodule_views_query_alter(&$view, &$query) {
if ($view->name == 'VIEW_NAME' && $view->current_display == 'PAGE_NAME') {
drupal_set_message("I can make changes to the view here.."); //diagnostic information, shows we can make changes to that view
$query =db_select('node','n')//select base table, alias is n.
->fields('n',array('nid', 'title', 'created', 'uid')); //adding fields nid, title, created, uid.
dpm($query->execute()->fetchAll()); // diagnostic information, shows whats being returned by the query
$result = $query->execute()->fetchAll();
$nids = array();
foreach ($result as $value) {
$nids[] = $value->nid;
}
$view->query->where[1]['conditions'][] = array('field' => "node.nid", "value" => $nids, "operator" => "IN");
}
}

hook_views_pre_execute() 在查询构建过程中为时已晚,因此我认为您应该使用 hook_views_query_alter()。

谢谢

关于mysql - 如何使用模块修改 Drupal 7.x 中 View 的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39089614/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com