使用hook_views_query_filter需要帮助 -- 6 领域 和 views 领域 drupal 相关 的问题

Need Help using hook_views_query_filter


3
vote

问题

中文

我正在使用hook_views_query_filter将我自己的where子句条件附加,其中包含视图生成的查询的where子句。

所以我正在使用这个钩子。

这是我的代码

     function mymodule_views_query_filter(&$view, $query) {  if($view->name = "myview") {  $query->where[1] = array(             'clauses' => array(                             '0'=>"field_test_value=0",                               ),             'args' => array('0' => 'test1', '1' => 'test2'),             'type' => 'OR',             ); } print_r($query); }   

所以print_r()funtion后的where子句变得如此。

  [where] => Array     (         [0] => Array             (                 [clauses] => Array                     (                         [0] => node.type in ('%s')                         [1] => node.status <> 0                         [2] => term_data.name = '%s'                         [3] => term_data_term_node__term_data.name = '%s'                     )                  [args] => Array                     (                         [0] => test1                         [1] => test2l                         [2] => test3                     )                  [type] => AND             )          [1] => Array             (                 [clauses] => Array                     (                         [0] => field_test_value=0                     )                  [args] => Array                     (                         [0] => test1                         [1] => test2                     )                  [type] => OR             )      )   

其中来自Where子句的0索引来自视图查询和来自我的代码的1个索引的1个索引。 但它只执行where子句的1个索引,并仅在owning_test_value = 1且我想要这样的东西时显示结果。

  Where (node.type in ('%s') AND node.status <> 0 AND term_data.name = '%s' AND term_data_term_node__term_data.name = '%s') OR field_test_value=0   
英文原文

I am using hook_views_query_filter to append my own where clause condition with the where clause of the query generated by the view.

So for this I am using this hook.

Here is my code

   function mymodule_views_query_filter(&$view, $query) {  if($view->name = "myview") {  $query->where[1] = array(             'clauses' => array(                             '0'=>"field_test_value=0",                               ),             'args' => array('0' => 'test1', '1' => 'test2'),             'type' => 'OR',             ); } print_r($query); } 

So the where clause becomes like this after print_r() funtion.

[where] =&gt; Array     (         [0] =&gt; Array             (                 [clauses] =&gt; Array                     (                         [0] =&gt; node.type in ('%s')                         [1] =&gt; node.status &lt;&gt; 0                         [2] =&gt; term_data.name = '%s'                         [3] =&gt; term_data_term_node__term_data.name = '%s'                     )                  [args] =&gt; Array                     (                         [0] =&gt; test1                         [1] =&gt; test2l                         [2] =&gt; test3                     )                  [type] =&gt; AND             )          [1] =&gt; Array             (                 [clauses] =&gt; Array                     (                         [0] =&gt; field_test_value=0                     )                  [args] =&gt; Array                     (                         [0] =&gt; test1                         [1] =&gt; test2                     )                  [type] =&gt; OR             )      ) 

Where the 0 index of the where clause is coming from the view query and the 1 index of the where is clause is coming from my code. But it only executes the 1 index of the where clause and display the results only if Where field_test_value=1 and I want something like this.

Where (node.type in ('%s') AND node.status <> 0 AND term_data.name = '%s' AND term_data_term_node__term_data.name = '%s') OR field_test_value=0 
     
 
 

回答列表

0
 
vote
vote
最佳答案
 

您不应该直接更改查询对象属性。您需要使用它提供的方法。在这种情况下,您需要使用 add_where() 。我想你想考虑这样的东西:

  <?php $clauses = array("field_test_value='%s'"); $args = array('test1'); $query->add_where(1, $clauses, $args); $query->set_group_operator('OR'); // this is the operator that goes between WHERE groups ?>   
 

You shouldn't alter the query objects properties directly. You need to use the methods it provides. In this case, you need to use add_where(). I think you want to consider something like this:

<?php $clauses = array("field_test_value='%s'"); $args = array('test1'); $query->add_where(1, $clauses, $args); $query->set_group_operator('OR'); // this is the operator that goes between WHERE groups ?> 
 
 

