2017-08-26 116 views
0

我们有一个Drupal 7站点,生成由Ellucian Portal(构建在Microsoft SharePoint之上)使用的rss提要。有一个“Web部分”(我认为这是SharePoint的术语),它以相反的顺序列出来自Feed的5个项目标题。我们的Feed包含10个项目,这意味着SharePoint将列出标题10到6而不是1 - 5。我不知道订单逆转是SharePoint的事情还是Ellucian的事情。Drupal 7反转查看顺序

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

我可以想到4种类型的解决方案尝试。

  1. 更改视图UI中的排序顺序设置。这是行不通的。如果我们有20个节点需要拉动,我们会将项目20到11而不是10到1喂入。门户网站将很好地列出项目11到15,但这仍然不是我们想要的。

  2. 限制我们的饲料只有5项。那么至少Ellucian/SharePoint会列出正确的项目。这会工作,但不是最优的:这是即将到来的事件的饲料,最好事先准备好最近的事件。

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

  4. 在Views中挑选了10个饲料项目后,在我们的Drupal站点中使用饲料。最接近有希望这样做的地方我已经找到了重写Views模块的template_preprocess_views_view_rss()函数。届时,xml的项目部分已经生成。我不得不将它分解成单个项目来度假。可行但丑陋。很高兴找到一个我可以简单地应用reverse_array()的地方。

任何想法? SharePoint或Portal专家可能会帮助我帮助门户网站的门户。或者Drupal的专家可能会帮助我找到一个更好的地方来采取饲料。或者你拥有的其他东西。

回答

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

0

MilanG提供正确的答案,但它并没有解决根本问题。事实证明,SharePoint(或Ellucian Portal)正在根据<pubDate>对订阅源进行排序,而不是对<项目>订单进行排序。我可以按照我喜欢的任何顺序排列项目,并且它在Portal中显示的内容没有区别。在这一点上,我似乎有两个选项 - 在我的问题中不包括上面的optiojn(3)。

  1. 按摩饲料(使用MilanG的答案),以给出错误< pubdate的>但至少迫使正确的顺序。

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

两个教训,从中学到:

一个。每当你涉及微软时,就会出现丑陋。

b。曼德维尔定律:任何软件[在这种情况下,SharePoint]都会为你做的事情。