Algum tempo atrás eu já mostrei aqui no blog como utilizar o debug do Magento no frontend para encontrar diretórios, arquivos, e blocos utilizados na construção do leiaute das páginas do seu tema.
Acontece que não existe a mesma funcionalidade para o backend (admin) do Magento, então eu escrevi um post mostrando como encontrar esses arquivos utilizando o namespace e padrões de arquitetura do Magento.
Mas… eu recebi uma dica muito interessante por email, de um post escrito pelo Erik Hansen no blog da classyllama alguns anos atrás, que permite burlar o sistema e habilitar o mesmo debug do frontend também no backend, no admin do Magento.
A teoria do debug
Assim que instalamos o Magento, muitas configurações ainda não foram realizadas e por isso mesmo não existe o registro na tabela “core_config_data“. Mas, como você já deve ter imaginado… quando realizamos uma configuração no sistema, estes dados então serão armazenados nesta tabela.
Então, quando você habilita o debug do Magento para o frontend do sistema, automaticamente é gravado na tabela “core_config_data” o seguinte registro:
config_id | scope | scope_id | path | value 537 | websites | 1 | dev/debug/template_hints | 1 538 | websites | 1 | dev/debug/template_hints_blocks | 1
Onde “value” igual a “1” significa que está habilitado, e “0” desabilitado.
E estes valores são controlados pela classe Template.php que fica em:
app > code > core > Mage > Core > Block > Template.php
Acontece que o método responsável “getShowTemplateHints()” se preocupa apenas em verificar se a configuração deve habilitar ou não o debug, e não faz nenhuma validação quanto ao escopo (frontend/admin). Dito isso…
Debug no backend/admin
Agora que você já entendeu a teoria – a forma como o sistema habilita esse debug, tudo que precisamos fazer é um pequeno ajuste de configuração na tabela “core_config_data“, no campo “scope_id” que não é validado pela função supra citada.
Mas como saber qual “scope_id” utilizar? Boa pergunta!
Temos as tabelas “core_store” e “core_website“, ainda não descobri qual das duas é a responsável, mas não importa… ambas possuem a mesma informação que é relevante neste momento. As duas tabelas possuem os seguintes registros:
>> core_website << website_id | code | name 0 | admin | Admin 1 | base | Main Website
>> core_store << store_id | code | website_id | group_id | name 0 | admin | 0 | 0 | Admin 1 | default | 1 | 1 | Default Store View
Isso nos mostra que “0” é atribuído sempre a área de “admin“, enquanto “1” é atribuído sempre ao “website” e “store view” – que são: frontend.
Então tudo que precisamos fazer é alterar o “scope_id” de “1” frontend, para “0” backend/admin.
config_id | scope | scope_id | path | value 537 | websites | 0 | dev/debug/template_hints | 1 538 | websites | 0 | dev/debug/template_hints_blocks | 1
Se você atualizar seu backend após essas alterações (e provavelmente o cache também) já poderá visualizar o caminho dos blocos e templates do seu leiaute no admin.
Apesar da longa explicação é um processo muito simples e muito rápido, e que deve ajudar muita gente que deseja fazer ajustes, customizações, ou até mesmo criar novos módulos para o backend do Magento.
Muito obrigado ao Fabricio Gori pela dica.
Sucesso!