如何覆盖Drupal视图查询?

如何覆盖Drupal视图查询?,drupal,drupal-views,Drupal,Drupal Views,如何用代码中的自定义SQL查询替换Views 3查询?如果要执行自定义SQL(视图无法生成),例如计算字段或复杂的SQL联接,则需要自定义模块 请参阅以获取入门指南据我所知,您可以使用来修改查询。我假设您也可以使用它来替换查询。以下是几个hook\u view\u query\u alter示例,让您开始学习: 这可能不再与您相关,但在Drupal.org上似乎有一个非常有用的讨论,它似乎回答了我类似的问题 特别是,最初的海报建议附加到hookviews\u views\u pre\u e

如何用代码中的自定义SQL查询替换Views 3查询?

如果要执行自定义SQL(视图无法生成),例如计算字段或复杂的SQL联接,则需要自定义模块


请参阅以获取入门指南

据我所知,您可以使用来修改查询。我假设您也可以使用它来替换查询。以下是几个hook\u view\u query\u alter示例,让您开始学习:


    • 这可能不再与您相关,但在Drupal.org上似乎有一个非常有用的讨论,它似乎回答了我类似的问题

      特别是,最初的海报建议附加到hook
      views\u views\u pre\u execute
      ,其他人可以将其放入自定义模块中,如:

      function mymodulename_views_pre_execute(&$view) {
         if($view->name=="groups_list2") {
            // ...
            $view->build_info['query'] = "SELECT node.nid AS nid ".
               "FROM node WHERE node.type='%s'"; // wrapped for legibility
         }
      }
      
      还有一张海报提到了和(),尽管他们确实提到了这一点,但值得记住

      尽管如此,在Drupal.org上阅读全文绝对值得,因为我发现它非常有用;我希望其他人也这样做


      更新:事实上,这正是我们现在正在做的事情-在自定义模块中重写
      视图\u视图\u预执行
      ,以便在新SQL进入数据库之前注入新SQL。我在Drupal.SE上打开了一个类似(但更具体)的问题,您可能会发现这个问题很有用。

      Views 3仍然是alpha版本。您确定视图2不能满足您的要求吗?是的,视图3是必需的。根据我的经验,观点3在这一点上似乎比较成熟。你能详细说明一下吗?我的意思是-如果要完全覆盖查询,那么为什么要使用视图呢?一个例子是,如果一个组件最初是作为视图构建的,并以该表单为主题,然后在以后的需求更改,那么所需的查询对于视图的创建来说太复杂了。最好只替换视图的查询,从而确保输出的样式不受影响。我一直在寻找可以用来覆盖SQL查询的视图钩子。