相关问题

1  Drupal + Solr,基于自定义节点重量的升压结果  ( Drupal solr boost result based on custom node weight ) 
我使用带有apachesolr搜索模块的drupal 6。 在我的网站上,所有访问者都可以向任何答案标记任何节点,答案"您是否找到了你正在寻找的东西?" 。基于这些答案,我计算存储在单独的DB表中的每个节点的自定义排名分数。 现在我想在SOLR中排序/提升搜索结果时包括此分数,使那些具有最佳相关性/分数的节点在上面出...

2  实现jQuery-UI选项卡  ( Implementing jquery ui tabs ) 
我在我的自定义主题下的文件夹中拥有我的所有JS文件: htdocs/themes/<mytheme>/js 我以这种方式在'mytheme.info'中加载所有这些js文件: scripts[] = js/<script1.js> scripts[] = js/<script2.js> 所有Jav...

0  如何打印TPL文件中的视图生成的块?  ( How to print block generated by views in the tpl file ) 
我有一个名称的块:"共享产品" (块号5)由我的视图生成,名称:"main_product_deal" 。在此视图中,我有9个街区。 现在在我的.tpl文件中我需要打印这个块。 我已经看到了函数'module_invoke'但不起作用。 我的代码是: //On my tpl file <?php $blo...

