Quando visito uma página que não existe, espero ainda ver os links primário e secundário como em qualquer outra página, mas o que recebo é que não há links de navegação na página 404. Consulte também Nenhum link de navegação em 404 páginas .
Eu encontrei uma solução, mas estou feliz se algo mais puder corrigir isso (possivelmente sem o uso de módulos extras).
Você pode fazer isso definindo uma página em um módulo personalizado.
Crie uma página para a categoria "Página não encontrada" usando 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;}
O retorno de chamada da página usa current_path()para retornar o caminho da página que está causando o erro 404.
Vá para Admin> Configuração> Sistema> Informações do site e insira a página não encontrada (mesmo nome conforme definido em hook_menu) na página Padrão 404 (não encontrada) .
Agora, a página de erro aparece como na captura de tela a seguir.
É claro que ele contém todos os links de navegação e também o URL da página que produz o erro (muito semelhante à página original não encontrada). E o módulo mencionado na resposta acima por @ Nikhil exibirá "A página solicitada não foi encontrada." mas não contém o URL da página que está causando o erro.
Tem certeza de que vou receber os links de navegação na página?
Niksmac
1
@NikhilM Eu testei isso e as capturas de tela são reais ;-) #
AjitS
Eu testei agora. Eu personalizo o texto mostrado na página não encontrada. mas aparentemente mostra o texto padrão de outro lugar! o que está acontecendo no drupal?
precisa saber é o seguinte
Eu estava lutando com isso ontem no trabalho, solução muito boa.
Cyclonecode
11
Existe um módulo para fazer este trabalho 404 Navigation
Nas páginas de erro 404 Não encontrado, o Drupal ignora a renderização de todos os links de navegação do seu site por razões de desempenho *. Alguns destes incluem:
O bloco "Links principais" e qualquer outro link de menu são bloqueados. Os links Primários e Secundários do seu tema. * A menos que você tenha configurado uma "página 404 padrão (não encontrada)" em admin / config / system / site-information.
Em vez de mostrar uma "página 404 não encontrada" padrão, este módulo realiza uma pesquisa nas palavras-chave no URL; por exemplo, se um usuário acessar http://example.com/does/not/exist , este módulo fará uma pesquisa para "não existe" e mostra o resultado da pesquisa em vez da página 404. Isso deve ajudar a reter os visitantes provenientes de URLs antigos vinculados de outros sites ou de índices de pesquisa.
Drupal tem erros 404 caros. Em um site 'médio' com um carregamento de módulo 'médio', é possível observar de 60 a 100 MB de memória consumida no servidor para fornecer um 404. Considere uma página com um link .gif inválido e um arquivo .css ausente. Essa página irá gerar 2 404s junto com o carregamento real da página. É provável que você esteja procurando 180 MB de memória no servidor dessa página, em vez dos 60 MB necessários.
Alterei a mensagem de erro para t('The requested page "@path" could not be found.', array('@path' => request_uri()));. Dessa forma, a tradução padrão do Drupal é usada quando o site é multilíngue.
Existe um módulo para fazer este trabalho 404 Navigation
Também há um patch para corrigir isso no D7.
Em D8, veja ISTO também ESTE
fonte
Também existem boas alternativas de módulos:
Fast 404
fonte
Você pode fazer isso definindo uma página em um módulo personalizado.
Crie uma página para a categoria "Página não encontrada" usando hook_menu ().
Está quase bom. Mas esse código retorna:
precisa alterar current_path () para request_uri () e retornará:
fonte
t('The requested page "@path" could not be found.', array('@path' => request_uri()));
. Dessa forma, a tradução padrão do Drupal é usada quando o site é multilíngue.