Настройка
Что задать после установки, а что работает и без вас.
Маршрутизация
Одна настройка решает, сколько запроса берёт на себя PageBlocks:
pageblocks_routing | Что происходит |
|---|---|
Disabled (off) | Компонент не трогает маршрутизацию. Все адреса разбирает MODX. |
Route Only (routes) | Ваши маршруты проверяются, всё несовпавшее уходит в MODX. |
Full API (full) | Запрос принадлежит PageBlocks. |
По умолчанию off — установка ничего не меняет в том, как сайт отвечает, пока вы сами не скажете.
У остальных настроек рабочие значения по умолчанию, полный список — в Системных настройках.
Сервер
- Apache — переименуйте
ht.accessв.htaccess - Nginx — пропишите правила переписывания: nginx
.htaccessне читает
Без этого всё, кроме главной, отдаёт 404: веб-сервер ищет каталог, которого нет, вместо того чтобы отдать адрес в index.php.
Страницы работают сразу
В прикладном слое уже лежат два маршрута для обычных ресурсов MODX, core/App/routes/web.php:
<?php
use Boshnik\PageBlocks\Facades\Route;
Route::get('/{alias?}', 'ResourceController@index');
Route::get('/{context}/{alias?}', 'ResourceController@context')->where('context', '[a-z]{2}');Первый открывает любой ресурс по его алиасу. Второй — многоязычный случай: двухбуквенный префикс считается языком, остальное алиасом. Поэтому адрес вида /en/about начинает работать сразу, как только появился второй язык, и добавлять маршрут не нужно. См. Языки.
ResourceController находит ресурс, подбирает его шаблон и рендерит страницу. Больше ничего, чтобы обслуживать обычный сайт, не требуется.
Эти маршруты в слое сайта, то есть ваши
core/App/routes/ принадлежит сайту, а не компоненту — обновление его не перезапишет. Переопределяйте любой из двух или удаляйте оба и забирайте запрос себе целиком.
Файлы маршрутов читаются по алфавиту
Всё из core/App/routes/ подхватывается глобом и сортируется по имени файла. web.php оказывается ближе к концу, и это намеренно: его /{alias?} ловит всё, что не забрали раньше, поэтому файл, который сортируется после него, не получит шанса.
Называйте файл по разделу — product.php, catalog.php — и он проверится раньше. Это не косметика, а весь механизм очерёдности.