Como encontrar arquivos – Debug em Backend

Escrito por Mario SAM

No post Qual arquivo alterar – Debug em Frontend foi apresentado uma funcionalidade nativa do Magento que ajuda os desenvolvedores na hora de encontrar os respectivos arquivos do template/tema para edição.

Infelizmente essa opção não existe para quem deseja fazer o mesmo em backend. E muitas vezes precisamos editar uma tela ou outra do sistema para se adaptar as necessidades do cliente. Essa dica também vai ajudar as pessoas que desejam criar módulos para Magento.

Pretendo mostrar nesse post um “segredo” que vai mudar sua vida!!!

Ok! exagerei um pouco…mas vai ser de grande valia pra você que passa horas navegando entre diretórios procurando pelo arquivo certo.

Entendendo o que faremos

Debug no contexto do Magento se resume a encontrar arquivos e diretórios. Não chega a ser uma depuração de código em execução. Mas ajuda a criar um ponto de partida.

Antes de entrarmos em detalhes, é interessante alterar o idioma do seu backend para o inglês. Pois a dica para localização dos arquivos é baseada na nomeclatura.

Para editar estas páginas de backend, vamos procurar por blocos (block) que são responsáveis por montar a página. Caso você queira entender melhor o que são model’s, controller’s, view’s, helper’s, block’s, e etc… procure estudar um pouco de MVC e Zend Framework.

Na sua instalação do Magento vá até o diretório “app/code/core/Mage/Adminhtml/Block“. Veja que este caminho já dá uma direção do que vamos fazer (editar blocos html do admin).

Exemplo 1

Vamos começar com um exemplo simples. Acesse seu backend e navegue em:

Customers -> Customer Groups

Você deve visualizar uma tabela de dados com nome de todos os grupos de clientes cadastrados no sistema. Essa tabela de dados em inglês se chama Grid (grade).

Chegando no diretório de blocos, basta seguir a mesma ordem dos menus do backend. Você vai encontrar em “/Customer/Group/” o arquivo Grid.php.

Encontrando Customer Group em Backend

Ao abrir o arquivo você encontra a função _prepareColumns() que possui exatamente as colunas que aparecem na grid de sua tela. Além de outras funções importantes para a construção da página.

Imagino que agora você já consegue identificar diversas outras páginas apenas observando o diretório Block.

Exemplo 2

Vamos para um exemplo avançado agora. No seu backend navegue em:

Sales -> Orders

E clique no botão “Create New Order“.  Selecione um cliente da sua loja para chegar até a etapa do pedido. Na guia “Items Ordered” clique em “Add Products” para procurar os produtos que serão inseridos no pedido. Uma grid com os produtos deve aparecer na tela.

Então resumindo você percorreu o seguinte caminho: Sales > Orders > Create New Order > Add Products (para procurar os produtos a serem inseridos) > Apareceu a Grid.

Vamos procurar então o arquivo que carrega estes produtos. Novamente na pasta “app/code/core/Mage/Adminhtml/Block” você vai seguir o caminho indicado por sua navegação em backend. Chegando então em “/Sales/Order/Create/Search/Grid.php“.

Encontrando arquivo de vendas no backend

Veja que é exatamente o mesmo caminho percorrido no navegador. A diferença é o botão “Add Products” que na verdade é um “Search“.

O arquivo Grid.php é bem parecido com os outros arquivos Grid.php do sistema. Mas com suas particularidades de tela. Ele também possui uma função _prepareColumns() onde você decide quais campos devem aparecer na tabela de dados.

Dica: Aqui você pode adicionar uma coluna usando um atributo personalizado (ou não). Veremos como fazer isso em um futuro post.

Pra encerrar

Isso foi apenas a ponta do iceberg. Ainda tem muita coisa a ser explicada sobre a estrutura do Magento. Mas agora você já tem uma idéia de como encontrar as páginas que criam as telas do backend.

Explore o código, faça alguns testes, mas lembre-se de manter uma cópia de segurança dos arquivos (famoso backup).

Sucesso!

O Autor

Mario SAM

Desenvolvedor Magento com certificação M1 Developer e M1 FrontEnd Developer. Graduado em Web Design e Programação, pós-graduado em Gestão de Projetos e TI. Não sou matemático mas estou aqui para somar.