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

22

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

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

WIIFM
источник
Я использовал решение, предложенное @kiamlaluno, чтобы перенаправить узел на другой путь.

Ответы:

17

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

Berdir
источник
1
Вот хороший ответ Клайва с кодом примера drupal.stackexchange.com/a/24133/6309
milkovsky
8

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

киамалуно
источник
1
Это не работает для меня с модулем псевдонима URL, псевдоним / узел для <front> или index.php. Я пытаюсь переслать только /
Джон
5
Странно, я сделал / узел на <фронт>, и он работает нормально.
Шон Баннистер
Как и вы, @john, пользовательский интерфейс псевдонимов не позволяет мне перейти на первую страницу. Мне пришлось использовать модуль перенаправления вместо.
Postscripter
6

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

function yourmodule_menu_alter(&$items) {
    $items['node']['page callback'] = 'drupal_not_found';      
}
Марк Бахманн
источник
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
источник
2

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

ДСА
источник
1

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

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

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

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

Расшифруйте
источник
1

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

pitop
источник
1

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

Джек Маккензи
источник
1

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

Марио
источник
1

Я пробовал несколько вещей. Затем для Drupal 7 и 8 я обнаружил, что это проще всего без написания кода:

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

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

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

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

и полезную статью для чтения: https://www.drupalaid.com/blog/3-things-you-should-hide

Касым Бурак Оздемир
источник
Это вид в D8, поэтому drush @example.com views-disable frontpageвыключит его. Будет по-прежнему получать 404, хотя, пока другие вещи не будут сделаны.
Колан
0

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

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

Майк Л.
источник
1
Правда, но /nodeвсе еще может быть достигнуто, это просто не будет видно по умолчанию
Laxman13
Я неправильно понял, что он просил. А как насчет модуля перенаправления пути http://drupal.org/project/path_redirect ?
Майк Л.
1
К сожалению, Path Redirect не позволяет вам перенаправлять с существующих путей. Он проверяет, является ли путь, с которого вы пытаетесь перенаправить, допустимым путем, и если да, то перенаправление не создается и отображается предупреждение.
Laxman13
Круто. Я не использовал это некоторое время, так что не был положительным. Благодарность!
Майк Л.
0

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

  • Добавить правило с событием: контент будет просматриваться
  • Добавить условие: выполнить пользовательский код PHP и проверить путь
  • Добавить действие: перенаправить страницу и выбрать путь, на который вы хотите перенаправить
Laxman13
источник
Это не только вводит серьезные штрафы за производительность, это должно считаться очень небезопасным. «Выполнять пользовательский PHP» никогда не следует предлагать, если все побочные эффекты и недостатки хорошо известны. -1 за это.
Беркес
@berkes Я бы предположил, что это потому, что Правила будут проверять загрузку каждой страницы и, следовательно, замедлять работу сайта? Почему «Execute custom php» всегда вызывает недовольство? Очевидно, что это плохо для конечного пользователя, но есть ли недостатки и для разработчика? Извините, если долго, усердно работал, чтобы быть лучшим, что я могу с Drupal и изучать "входы и выходы". (Могу добавить вторую часть как собственный вопрос, если нужно)
Laxman13
пожалуйста, рассмотрите новый вопрос «Каковы недостатки использования« пользовательского »PHP» с некоторыми примерами областей (блоки, аргументы представлений, php-фильтр и т. д.), где это может обсуждаться?
Беркес
0

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

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

Администратор страницы узла (D6 или D7):

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

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

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

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

Pierre.Vriens
источник
-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']);
        }
    }
}
Серг кущ
источник