如果标题有点令人困惑,请道歉,但这是CMS Concrete5特有的问题。
我正在处理一个新闻/媒体相关网站,该网站由一个主页面组成,该主页面有3个单独的页面列表块,其布局如附带的模型所示。
要在特色页面列表中显示的页面(突出显示为绿色),需要将页面属性is_featured设置为true。 6块页面列表(以红色突出显示)设置为显示所有页面,包括精选页面。两个页面列表都按日期排序,最新显示为第一个。
我遇到的问题是,当内容编写者发布一个特色的新页面时,我会立即与6块页面列表左上角列出的页面重复。也许是一天左右,作为新的'无特色的'内容被添加,重复'页面问题在列表中向下移动时变得不那么成问题,并且在第二页上(我对红色块进行了分页)。
我使用标准的Concrete5页面列表块,并且拥有自定义模板,这些模板只是各种列表的view.php文件(特色,6页和侧栏列表)。
要删除重复内容,我尝试在6页模板的view.php中添加一些代码,这些代码会过滤掉'过去24小时内发布的任何精选页面。虽然这确实有效,但我发现我当时的6页页面列表只显示5页,并且过滤掉了空白的空白页面。页。
我的问题是,是否有一种更清晰,更好的方法可以防止跨页面列表的重复?我不想将页面列表设置为仅显示某些类别(因此没有任何重叠),但是必须有一种方法来实现将这个特定问题考虑在内的内容吗?
答案 0 :(得分:1)
在“6项页面列表”页面列表块自定义模板中,在foreach ($pages as $page) {...}
循环上方添加以下代码。
$list->filterByIsFeatured(false);
$list->setItemsPerPage(6);
$pagination = $list->getPagination();
$pages = $pagination->getCurrentPageResults();
这样做是采用现有的$ list(Concrete \ Core \ Page \ PageList对象)并从页面结果中获取6个非特色页面。应该通过重用$ list来保留页面列表块表单中的选项,排序和过滤。
$ list对象在此处设置:
https://github.com/concrete5/concrete5/blob/develop/concrete/blocks/page_list/controller.php#L225