Можно ли показать определенную страницу на всех дочерних сайтах в модуле подсайта silverstripe? - PullRequest
0 голосов
/ 09 января 2019

Я был занят прикреплением объектов данных на страницах категорий, некоторые из которых находятся на разных дочерних сайтах. Но я не вижу этих страниц других дочерних сайтов в моих объектах данных, что имеет смысл.

Сначала я попытался создать собственный массив, который включает данные категории из базы данных. Но это вернуло ошибку, так как данные считываются GridField, а мой массив не является SS_LIST.

Что я хочу сделать, это разрешить этим конкретным страницам показываться на всех дочерних сайтах с помощью чего-то простого, например, флажка Есть ли способ добиться этого?

1 Ответ

0 голосов
/ 09 января 2019

Для одной конкретной страницы вы можете связать ее с каждым подсайтом вручную, используя SubsitesVirtualPage.

Subsites использует AugmentDatabase, который магически фильтрует текущий SubsiteID. Если вы хотите добавить эти страницы глобально, это будет сложно.

Если это просто несколько списков, например, например. в нижнем колонтитуле вы можете сделать что-то вроде:

$list = Page::get()->filter(...);
$list->alterDataQuery(
    function ($query, $list) {
        $query->setQueryParam('Subsite.filter', false);
    }
);

Таким образом, этот конкретный список НЕ будет фильтроваться для текущего дочернего сайта. Вы можете передать DataList и уточнить его позже (например, добавить дополнительные фильтры, ограничить, отсортировать и т. Д.)

Глобальным решением было бы настроить расширение Subsite, которое выполняет фильтрацию, в соответствии с вашими потребностями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...