如何按年份对 ModX Revolution GalleryAlbums 进行分组

How to group ModX Revolution GalleryAlbums by year

如何按年份对相册进行分组?

例如:

2014
- Album 1
- Album 2

2013
- Album 3

我最近 seen 可以在后端使用类似子文件夹的方法对它们进行分组 - 但是否也可以查询特定文件夹的相册?

我目前正在我的画廊概览中使用此调用:

[[!GalleryAlbums? &sort=`year` &albumCoverSort=`random`  &rowTpl=`galAlbumRowTpl`
                  &toPlaceholder=`galleries` &showAll=`1` &parent=`6`
                  &prominentOnly=`0` &limit=`50`]]
<div class="galleries">[[+galleries]]</div>

目前 GalleryAlbums 代码段不支持按年份排序,即使 Album 对象有一个 "year" 字段:

但是,有几种方法可以做到这一点。

1。编写您自己的代码段

这将是性能最高的选项,但相关说明可能超出此处的范围,因此另一个选项可能是:

2。嵌套模板块

通过将相册嵌套在以年份命名的父相册下来组织相册。因此,您有一个名为“2014”的相册,并且在该相册下有您想要显示那一年的子相册。

然后修改您的代码段调用以包含这些属性:

&showAll=`0`
&parent=`0`

根据 Gallery documentation,这些属性的作用如下:

  • showAll 如果为 1,将显示所有相册,而不考虑其父相册。

  • parent 仅抓取具有此 ID 的父相册的相册。记得把showAll设置为0,不然不行!

现在修改你的 rowTpl,让它变成这样:

<li>[[+name]]
    <ul>[[GalleryAlbums? &showAll=`0` &parent=`[[+id]]` ... ]]</ul>
</li>

这意味着您的 "outer" 片段调用仅获得 "top-level" 相册,因为您指定父属性必须为“0”。然后每个相册的 tpl 再次调用 Gallery 代码段,将父 属性 作为当前迭代相册的 ID,从而返回子相册列表。请注意,在上面的代码示例中,我省略了您需要填充的其他重要属性,例如 &rowTpl。

注意:我看到您正在使用未缓存的令牌调用代码段 !。您可能会通过缓存它来获得性能提升,特别是如果您使用像 StatCache 这样的激进缓存机制。虽然 GalleryAlbums getList 处理器使用其自己的缓存处理程序,但使用嵌套代码段调用(如我在此处描述的调用)可能会降低性能。