我的网站中有几个页面处于存档状态但无法看到Silverstripe用来确定网页处于存档状态的内容。
是否有一个函数可用于确定页面是否处于存档状态,如
foreach (SiteTree::get() as $page) {
echo $page->isArchived();
}
或者我可以通过查询返回所有已存档页面的某种属性?
答案 0 :(得分:1)
您可以使用回调过滤掉已存档的页面,如下所示:
$allPages = Versioned::get_including_deleted('SiteTree');
$deletedPages = $allPages->filterByCallback(function($page) {
// Doesn't exist on either stage or live
return $page->getIsDeletedFromStage() && !$page->getExistsOnLive();
});
上面的代码正是CMS中的过滤器所做的(例如,当您过滤存档页面时)
我想这对数据库查询也是可行的,但它不是对字段的简单检查,但很可能是由多个子查询组成的查询。