Drupal 7反转查看顺序

时间:2017-08-26 01:37:40

标签: sharepoint drupal drupal-7 rss portal

我们有一个Drupal 7站点,生成由Ellucian Portal(构建在Microsoft SharePoint之上)消耗的RSS源。有一个“Web部分”(我认为是SharePoint的术语),它以相反的顺序列出了Feed中的5个项目标题。我们的Feed包含10个项目,这意味着SharePoint列出了标题10到6而不是1 - 5.呃。我不知道订单撤销是SharePoint还是Ellucian。

我们使用View模块以标准Drupal方式生成视图。

我可以考虑尝试4种类型的解决方案。

  1. 更改视图UI中的排序顺序设置。那不行。如果我们有20个节点可供选择,我们将提供20到11而不是10到1的项目。门户网站将很好地列出项目11到15,但这仍然不是我们想要的。

  2. 将我们的Feed限制为仅限5件商品。然后至少Ellucian / SharePoint将列出正确的项目。这会起作用但不是最佳的:这是即将发生的事件的补充,最好先把最近的事件作为最佳事件。

  3. 说服Ellucian Portal不要反转Feed的顺序。如果可行的话,这肯定是最好的解决方案。门户的守护者还没有办法做到这一点。我不知道这是否是守护者,Ellucian或SharePoint的无能。

  4. 在视图选择了10个Feed项目之后,在我们的Drupal网站中查看Feed。我发现最接近有前途的地方是覆盖Views模块的template_preprocess_views_view_rss()函数。到那时,已经生成了xml的items部分。我必须把它分解成单独的物品来度假。可行,但丑陋。很高兴找到一个我可以简单地应用reverse_array()的地方。

  5. 有什么想法吗? SharePoint或Portal专家可以帮助我帮助门户的守护者。或者Drupal专家可以帮助我找到一个更好的地方来采取饲料。或者你拥有的其他任何东西。

2 个答案:

答案 0 :(得分:1)

尝试使用hook_views_post_exexute()挂钩功能重新排序结果。

基本上你必须创建你的模块(如果你还没有模块)并添加功能,如:

function MY_MODULE_views_post_execute(&$view) {
  if ($view->name == 'MY_VIEW') {
    // re-order $view->result here
  }
}

执行视图(查询)后将调用您的函数,您可以在此处更改结果,例如重新排序。

当然,您将取代" MY_MODULE"和" MY_VIEW"使用模块和视图的机器名称...

https://api.drupal.org/api/views/views.api.php/function/hook_views_post_execute/7.x-3.x

答案 1 :(得分:0)

MilanG提供了正确的答案,但它并没有解决潜在的问题。事实证明,SharePoint(或Ellucian Portal)正在基于< pubDate>而不是< item>对Feed进行排序。订购。我可以按照我喜欢的任何顺序排列项目,并且在Portal中显示的内容没有任何区别。此时我似乎有2个选项 - 在我的问题中不计算上面的optiojn(3)。

  1. 按摩饲料(使用MilanG'答案)给出错误的< pubDate>但至少强迫正确的订单。

  2. 看看我是否可以访问Portal css并使用flex-direction进行修复。

  3. 从中吸取两个教训:

    一个。每当你让微软参与其中时,就会出现丑陋。

    湾曼德威尔的法律:任何软件[在这种情况下,SharePoint]为你做的事情都是对你有用的。