Silverstripe 3:如何按标题,日期等对CMS网站树中的页面进行排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Silverstripe 3:如何按标题,日期等对CMS网站树中的页面进行排序相关的知识,希望对你有一定的参考价值。

我正在寻找一个工作示例,该示例默认情况下如何按标题对站点树中的页面进行排序。理想情况下,我只想对某种类型的子页面进行排序。就我而言,我希望我的父投资组合下的所有图库页面均按其标题按字母顺序排序。这是为了在后端CMS中轻松搜索,因为我知道如何在模板中对其进行排序。

我已经找到了这些示例,但不足以解决SS3.1 +问题

http://www.ssbits.com/tutorials/2011/custom-sorting-in-the-cms-sitetree/https://github.com/silverstripe/silverstripe-cms/issues/848

答案

查看您提供的示例和当前的Silverstripe来源,有几种方法可以解决此问题。我的解决方案涉及使用Silverstripe的扩展系统来操纵如何生成层次结构。

如何加载SiteTree

CMS加载站点树的方式有点冗长,因此我将快速简化:

  • 模板SiteTree(用于页面部分)具有用于延迟加载链接树视图的标记
  • 链接树视图(在CMSPagesController_Content.ss中指定的功能)调用一些内部方法来基本上加载CMSMain模板
  • 此模板在CMSMain中回调CMSMain_TreeView函数>

    注意:SiteTreeAsUL允许我们在返回之前使用Silverstripe中的扩展系统进行挂接,尽管我们不想操纵html

  • [SiteTreeAsULCMSMain的功能部分,在SiteTreeAsUL内部被调用。

  • [getSiteTreeFor调用getSiteTreeFor,它是LeftAndMain的功能部分,实际上是在进行HTML的构建,但最重要的是,它调用了正确的“ children”方法。]]
  • 我说的是正确的子方法,因为有几个:

    • LeftAndMain
  • SiteTreeAsUL
  • getSiteTreeFor
  • getChildrenAsUL
  • 因为未指定子方法getChildrenAsUL时调用了Hierarchy。>

    现在,该对孩子们进行排序了...

    调用函数Hierarchy会进行几次调用,但是我们想知道的是它在内部调用了扩展方法AllChildren

因此,要执行您想做的事情,您可能想使用扩展功能AllChildrenIncludingDeletedAllHistoricalChildren编写扩展名。第一个参数是存储为Children的所有子级的列表。

技术说明:它实际上可以是getSiteTreeForit uses a hardcoded default of AllChildrenIncludingDeleted因为如果没有活孩子,它将返回原始结果AllChildrenIncludingDeletedAllChildrenIncludingDeleted。虽然两者都有排序功能,但它们的行为可能有所不同。

augmentAllChildrenIncludingDeleted将允许您做您打算做的事。

类似这样的方法应该起作用:

augmentAllChildrenIncludingDeleted

并且只需将扩展名设置为SiteTree(如果需要,也可以设置为augmentAllChildrenIncludingDeleted,仍然可以使用。]

免责声明:我没有亲自尝试过,但是它遵循Silverstripe如何与扩展一起使用的标准模式,因此您应该没有问题。

当我无法使上述代码正常工作时,我一直在寻找一种在SS4中实现此目标的方法。这就是我想出的。

ArrayList
另一答案

当我无法使上述代码正常工作时,我一直在寻找一种在SS4中实现此目标的方法。这就是我想出的。

ArrayList

以上是关于Silverstripe 3:如何按标题,日期等对CMS网站树中的页面进行排序的主要内容,如果未能解决你的问题,请参考以下文章

我如何根据姓名、数字、金钱、日期等对文本中的单词进行分类?

Silverstripe 3.2:如何在前端表单中动态添加和更新数据对象?

silverstripe 3 addFieldToTab“设置”

如何在 SilverStripe 4 CMS 中添加自定义样式

SilverStripe:如何向另一个网站发出 HTTP 请求?

使用 SilverStripe 的计划任务