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 种解决方案来尝试。
更改视图中的排序顺序设置 UI。那行不通的。如果我们有 20 个节点可供拉取,我们将提供项目 20 到 11 而不是 10 到 1。门户网站将很好地列出项目 11 到 15,但这仍然不是我们想要的。
将我们的提要限制为仅 5 个项目。那么至少 Ellucian/SharePoint 会列出正确的项目。那行得通,但是 sub-optimal:这是即将发生的事件的提要,最好先接收最近的事件。
说服 Ellucian Portal 不要颠倒 Feed 的顺序。如果可行的话,这肯定是最好的解决方案。门户守护者尚未找到执行此操作的方法。我不知道这是 Keeper、Ellucian 还是 SharePoint 的无能
在 Views 为提要挑选出 10 个项目后,在我们的 Drupal 站点中重新排序提要。我发现最接近有前途的地方是覆盖 Views 模块的 template_preprocess_views_view_rss() 函数。至此,xml的items部分已经生成。我必须将它解析成单独的项目才能求助。可行但丑陋。很高兴找到一个我可以简单地应用 reverse_array().
的地方
有什么想法吗? 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)。
修改提要(使用 MilanG 的回答)给出错误的 但至少强制执行正确的顺序。
看看我是否可以访问 Portal css 并使用 flex-direction 修复它。
从中吸取的两个教训:
一个。只要你让微软参与进来,丑陋就会接踵而至。
b。曼德维尔定律:任何软件 [在本例中为 SharePoint] 为您所做的就是它对您所做的事情。
我们有一个 Drupal 7 站点,它生成 Ellucian Portal(建立在 Microsoft SharePoint 之上)使用的 rss 提要。有一个 "web part"(我认为这是 SharePoint 的术语),它以相反的顺序列出了提要中的 5 个项目标题。我们的提要包含 10 个项目,这意味着 SharePoint 列出的标题是 10 到 6,而不是 1 到 5。呃。我不知道订单反转是 SharePoint 的事情还是 Ellucian 的事情。
我们正在使用 View 模块以标准 Drupal 方式生成视图。
我可以想到 4 种解决方案来尝试。
更改视图中的排序顺序设置 UI。那行不通的。如果我们有 20 个节点可供拉取,我们将提供项目 20 到 11 而不是 10 到 1。门户网站将很好地列出项目 11 到 15,但这仍然不是我们想要的。
将我们的提要限制为仅 5 个项目。那么至少 Ellucian/SharePoint 会列出正确的项目。那行得通,但是 sub-optimal:这是即将发生的事件的提要,最好先接收最近的事件。
说服 Ellucian Portal 不要颠倒 Feed 的顺序。如果可行的话,这肯定是最好的解决方案。门户守护者尚未找到执行此操作的方法。我不知道这是 Keeper、Ellucian 还是 SharePoint 的无能
在 Views 为提要挑选出 10 个项目后,在我们的 Drupal 站点中重新排序提要。我发现最接近有前途的地方是覆盖 Views 模块的 template_preprocess_views_view_rss() 函数。至此,xml的items部分已经生成。我必须将它解析成单独的项目才能求助。可行但丑陋。很高兴找到一个我可以简单地应用 reverse_array().
的地方
有什么想法吗? 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)根据
修改提要(使用 MilanG 的回答)给出错误的
但至少强制执行正确的顺序。 看看我是否可以访问 Portal css 并使用 flex-direction 修复它。
从中吸取的两个教训:
一个。只要你让微软参与进来,丑陋就会接踵而至。
b。曼德维尔定律:任何软件 [在本例中为 SharePoint] 为您所做的就是它对您所做的事情。