php - 是否可以在 silverstripe 子站点模块中的所有子站点上显示特定页面?
问题描述
我正忙于在类别页面下附加数据对象,其中一些位于不同的子站点下。但是我在我的数据对象上看不到其他子站点的这些页面,这是有道理的。
起初,我尝试制作一个自定义数组,其中包含数据库中的类别数据。但这返回了一个错误,因为数据是由 GridField 读出的,而我的数组不是 SS_LIST。
我想要做的是允许这些特定页面通过简单的复选框显示在所有子站点上。有没有办法做到这一点?
解决方案
对于一个特定页面,您可以使用手动将其链接到每个子站点SubsitesVirtualPage
。
Subsites 利用AugmentDatabase
神奇的过滤器过滤当前的 SubsiteID。如果您想在全局范围内添加这些页面,它会变得很棘手。
如果只是一些列表,例如在页脚中,您可以执行以下操作:
$list = Page::get()->filter(...);
$list->alterDataQuery(
function ($query, $list) {
$query->setQueryParam('Subsite.filter', false);
}
);
因此,此特定列表不会过滤当前子站点。您可以传递 DataList 并稍后对其进行细化(例如添加其他过滤器、限制、排序等)
一个全球性的解决方案是调整子站点的扩展来满足您的需求。
推荐阅读
- c# - 随机单词选择器选择相同字母的序列?
- python - 在 tkinter 中的帧之间切换
- r - barplot() 中分组条上的标签
- html - 为我的 wix 网站创建一个自动五彩纸屑爆炸 HTML
- java - 如何覆盖子类中的方法并调用父类方法而不丢失数据
- python - 使用 psycopg2 在 python 中使用部门名称显示部门 ID?
- ajax - 当 Ajax 表单提交没有响应输出时我该怎么办?
- angular - Angular 使用带有 BehaviorSubject 和 ExhaustMap 的 NgBusy
- java - Firebase 实时数据库在查询之间按单词搜索?
- typescript - 调用方法时是否应该使用 Typescript 泛型来强制接口?