当我访问一个不存在的页面时,我希望仍然可以像在其他页面上一样看到主要链接和辅助链接,但是我得到的却是404页面中没有导航链接。另请参阅404页上没有导航链接。
我已经找到了解决方案,但是如果有其他方法可以解决此问题(可能无需使用额外的模块),我感到很高兴。
当我访问一个不存在的页面时,我希望仍然可以像在其他页面上一样看到主要链接和辅助链接,但是我得到的却是404页面中没有导航链接。另请参阅404页上没有导航链接。
我已经找到了解决方案,但是如果有其他方法可以解决此问题(可能无需使用额外的模块),我感到很高兴。
Answers:
您可以通过在自定义模块中定义页面来实现。
使用创建类别“页面未找到”的页面hook_menu()
。
function MODULE_menu() {
$items['page-not-found'] = array(
'title' => '',
'page callback' => 'MODULE_page_not_found',
'access callback' => TRUE,
);
return $items;
}
function MODULE_page_not_found() {
drupal_set_title('Page not found');
$cust_err = "";
$cust_err = $cust_err . "The requested page " . current_path() . " could not be found";
return $cust_err;
}
页面回调用于current_path()
返回导致404错误的页面路径。
转到管理>配置>系统>站点信息,然后在默认404(未找到)页面下输入未找到页面(名称与相同)。hook_menu
现在,错误页面如以下屏幕截图所示。
很明显,它包含所有导航链接,还包含产生错误的页面URL(非常类似于未找到的原始页面)。@ Nikhil在上面的答案中提到的模块将输出“找不到所请求的页面”。但不包含导致错误的页面的URL。
也有不错的模块替代品:
该模块不显示标准的“ 404页面未找到”,而是对URL中的关键字执行搜索,例如,如果用户访问http://example.com/does/not/exist,则该模块将进行搜索表示“不存在”,并显示搜索结果,而不是404页。这应有助于留住来自其他网站链接的旧URL或搜索索引的访问者。
Drupal有昂贵的404错误。在具有“平均”模块负载的“平均”站点上,您可能正在查看服务器上消耗的60-100MB内存来交付404。请考虑一个页面,该页面的.gif链接错误并且缺少.css文件。该页面将与该页面的实际负载一起生成2 404。您最有可能需要180MB的内存来存储该页面,而不是应该占用的60MB。
您可以通过在自定义模块中定义页面来实现。
使用hook_menu()为类别“找不到页面”创建一个页面。
function MODULE_menu() {
$items['page-not-found'] = array(
'title' => '',
'page callback' => 'MODULE_page_not_found',
'access callback' => TRUE,
);
return $items;
}
function MODULE_page_not_found() {
drupal_set_title('Page not found');
$cust_err = "";
$cust_err = $cust_err . "The requested page " . current_path() . " ould not be found";
return $cust_err;
}
差不多了 但是此代码返回:
“找不到所请求的页面页面未找到”
需要将current_path()更改为request_uri()并返回:
“找不到请求的页面/ request_uri”
t('The requested page "@path" could not be found.', array('@path' => request_uri()));
。这样,当您的网站是多语言时,将使用默认的Drupal转换。