Как скрыть страницу /узел по умолчанию?

Drupal из коробки поставляется со страницей (которая является главной страницей по умолчанию), которая назначается пути node .

Как мне избежать доступа пользователей и перенаправить их на фактическую домашнюю страницу сайта?

22 голоса | спросил wiifm 21 MarpmMon, 21 Mar 2011 22:01:03 +03002011-03-21T22:01:03+03:0010 2011, 22:01:03

14 ответов


17

Нет простого способа скрыть эту страницу. Если вы его не используете, вы можете реализовать hook_menu_alter () и либо полностью удалить его, либо установить обратный вызов доступа к FALSE.

ответил Berdir 21 MarpmMon, 21 Mar 2011 23:20:56 +03002011-03-21T23:20:56+03:0011 2011, 23:20:56
8

Создайте псевдоним пути, который перенаправляет из /узла на страницу, которую вы хотите использовать в качестве главной страницы.

ответил kiamlaluno 22 MaramTue, 22 Mar 2011 03:10:46 +03002011-03-22T03:10:46+03:0003 2011, 03:10:46
6

Я предпочитаю изменять обратный вызов страницы /node, чтобы он отображал ошибку 404. Это всегда показывает вашу пользовательскую страницу 404 при доступе /узле.

function yourmodule_menu_alter(&$items) {
    $items['node']['page callback'] = 'drupal_not_found';      
}
ответил Marc Bachmann 7 PMpSat, 07 Apr 2012 13:44:16 +040044Saturday 2012, 13:44:16
4
<?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 = ''; 
  }
}
?>
ответил AyeshK 14 Jam1000000amSat, 14 Jan 2012 00:07:36 +040012 2012, 00:07:36
2

Я использовал модуль Redirect : я просто добавил новый 301 перенаправление из node to <front>.

ответил ACD 21 +04002012-10-21T15:14:22+04:00312012bEurope/MoscowSun, 21 Oct 2012 15:14:22 +0400 2012, 15:14:22
1

Как и у berdirs, у меня есть следующий код, включенный в модуль, который является частью пользовательского дистрибутива, из которого мы строим:

function HOOK_menu_alter(&$items) {
  $items['node']['page callback'] = '_HOOK_empty_home';
}

function _HOOK_empty_home() {
  drupal_set_title('');
  return '';
}

Таким образом, я могу сохранить «узел» в качестве главной страницы и использовать контекст для размещения блоков для создания необходимой главной страницы.

ответил Decipher 23 MaramWed, 23 Mar 2011 05:44:21 +03002011-03-23T05:44:21+03:0005 2011, 05:44:21
1

Вы можете создать страницу, отображаемую в /узел, который не опубликован. Таким образом, пользователи, которые будут называть этот путь, будут иметь страницу с запрещенным доступом.

ответил pitop 26 Maypm11 2011, 16:42:55
1

Легким решением для меня было создание страницы, на которой я хотел быть домашней страницей, и установить URL-адрес /node. Затем в разделе /​​admin /config /system /site-information установите переднюю страницу по умолчанию в /node. Вы никогда не видите «/node» в URL-адресе, если только кто-то его не вводит. Это быстро, легко и чисто, если вы хотите установить URL-адрес главной страницы в /node.

ответил Jack McKenzie 22 J0000006Europe/Moscow 2011, 03:25:22
1

Вы можете создать новую страницу с URL-адресом узла, и люди смогут увидеть сообщение, перенаправляющее их, чтобы перейти на главную страницу или выбрать категорию.

ответил Mario 19 J000000Thursday12 2012, 23:57:02
1

Я попробовал несколько вещей. Тогда для Drupal 7 и 8 я нашел это самым простым, не написав никакого кода:

загрузить и включить node_page_disable, globalredirect и перенаправить модули.

(Примечание: node_page_disable модуль перенаправляет /узел на 404 не найдена страница с ошибкой.)

затем добавьте перенаправление для /node -> главная страница

Обратите внимание, что перенаправление перенаправляет //узел и /узел /на главную страницу.

и полезную статью: https://www.drupalaid.com/blog/3-things- вы-должны скрывать

ответил Kasım Burak Özdemir 21 12016vEurope/Moscow11bEurope/MoscowMon, 21 Nov 2016 11:51:59 +0300 2016, 11:51:59
0

Создайте узел, затем перейдите к настройке сайта -> информацию о сайте и установить главную страницу на путь узла. Итак, если это ваш первый узел, это будет узел /1.

Изменить: по умолчанию, просто создав узел, эта страница исчезнет, ​​если вы установите флажок «продвигать на главную страницу». Шаг информации сайта сделает этот узел вашей фактической главной страницей.

ответил Mike L. 21 MarpmMon, 21 Mar 2011 22:22:13 +03002011-03-21T22:22:13+03:0010 2011, 22:22:13
0

Вы можете использовать модуль Правила , чтобы проверить URL-адрес перед просмотром страницы и перенаправить пользователей на другую страницу если вы хотите.

  • Добавить правило с событием: Содержимое будет просмотрено
  • Добавить условие: Выполнить собственный PHP-код и проверить путь
  • Добавить действие: Перенаправить страницу и выбрать путь, который вы хотите перенаправить на
ответил Laxman13 21 MarpmMon, 21 Mar 2011 23:43:18 +03002011-03-21T23:43:18+03:0011 2011, 23:43:18
0

Популярный вопрос от довольно много лет назад, с довольно интересными ответами уже. Однако угадайте, что: «В наши дни есть модуль для него ... на самом деле даже два!» (не упоминается ни в одном из предыдущих ответов).

Читайте дальше для более подробной информации ... (цитаты взяты с их страниц проекта) ...

Node page admin (либо D6, либо D7):

  

Этот модуль добавляет панель параметров администрирования для обработки доступа к странице /node . Как только он активирован, есть три возможные конфигурации:

     
  • Core - ядро ​​Drupal будет обрабатывать доступ к странице узла, как обычно: все пользователи с правом доступа к контенту
  •   
  • Отключено - никто не сможет получить доступ /узел. Он вернет «Страница не найдена» (404).
  •   
  • По разрешению - доступ будет обрабатываться с помощью нового разрешения: «страница узла доступа»
  •   

Отключить страницу узла (либо D6, либо D7, но только rc2):

  

Позволяет упростить доступ к интерфейсу и отключить путь /node , если он не используется. Это было вызвано соображениями безопасности в контрольном модуле производства .

ответил Pierre.Vriens 11 J000000Saturday15 2015, 21:38:30
-1

лучший способ - скрыть узлы из функции 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']);
        }
    }
}
ответил Serg Kushch 13 Jpm1000000pmFri, 13 Jan 2012 14:36:07 +040012 2012, 14:36:07

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132