查询存档页面的 SiteTree

Query SiteTree for archived pages

我的站点中有几个页面处于存档状态,但看不到 Silverstripe 使用什么来确定页面处于存档状态。

有没有我可以用来确定页面是否处于存档状态的函数,例如

foreach (SiteTree::get() as $page) {
    echo $page->isArchived();
}

或者我可以查询 return 所有存档页面的某种属性?

您可以使用回调来过滤掉存档页面,如下所示:

$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 中的过滤器所做的(例如,当您过滤存档页面时)

我猜它也可以通过数据库查询来实现,但它不会是对字段的简单检查,而很可能是包含多个子查询的查询。