PdoPage и ЧПУ на главной
Здравствуйте!
Помогите с плагином из документации
Помогите с плагином из документации
<?php
// Реагируем только на событие OnPageNotFound
if ($modx->event->name == 'OnPageNotFound') {
// Определяем ключ запроса из настроек
$req = $modx->getOption('request_param_alias');
// Ловим нужный ключ страницы
$pageVarKey = 'page';
// Если в запросе повторяется наш шаблон "pageVarKey-page", то работаем дальше
if (preg_match("#.*?({$pageVarKey}-(\d+))#", $_REQUEST[$req], $matches)) {
// Отрезаем ЧПУ строку и получаем точный адрес текущей страницы
$uri = str_replace($matches[1], '', $matches[0]);
// Ищем страницу по этому адресу
$id = 0;
// Сначала как есть, со слешем на конце
if (!$id = $modx->findResource($uri)) {
// Если не находим - то пробуем отрезать слэш и ищем повторно
$id = $modx->findResource(rtrim($uri, '/'));
}
// Если ресурс найден
if ($id) {
// Добавляем номер страницы в глобальные массивы, чтобы pdoPage их там увидел
$_GET[$pageVarKey] = $_REQUEST[$pageVarKey] = $matches[2];
// И загружаем эту страницу
$modx->sendForward($id);
}
// Если ресурс не был найден - ничего не делаем, возможно запрос поймает другой плагин
}
}
на всякий случай вызов<div class="row justify-content-around">
{$_modx->runSnippet('!pdoPage', [
'parents' => 1,
'templates' => '4',
'useWeblinkUrl' => 1,
'limit' => 14,
'pageLinkScheme' => '[[+pageVarKey]]-[[+page]]',
'sortby' => 'id',
'sortdir' => 'DESC',
'includeTVs' => 'image',
'tpl' => '@FILE chunks/catalog/category.row.tpl'
'tplPageWrapper' => '@INLINE <nav aria-label="Page navigation example"><ul class="pagination pagination-template d-flex justify-content-center">[[+prev]][[+pages]][[+next]]</ul></nav>'
'tplPage' => '@INLINE <li class="page-item"><a href="[[+href]]" class="page-link">[[+pageNo]]</a></li>'
'tplPageActive' => '@INLINE <li class="page-item"><a href="[[+href]]" class="page-link active">[[+pageNo]]</a></li>'
'tplPagePrev' => '@INLINE <li class="page-item"><a href="[[+href]]" class="page-link"> <i class="fa fa-angle-left"></i></a></li>'
'tplPageNext' => '@INLINE <li class="page-item"><a href="[[+href]]" class="page-link"> <i class="fa fa-angle-right"></i></a></li>'
'tplPagePrevEmpty' => '@INLINE <li class="page-item"> </li>'
'tplPageNextEmpty' => '@INLINE <li class="page-item"> </li>'
'cache' => '1'
'cacheTime' => '23400'
])}
</div>
{'page.nav' | placeholder}
Всё работает на всех страницах, кроме главной. При переходе с главной на любую /page-№ «Страница не найдена». Как его переписать, чтобы работал на любых страницах? Комментарии: 1
Вот тут
Ну и подозреваю, что findResource ее не находит.
В этом случае добавьте условие в код, что если строка пуста — то это главная страница ($id = 1).
$uri = str_replace($matches[1], '', $matches[0]);
для главной страницы получается или пустая строка или слеш.Ну и подозреваю, что findResource ее не находит.
В этом случае добавьте условие в код, что если строка пуста — то это главная страница ($id = 1).
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.