如何隐藏默认页面/节点?


22

开箱即用的Drupal带有分配给节点路径的页面(这是默认主页)。

如何避免用户访问它,并将他们重定向到网站的实际主页?


我使用@kiamlaluno提出的解决方案将节点重定向到其他路径。

Answers:



8

创建一个路径别名,该路径别名从/ node重定向到您要用作首页的页面。


1
这不适用于url别名模块,将/ node别名为<front>或index.php的情况。我想转发给/
约翰·约翰逊(John)

5
奇怪的是,我将/ node设置为<front>并且工作正常。
肖恩·班尼斯特

像您@john一样,别名的UI不允许我进入首页。我不得不改用重定向模块。
Postscripter

6

我更喜欢更改/ node的页面回调,以便显示错误404 Page。
访问/ node时,它始终显示您的自定义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 = ''; 
  }
}
?>

2

我使用了重定向模块:我刚刚添加了一个新的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的未发布页面。因此,将调用此路径的用户将具有禁止访问的页面


1

对我来说,简单的解决方案是创建一个我想作为主页的页面,并将URL设置为/ node。然后在/ admin / config / system / site-information下将默认首页设置为/ node。除非有人实际输入,否则您永远都不会在URL中看到“ / node”。只要您要将主页URL设置为/ node,它便快速,简单且干净。


1

您可以使用节点URL创建一个新页面,人们可以看到一条消息,将他们重定向到首页或选择某种类别。


1

我尝试了很多事情。然后对于Drupal 7和8,我发现这很简单,无需编写任何代码:

下载并启用node_page_disable,globalredirect和redirect模块。

(注意:node_page_disable模块将/ node重定向到404 not found错误页面。)

然后为/ node添加重定向--首页

请注意,重定向将/ node和/ node /都重定向到首页。

以及一本有用的文章,以供阅读:https : //www.drupalaid.com/blog/3-things-you-should-hide


这是D8中的视图,因此drush @example.com views-disable frontpage将其关闭。在完成其他操作之前,仍然会得到404。
科兰

0

创建一个节点,然后转到站点配置->站点信息,然后将主页设置为该节点的路径。因此,如果它是您的第一个节点,它将是node / 1。

编辑:默认情况下,仅通过创建一个节点,如果您选中“升级到首页”,该页面就会消失。站点信息步骤将使该节点成为您的实际首页。


1
是的,但/node仍然可以达到,默认情况下它是不可见的
Laxman13 2011年

我误读了他的要求。路径重定向http://drupal.org/project/path_redirect模块呢?
Mike L.

1
不幸的是,路径重定向不允许您从现有路径重定向。它检查您尝试重定向的路径是否为有效路径,如果是,则不创建重定向并显示警告。
Laxman13年

凉。我已经有一段时间没有使用它了,所以不是很积极。谢谢!
Mike L.

0

您可以在查看页面之前使用“ 规则”模块检查网址,并根据需要将用户重定向到另一个页面。

  • 添加带有事件的规则:将要查看内容
  • 添加条件:执行自定义PHP代码并检查路径
  • 添加操作:页面重定向,然后选择要重定向到的路径

这不仅会带来严厉的性能损失,而且应该被认为是非常不安全的。除非所有副作用和弊端都众所周知,否则不建议使用“执行自定义PHP”。-1。
berkes

@berkes我认为这是因为Rules将对每个页面加载执行一次检查,因此会使网站速度变慢?为什么“执行自定义php”总是不被接受?显然不适合最终用户使用,但是开发人员使用也有不利之处吗?如果很久很抱歉,我一直在努力工作,以尽我所能与Drupal一起学习最好的东西,并学习“来龙去脉”。(如果需要,可以将第二部分添加为自己的问题)
Laxman13 2011年

请考虑一个新的问题“使用“自定义” PHP的不利之处”,其中包含一些示例区域(块,视图参数,php-filter等),可以在其中进行讨论?
berkes

0

几年前的热门问题,已经有了一些有趣的答案。但是,请猜测:“这些天有一个模块,实际上甚至两个!” (任何先前的答案中都未提及)。

继续阅读以获取更多详细信息...(引自其项目页面)...

节点页面管理员(D6或D7):

该模块添加了一个管理设置面板来处理/ node页面访问。激活后,将有三种可能的配置:

  • 核心-Drupal核心将照常处理节点页面访问:所有具有“访问内容”权限的用户
  • 禁用-没有人将能够访问/ node。它将返回“找不到页面”(404)。
  • 通过权限-访问将由新权限处理:“访问节点页面”

节点页面禁用(D6或D7,尽管只有rc2版本):

不使用时,允许轻松的UI访问和禁用路径/ node。这是受生产检查模块中的安全考虑启发的。


-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']);
        }
    }
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.