Fórum OpenCart Brasil

Por um e-commerce livre, confiável e profissional

#5454
Você não odeia quando está programando em PHP (ou montando sua loja no OpenCart) e de repente, depois de uma alteração em um arquivo PHP, o layout fica todo louco como este?

Imagem

Porque isto acontece?

Este problema já aconteceu comigo várias vezes. Perdi muito tempo e arranquei muito cabelo para encontrar a causa deste problema, e agora compartilho-a com você. O problema acontece porque o editor de textos (eu quase sempre utilizo o Bloco de Notas) insere caracteres estranhos no arquivo - estes caracteres não podem ser vistos em nenhum editor de textos mas causam problemas quando a página é acessada pelo navegador de internet.

Eu não sei porquê o Bloco de Notas ou outro editor insere esses caracteres, e isso nem sempre acontece, mas a solução é bem simples. Primeiro baixe um editor hexadecimal como o XVI32, disponível em http://www.chmaas.handshake.de/delphi/f ... /xvi32.htm (o download está no final desta página). Não é necessário instalar, ele pode ser executado diretamente.

Localize o arquivo com problema. No caso da imagem acima, o arquivo com problema era o arquivo de idioma português para a página de detalhes do produto no OpenCart (/catalog/language/portuguese-br/product/product.php). Eu sei que o problema está neste arquivo porque eu modifiquei alguns textos nele.

Arraste o arquivo para o XVI32 e ele será aberto. Repare, no lado direito, que existem três caracteres estranhos (antes de "<?php").

Imagem

Estes são os causadores do problema. Basta apagá-los pressionando DEL três vezes, e em seguida salvar o arquivo. Dessa forma o seu layout volta a funcionar corretamente.

Imagem

É isso aí!
Editado pela última vez por denisgomes em 22 Mai 2011, 11:04, em um total de 1 vez.
#5455
Poxa cara, muito legal sua dica!!
Vc esqueceu do link no final da pagina..rsrs

Uma pergunta:
Isso tb serve para quando os acentos são trocados por caracteres estranhos??
Pergunto isso pq eu instalei um módulo que não tinha tradução, então traduzi mas os caracteres vieram distorcidos.
Pode ser isso?!

Vlw .. bom domingo!
#5457
m.lirangi, o link estava na própria postagem. Meu texto ficou um tanto confuso, por isso alterei.

Quanto aos caracteres, não, esse programa não resolve isso. Esse problema tem a ver com a página de código do arquivo da tradução. Os caracteres aparecem distorcidos porque o arquivo possui uma codificação (digamos, ANSI) e o navegador detecta outra codificação (digamos, UTF-8). O navegador detecta as codificações automaticamente, mas acho que tem um jeito de especificar isso no arquivo do template para que ele sempre exiba corretamente.

De qualquer forma a solução mais correta não é utilizar os acentos diretamente, e sim utilizar os códigos HTML certos para os caracteres acentuados (por exemplo: usar &aacute; ao invés de "á" diretamente). Assim você evita todos os tipos de problemas entre plataformas (pode acontecer, por exemplo, de a tradução funcionar corretamente em sua máquina local mas apresentar problemas em seu servidor, ou vice-versa, ou ainda funcionar no seu servidor e apresentar problemas em alguns navegadores e/ou plataformas mas não em outras).

Acho que já cheguei a comentar sobre isso aqui no fórum mas não deram muita atenção. Caso você queira converter os seus arquivos é só usar a função de localizar e substituir em qualquer editor de texto. O formato dos códigos HTML para caracteres acentuados é bem simples: "&" + "letra a ser acentuada" + "nome do acento em inglês" + ";". Por exemplo: para fazer o A maiúsculo com til (Ã) use &Atilde;. para fazer o E minúsculo com acento agudo (é) use &eacute;.
#5458
Olá Denis, parabéns por mais esta contribuição! :D
Para problemas com codificação de arquivos para utf-8 eliminando os famosos caracteres estranhos, sempre utilize um bom editor como o Notepad++ que é free e faz a codificação dos arquivos sem maiores dores de cabeça ;)
#5525
Pois então, tb uso o notepad++ há um tempinho e recentemente precisei traduzir um modulo, então peguei o mesmo arquivo em ingles, abri pelo notepad++ e editei, salvou direitinho mas qdo abro na Administração os acentos estão truncados.

Teve até um caso e fui só incluir uma palavra e aquela palavra que inclui ficou truncada e as outras não, apesar de tudo estar perfeito no arquivo... afff... deixei pra lá!
#5527
As vezes o arquivo parece estar bacaninha em um editor, zuado em outro, some as letras em outro... Tem que ficar bem esperto com codificação, ainda mais em um sistema nativo de um país sem todos os nossos acentos e afins :)
#5528
Não querendo ser chato, mas se os acentos no arquivo de tradução fossem convertidos em entidades HTML (é = &eacute; ã = &atilde;, etc) esses problemas não ocorreriam. Além do problema no arquivo em si, ainda tem o parâmetro charset nos cabeçalhos HTTP. Se o servidor detectar ou enviar o charset errado, os acentos nunca aparecerão corretamente.
#49040
Mais uma excelente dica @denisgomes, parabéns, o programa também é muito útil para corrigir problemas como " Cannot modify header information - headers already sent by (output started at)" causados por caracteres especiais.