1  禁用配置文件编辑页面上的用户字段  ( Disable user field on profile edit page ) 
我有一个logintoboggan(http://drupal.org/project/logintoboggan/)模块,我的登录是一个电子邮件地址,所以我不想在我的个人资料编辑页面上有一个"名称:" 字段。 但是当我只打电话给我的主题预处理页面: $vars['form']['account']['name...

1  是否通常可以多次添加相同的Drupal JavaScript是安全的吗?  ( Is it generally safe to add same drupal javascript multiple times ) 
我正在尝试通过Ajax调用加载内容,该调用可能包含JavaScript及其设置。这或多或少地工作,但我无法确保之前已插入和执行某些JavaScript代码。现在我需要找出答案,无论是由Modules JavaScript代码是否经过多次执行的问题,我都需要修复模块JavaScript,或者我是否必须采取其他预防措施。...

0  按视图中排序用户按Drupal 6中创建的节点的数量  ( Sort users in view by amount of nodes created in drupal 6 ) 
在Drupal答案中,我发现如何在drupal 7 中进行操作,但显然我需要它为d6站点。 到目前为止,我在我的视图设置中没有找到任何过滤器,允许执行此操作,也没有在D6中类似于D7的关系。 更新:更多地看待关于此问题的Drupal 7版本的问题。似乎这个问题只是关于提到视图中创建的节点的数量,而不是使用该金额作为排...

2  如何隐藏/排除产品列表的产品  ( How to hide exclude a product for the list of products ) 
我想隐藏或排除由Ubecart显示的产品列表中列出的产品(例如,在目录列表中,或分类学术语显示的节点列表)。我想要的只是允许用户直接访问产品(例如电子邮件)。 ...

0  如何隐藏节点视图页面上的CCK的某些值?  ( How can i hide certain values of cck on node view page ) 
当CCK字段可以具有多个值时,我想隐藏在节点模板上打印某些值。 例如, 如果 field_example 具有 "red" "blue" "yellow" "black" "white" 我需要隐藏 "black" and "white" 并只打印在模板文件上的其余部分。 ...

2  Drupal Ahah不工作  ( Drupal ahah not working ) 
我正在努力制作一个啊啊。问题是啊是忽略的。当我在提交按钮上检查类时,它没有"AHAH-Counceded" 类。真的很有趣的是,啊啊,啊啊,我的网站上的工作完美,甚至是我创建的几乎相同的形式。这是我如何创建Ahah提交按钮: page--mycontent-type.page.tpl1 我检查了菜单路径,它是...

1  从父节点显示子节点内容  ( Display in the child node content from the parent node ) 
我是Drupal 6的新问题,我有一个特定的问题,到目前为止无法解决。 在我的项目中,我正在使用分类菜单模块。所以菜单结构如下所示。 项目1 -subitem1(node1-&gt; content_type1) --subsubitem1(node2-&gt; content_type2) --subsubi...

0  保存内容时,只能让用户#1通过所需字段的所有验证  ( Letting only user 1 pass all the validations of required fields when saving con ) 
是否有任何方法可以让用户#1保存某些内容类型的内容而不验证必填字段? ...

0  不同的cusztomizable用户配置文件类型[已关闭]  ( Different cusztomizable user profile types ) 
很难讲述这里被问到的内容。这个问题含糊不清,模糊,不完整,过于广泛的或修辞,不能以目前的形式合理地回答。有关帮助澄清此问题,以便可以重新开放,访问Help Center 。 ...

-7  将PHP登录页面集成到Drupal [已关闭]  ( Integrate php login page to drupal ) 
很难讲述这里被问到的内容。这个问题含糊不清,模糊,不完整,过于广泛的或修辞,不能以目前的形式合理地回答。有关帮助澄清此问题,以便可以重新开放,访问Help Center 。 ...

0  使用Drupal 6的表单Ahah将更新一个下拉域字段的下拉字段  ( Using drupal 6s form ahah to have one dropdown field update the values of a sec ) 
我正在处理一对形式的字段,直接互相实现彼此。特别是我处理的问题是,我们有数千名的群体用户可以加入我一直在努力的这个网站。我们正在为该网站创建一些管理分析表单。这些表格的一部分是按组过滤。 问题是,大多数人都不知道一个小组的名称,只有它的首字母。因此,而不是使用自动完成我们提出了两次下降。第一个包含组Z的选项A至Z,字...

0  我想要customze menu_tree输出  ( I want to customze menu tree output ) 
我在这个URL http://api.drupal.org/api/drupal/includes%21menu.inc/function/theme_menu_tree/6momment-1073 代码是 <?php function phptemplate_menu_tree($tree,$menu_n...

0  在块中覆盖数据  ( Overriding data in a block ) 
我有一个通过drupal管理面板手动创建的块。 我想覆盖它,以便在它中实现一系列数据,这是一个相应的html。 有没有简单的方法来做这个? 我也可以用hook_block以编程方式创建块,而不是使用管理面板。 我不介意做它,你推荐哪种方式? ...

0  添加社交媒体链接(Facebook,Google Plus)  ( Adding of social media links facebook google plus ) 
在我的网站我已经添加了 facebook,如, google plus 和 addthis 模块。 facebook只显示在文章的底部,如果我们在没有节点的归档页面中,它将不会显示,其中没有全视图显示。 Google Plus也不会在Teaser Mode中显示主页 addthis显示在底部。 所以我已经前进了...

0  经过认证用户的术语实地权限  ( Term field permission for authenticated user ) 
我已安装Tern_Fields模块。 我已经向分类词汇添加了一个术语字段。该字段的规范是。 类型:文件 小部件:图像 现在,当我尝试为分类学术语上传图像时,它适用于管理员,但是当我尝试将图像上传作为站点管理者的分类术语时,它给了我以下错误。 The selected file test.jpeg could no...

0  如何获取类型列表字段的项目?  ( How do i get items of a field of type list ) 
我已创建一个包含10项的列表字段(允许值)。现在我想以编程方式获得10个项目。如何得到它们? ...

0  如何在D6中主题WebForm?  ( How to theme webform in d6 ) 
我有一个网站,是由外部组开发的自定义主题。我想自定义WebForm外观。 在我的形式下,有网格领域。这些网格字段需要具有描述。但在我的自定义主题中,在网格下出现说明,我希望它看起来就在标签和网格之间。我希望你能看到我的意思。 在 theming.txt 似乎我必须编辑 99887661 并将其保存到我的主题文件夹中。...




© 2021 it.wenda123.org All Rights Reserved. 问答之家 版权所有


Licensed under cc by-sa 3.0 with attribution required.