Drupal 7 逆向视图顺序

Drupal 7 reversing view order

我们有一个 Drupal 7 站点,它生成 Ellucian Portal(建立在 Microsoft SharePoint 之上)使用的 rss 提要。有一个 "web part"(我认为这是 SharePoint 的术语),它以相反的顺序列出了提要中的 5 个项目标题。我们的提要包含 10 个项目,这意味着 SharePoint 列出的标题是 10 到 6,而不是 1 到 5。呃。我不知道订单反转是 SharePoint 的事情还是 Ellucian 的事情。

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

我可以想到 4 种解决方案来尝试。

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

  2. 将我们的提要限制为仅 5 个项目。那么至少 Ellucian/SharePoint 会列出正确的项目。那行得通,但是 sub-optimal:这是即将发生的事件的提要,最好先接收最近的事件。

  3. 说服 Ellucian Portal 不要颠倒 Feed 的顺序。如果可行的话,这肯定是最好的解决方案。门户守护者尚未找到执行此操作的方法。我不知道这是 Keeper、Ellucian 还是 SharePoint 的无能

  4. 在 Views 为提要挑选出 10 个项目后,在我们的 Drupal 站点中重新排序提要。我发现最接近有前途的地方是覆盖 Views 模块的 template_preprocess_views_view_rss() 函数。至此,xml的items部分已经生成。我必须将它解析成单独的项目才能求助。可行但丑陋。很高兴找到一个我可以简单地应用 reverse_array().

  5. 的地方

有什么想法吗? SharePoint 或 Portal 专家可能会帮助我帮助 Portal 的管理员。或者 Drupal 专家可能会帮助我找到一个更好的地方来使用提要。或者你拥有的任何其他东西。

尝试使用 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

MilanG 提供了正确的答案,但没有解决根本问题。事实证明,SharePoint(或 Ellucian Portal)根据 而不是 顺序对提要进行排序。我可以按照我喜欢的任何顺序排列这些项目,并且在 Portal 中显示的内容没有区别。此时我似乎有 2 个选项——我的问题中不包括上面的 optiojn (3)。

  1. 修改提要(使用 MilanG 的回答)给出错误的 但至少强制执行正确的顺序。

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

从中吸取的两个教训:

一个。只要你让微软参与进来,丑陋就会接踵而至。

b。曼德维尔定律:任何软件 [在本例中为 SharePoint] 为您所做的就是它对您所做的事情。