Вывод новостей начинающиеся с букв/цифр и т.п
Пример:
Создаём на сайте страницу /catalog/ в которой может быть вызов контента или что-то подобное — сюда мы будем отправлять юзера.
Создаём плагин и отмечает во вкладке "Системные события" — OnPageNotFound
Более подробный пример тут
PS: перед тем как опубликовать в готовых решениях выложу тут, мб поправить надо что нить
site.ru/catalog/А
site.ru/catalog/Б
site.ru/catalog/В
Создаём на сайте страницу /catalog/ в которой может быть вызов контента или что-то подобное — сюда мы будем отправлять юзера.
[[!pdoPage:default=`Новостей на указанную букву не найдено!`?
&element=`pdoResources`
&parents=`2`
&useWeblinkUrl=`1`
&where=`{"pagetitle:LIKE": "[[!+catalog_name]]%"}`
&tpl=`@INLINE <p>[[+idx]]. <a href="[[+link]]">[[+pagetitle]]</a></p>`
&tplPageWrapper=`@INLINE <ul class="pagination">[[+first]][[+prev]][[+pages]][[+next]][[+last]]</ul>`
]]
[[!+page.nav]]
Создаём плагин и отмечает во вкладке "Системные события" — OnPageNotFound
<?php
if ($modx->event->name != 'OnPageNotFound') {return false;}
$alias = $modx->context->getOption('request_param_alias', 'q');
if (!isset($_REQUEST[$alias])) {return false;}
$request = $_REQUEST[$alias];
$tmp = explode('/', $request);
// Ссылка подходит под заданный формат: catalog/{буква/цифра}
if ($tmp[0] == 'catalog' && count($tmp) >= 2) {
// Определяем id раздела /brands/.
// Конечно, можно его и руками прописать - но так гибче
if (!$section = $modx->findResource($tmp[0] . '/')) {
// Если вдруг раздел куда-то делся - выходим.
return false;
}
// Теперь очищаем имя бренда от возможного расширения
$name = str_replace('.html', '', $tmp[1]);
// Если очищенное имя не равно запрошенному - то можно отредиректить юзера
// Также возможен вариант с косой на конце имени бренда - его тоже учитываем
// SEOшники должны оценить =)
if ($tmp[1] != $name || (isset($tmp[2]) && $tmp[2] == '')) {
$modx->sendRedirect($tmp[0] . '/' . $name);
}
$modx->toPlaceholder('catalog_name',$name);
$modx->sendForward($section);
}
// Иначе ничего не делаем и юзер получает 404 или его перехватывает другой плагин.
Более подробный пример тут
PS: перед тем как опубликовать в готовых решениях выложу тут, мб поправить надо что нить
Комментарии: 2
У тебя получается, что если нет новости на указанную букву, то пользователь получит страницу 404. Мне кажется это не правильно. Т.е. последнее условие не нужно.
А pdoPage вызывать с фильтром
А pdoPage вызывать с фильтром
[[!pdoPage:default=`Новостей на указанную букву не найдено!`?
...
]]
Интересно, нравится именно такой УРЛ, я недавно реализовывала поиск по первой букве ТЕГА. но через ?tag=A
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.