Как отключить разделы сайта?

FAQ
Как отключить некоторые сайта (экшены)? Часто этот вопрос возникает у тех, кто хочет отказаться от части функционала движка, но хочет это сделать не просто переделкой шаблона и убиранием ссылок из вида, а и закрыть их «изнутри», чтобы нельзя было пройти по прямым ссылкам. Если у вас были такие задачи — эта короткая заметка для вас.

И так, отключить некоторые разделы сайта, а именно — экшены, можно несколькими равносильными способами.

Через сайта


Через локальный конфиг всего сайта /config/config.local.php. Это можно сделать двумя способами:

1. удаление записи урла для роутера:

// отключить раздел "люди"
$config['router']['page']['people'] = null;

// отключить карточки профилей пользователей
$config['router']['page']['profile'] = null;

// отключить регистрацию, но можно авторизироваться тем, кто уже был ранее зарегистрирован
$config['router']['page']['registration'] = null;

2. рерайт урла:

$config['router']['uri'] = array(
	'#^profile#i' => 'error',
	'#^registration#i' => 'error',
	'#^login#i' => 'error',
);


Через конфиг плагина


1. удаление записи, как в примере выше, только добавив ключ $root$:

// отключить раздел "люди"
$config['$root$']['router']['page']['people'] = null;

// отключить карточки профилей пользователей
$config['$root$']['router']['page']['profile'] = null;

// отключить регистрацию, но можно авторизироваться тем, кто уже был ранее зарегистрирован
$config['$root$']['router']['page']['registration'] = null;


2. черзе рерайт урла:

$config['$root$']['router']['uri'] = array(
	'#^profile#i' => 'error',
	'#^registration#i' => 'error',
	'#^login#i' => 'error',
);


Результат


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

После выполнения таких операций ссылки в шаблонах будут вести на страницу 404, что является корректной работой. Экшены будут отключены.
0 комментариев
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.