Modelo personalizado para páginas de erro 404

12

Uma pergunta rápida noob aqui! Como definir um tema para usar um modelo personalizado para páginas de erro 404 em vez de usar page.tpl?

Walid Baccari
fonte

Respostas:

10

Siga esses passos:

  1. Crie uma nova página usando o módulo Painéis (página vazia ou coloque nele qualquer conteúdo)

  2. Na página admin / config / system / site-information, defina a página 404 padrão (não encontrada) para sua nova página

  3. Substituir o arquivo de modelo para essa página (página - error.tpl.php)

  4. Remova todas as regiões que você não precisa e coloque seu código

Ahmed
fonte
5
E nem é preciso usar painéis. O módulo que manipula uma página ou o nó "Página básica" mais simples também funcionaria.
Mołot 29/10
2
Por que você precisaria de um módulo contribuído para criar um 404?
precisa saber é o seguinte
1
O problema com o uso de um nó, como uma página básica, é que ele aparecerá nos resultados de pesquisa e em outras listagens relacionadas ao conteúdo, o que é indesejável.
rooby 20/03/19
27

Outra solução desta discussão que funciona sem painéis ou outros módulos personalizados.

Na pasta do seu tema, localize template.phpe escreva esse código. Substitua YOURTHEMEpelo nome do seu tema:

function YOURTHEME_preprocess_page(&$vars) {
  $header = drupal_get_http_header('status'); 
  if ($header == '404 Not Found') {     
    $vars['theme_hook_suggestions'][] = 'page__404';
  }
}

Sempre que ocorrer 404, você page--404.tpl.phpserá usado. Lembre-se de colocar "-" not "__" no nome do arquivo do seu modelo.

daniels
fonte
Lembre-se de limpar o cache se você acabou de criar o page--404.tpl.phparquivo.
Blake Erickson
Para 403, o cabeçalho $ == '403 Proibido'.
Henry
isso parece não funcionar em um módulo, o modelo na pasta do módulo não é ultrapassado. como fazer o mesmo com a função YOURMODULE_preprocess_page (& $ vars)?
Matoeil
3

Se você deseja ter uma página 404 personalizada que não envolva a criação de uma página (nó), use o comando customerror módulo .

Se você tem uma página 404 no Drupal, ela será exibida nos resultados da pesquisa e / ou nas listagens do Views.

Ao usar o módulo customerror, você pode substituir o modelo criando uma página - customerror.tpl.php na sua pasta de temas. Lembre-se também de liberar o cache depois de criar um novo arquivo de modelo.

alexkb
fonte
Parecia bom, mas para aqueles que também usam o módulo de redirecionamento, parece que eles não funcionam bem juntos. Eu nunca consegui que o customerror mostre sua página sobre o redirecionamento exibido.
precisa saber é
1
Usamos os módulos Redirecionar e Customerror em uníssono sem esses problemas. Observando as páginas de configurações dos dois módulos, parece que o customerror (além de sua funcionalidade de erro personalizada) também possui um recurso para gerenciar redirecionamentos, embora com uma interface simples. Se você estiver usando o redirecionamento (e o OP não estiver), evite usar as configurações de redirecionamento customerror, e você não deverá ter nenhum problema.
Alexkb
0

Sem assumir nenhuma convenção que possa existir em sua base de temas, a questão é finalmente como saber com certeza qual arquivo de modelo usar ...

Aqui estão os passos:

  1. Crie uma base básica e chame-a como quiser.
  2. Atribua essa página à resposta 404 admin / config / system / site-information
  3. Ative o modo theme_debug.
  4. Digite um URL estúpido na sua barra de endereço.
  5. Você chega à sua página criada inicialmente
  6. Olhe a fonte e a sugestão de modelos, você obterá algo como:insira a descrição da imagem aqui

  7. Isso é simples, nenhum arquivo de pré-processamento ou template.php para modificar.

Eu mesmo escolhi o marcado por machado, pois queria algo nu com uma foto de quadro completa e apenas um link para trás.

jmary
fonte
Observe que a página básica que você criou para o erro 404 também aparecerá agora nos resultados da pesquisa como uma página de conteúdo.
ROOBY