Могу ли я установить пользовательскую страницу ошибки в silverstripe для определенных типов страниц? - PullRequest
3 голосов
/ 10 апреля 2019

Мне интересно, возможно ли установить пользовательскую страницу 404 на серебряной полосе, специфичной для определенного типа страницы, в то время как все остальные ошибки 404 используют ошибку по умолчанию.

У меня есть определенный тип страницы "Событияmsgstr "на которых страницы событий не опубликованы после их конкретной даты.

У меня также есть статическая страница со ссылками на некоторые события.Этот URL-адрес страницы отправляется участникам, поэтому они по-прежнему будут иметь доступ к странице даже после того, как некоторые события могут пройти.

После того, как событие прошло, оно не публикуется и, следовательно, переход по ссылке приведет к странице ошибки 404.Ссылка по-прежнему будет доступна на статической странице.

Я хочу установить конкретную страницу ошибки для типа страницы события, чтобы при переходе по ссылке на прошлое событие он получал страницу ошибки A. "это событие прошло, перейдите на нашу страницу событий "

Я хочу, чтобы обычная страница ошибок B" страница не найдена, перейдите на нашу домашнюю страницу ", которая будет страницей ошибок для любых других неправильных ссылок на сайте,

Есть ли способ, которым я могу это сделать ??Я использую серебряную полосу 3

1 Ответ

1 голос
/ 15 апреля 2019

Решение для тех, кто сталкивается с этим:

config.yml

RequestHandler:
  extensions:
    - ExpiredEventRedirectExtension

ContentController:
  extensions:
    - ExpiredEventRedirectExtension

ModelAsController:
  extensions:
    - ExpiredEventRedirectExtension

ExpiredEventRedirectExtension.php

public function onBeforeHTTPError404($request)
{
    $urlSegment = $request->param('URLSegment');

    if ($urlSegment == "events") {
        $response = new SS_HTTPResponse();
        $response->redirect("/event-no-longer-available/");
    } 

    throw new SS_HTTPResponse_Exception($response);
}

Это перенаправляет пользователя на событие, которое больше не доступно, которое относится к типу страницы «Страница», если событие было указано ниже типа страницы «события» EventHolder. Если он не пришел с этого URL, на обычной странице ошибки 404 будет отображаться

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