D7:通过实体参考字段对内容进行分组

时间:2013-08-19 06:59:38

标签: drupal views drupal-views

在View Unformatted List中,有没有办法将相同内容类型的节点组合在一起?

示例:

内容类型“与会者”中的每个节点都指定即将举办的活动的与会者。其中一些与会者是另一位与会者的“朋友”,为了将他们链接在一起,我使用了一个实体参考字段,如下所示:

http://i.stack.imgur.com/6mWnx.png

现在在视图中,如何让这些链接的朋友在他们参加的与会者之后立即出现? (因此首先显示引用“父”实体,并在?)之后显示任何引用的“子”实体。

格式化示例:

假设我们有Bob,Bill,&汤姆...比尔是唯一一个有朋友参加的人;这两个朋友的名字是Hansel&格莱特。

Hansel&然后,Gretel将在其实体参考字段中选择Bill,输出应显示:

  • 鲍勃
  • 比尔
  • 汉塞尔
  • 格勒泰尔
  • 汤姆

“视图字段视图”模块对我的情况不起作用,因为我实际上使用的是当前不兼容的“视图PDF”模块。视图PDF仍然允许我使用关系,我希望这仍然是可能的 - 即使我必须编写自定义主题信息或其他东西。

1 个答案:

答案 0 :(得分:0)

您可以通过views_query_alter挂钩覆盖视图的排序。

创建自定义模块,并将此代码添加到your_module.module文件中:

<?php

/**
 * Implements hook_views_query_alter()
 */
function YOUR_MODULE_views_query_alter(&$view, &$query) {
  if ($view->name == 'YOUR_VIEW_NAME') {
    $query->orderby = array(
      array(
        'field' => 'COALESCE(ATTENDING_WITH_TITLE_FIELD, FRIEND_TITLE_FIELD)',
        'direction' => 'DESC',
      ),
       array(
        'field' => '(ATTENDING_WITH_TITLE_FIELD = FRIEND_TITLE_FIELD)',
        'direction' => 'ASC',
      )     
    );
  }
}

第一个订单将按照他们正在参与的朋友的名称排序,或者如果不可用则为他们自己的名称(null)。

第二部分将确保与他们有朋友的朋友首先出现。

荣誉:http://blog.blenderbox.com/2011/11/03/how-to-modify-a-drupal-7-view-query-to-order-by-two-columns-simultaneously/