【问题标题】:How to delete results returned from Views UI如何删除从视图 UI 返回的结果
【发布时间】:2013-03-28 16:41:15
【问题描述】:

我使用 Views UI 获得了预期的结果。但我不想从 Views UI 的输出中显示特定记录>如何实现这一点,我需要任何挂钩吗?

例如。我的视图返回结果为 1,2,3,4。现在我不想在结果中显示 1 。我无法使用 hook_views_query_alter 更改查询,因为“where”子句中使用了 1。

【问题讨论】:

    标签: drupal-7 drupal-views drupal-hooks


    【解决方案1】:

    通过添加一个条件来实现hook_views_query_alter(),该条件将您不希望出现在结果集中的记录排除在外。

    【讨论】:

    • 不,我不能这样做,因为我的场景是这样的:- 例如,用户来到节点 A 页面。现在 B、C、D 是与 A 相关的三个节点。当我想显示与 A 相关的所有节点时,视图显示 A、B、C、D 也是正确的。现在我不希望用户在 A 节点页面中的视图内显示 A 节点。所以我必须从视图结果中删除 A 节点。我也无法更改查询,因为我的查询的 where 子句将是“ContentID”=“A”。
    • 查询将是“ContentID”="A" 是什么意思?我以为您的查询已经存在,除了从结果中排除 A 的部分。
    • 与A相关的部分你是怎么做的?
    • 实际上 A 有一个名为 Subject 的节点引用字段,它是另一种内容类型。假设科目是物理、数学、生物学、化学。现在科目和教师 A、B、C、D、E 的关系如下: - A 教物理、数学、生物学。 B教物理,生物学,C教化学,物理,D教数学生物学,E教化学。用户来拜访A老师。现在我想显示所有像A这样教科目的老师。所以在我的例子中B,C ,D 将被过滤,因为它们与 A 有一个或多个共同主题。但老师 E 将被丢弃,因为该主题与 A 不共同。
    • 在这种情况下,我需要在 where 条件下提供“ContentID”="A",并且我不想在视图中再次显示 A。因此视图将显示 B、C、D 而不是 A、B、C、D。我希望我清楚我的要求。请帮助我实现这一目标。
    【解决方案2】:

    试试这个代码

    function hook_views_pre_render(&$view) {
    
      if($view->name=="ViewName") {  
    
    
    if($view->current_display=='Display') {
    
      unset($view->result[1]);
    
    }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-14
      • 2023-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-06
      • 1970-01-01
      相关资源
      最近更新 更多