Как скрыть страницу/узел по умолчанию?
Drupal из коробки поставляется со страницей (которая является домашней страницей по умолчанию), которая назначена пути узла.
Как мне избежать доступа пользователей к нему и перенаправить их на фактическую домашнюю страницу сайта?
14 answers
Нет простого способа скрыть эту страницу. Если вы его не используете, вы можете реализовать hook_menu_alter() и либо полностью удалить его, либо установить для него обратный вызов доступа FALSE
.
Создайте псевдоним пути, который перенаправляет с /узла на страницу, которую вы хотите использовать в качестве главной страницы.
Я предпочитаю изменить обратный вызов страницы /узла, чтобы он отображал страницу с ошибкой 404.
Это всегда показывает вашу пользовательскую страницу 404 при доступе к /узлу.
function yourmodule_menu_alter(&$items) {
$items['node']['page callback'] = 'drupal_not_found';
}
<?php
function MY_MODULE_menu_alter(&$callbacks) {
unset($callbacks['node']);
}
?>
Или добавьте это в settings.php (URL-адрес входящего материала)
<?php
function custom_url_rewrite_inbound(&$result, $path, $path_language) {
if ($path == 'node') {
$result = '';
}
}
?>
Я использовал модуль Перенаправление : Я только что добавил новый 301 перенаправление с node
на <front>
.
Аналогично ответу бердира, у меня есть следующий код, включенный в модуль, который является частью пользовательского дистрибутива, из которого мы строим:
function HOOK_menu_alter(&$items) {
$items['node']['page callback'] = '_HOOK_empty_home';
}
function _HOOK_empty_home() {
drupal_set_title('');
return '';
}
Таким образом, я могу сохранить путь "узел" в качестве главной страницы и использовать контекст для размещения блоков для создания требуемой главной страницы.
Вы можете создать страницу, сопоставленную с /узлом, которая не опубликована. Таким образом, пользователи, которые вызовут этот путь, будут иметь доступ к запрещенной странице
Простым решением для меня было создать страницу, которую я хотел бы сделать домашней страницей, и установить URL в /узел. Затем в разделе /администратор/конфигурация/система/информация о сайте установите для главной страницы по умолчанию значение /узел. Вы никогда не увидите "/узел" в URL-адресе, если только кто-то действительно не введет его. Это быстро, легко и чисто, при условии, что вы хотите установить URL-адрес своей домашней страницы в /узел.
Вы можете создать новую страницу с URL-адресом узла, и люди смогут увидеть сообщение, перенаправляющее их на главную страницу или выбирающее категорию чего-либо.
Я перепробовал несколько вещей. Затем для Drupal 7 и 8 я обнаружил, что это проще всего, без написания какого-либо кода:
Загрузите и включите модули node_page_disable, globalredirect и перенаправления.
(Примечание: модуль node_page_disable перенаправляет /узел на страницу 404 не найдена ошибка.)
Затем добавьте перенаправление для /узла -->главная страница
Пожалуйста, обратите внимание, что перенаправление перенаправляет как /узел, так и /узел/ на главную страницу.
И полезная статья для читать: https://www.drupalaid.com/blog/3-things-you-should-hide
Создайте узел, затем перейдите в раздел конфигурация сайта -> информация о сайте и установите на домашней странице путь к узлу. Поэтому, если это ваш первый узел, это будет узел/1.
Изменить: По умолчанию, просто создав узел, эта страница исчезнет, если вы установите флажок "продвигать на главную страницу". Шаг "Информация о сайте" сделает этот узел вашей фактической главной страницей.
Вы можете использовать модуль Правила для проверки URL-адреса перед просмотром страницы и перенаправления пользователей на другую страницу, если хотите.
- Добавить правило с событием: Содержимое будет просмотрено
- Добавить условие: Выполнить пользовательский PHP-код и проверить путь
- Добавьте действие: Перенаправление страницы и выберите путь, на который вы хотите перенаправить
Популярный вопрос, заданный несколько лет назад, с уже довольно интересными ответами. Однако, угадайте, что: "В наши дни для этого есть модуль... на самом деле даже два!" (не упоминалось ни в одном из предыдущих ответов).
Читайте дальше для получения более подробной информации... (цитаты взяты со страниц их проектов)...
Администратор страницы узла ( либо D6, либо D7):
Этот модуль добавляет панель настроек администрирования для обработки / узел доступ к странице. Как только это произойдет активировано есть три возможные конфигурации:
- Ядро - ядро Drupal будет обрабатывать доступ к странице узла как обычно: все пользователи с разрешением "доступ к контенту"
- Отключено - Никто не сможет получить доступ к /узлу. Он вернет "Страница не найдена' (404).
- По разрешению - Доступ будет обрабатываться новым разрешением: "страница узла доступа"
Отключить страницу Узла ( либо D6, либо D7, хотя только версии rc2):
Обеспечивает простой пользовательский интерфейс доступ и отключение пути / узел когда не используется. Это было вызвано соображениями безопасности в модуле проверки производства .
Лучший способ - скрыть узлы от функции template_preprocess_page
function template_preprocess_page(&$variables) {
if ($variables['is_front'] == 1) {
if (isset($variables['page']['content']['system_main'])) {
unset($variables['page']['content']['system_main']);
}
}
}