Dicas para o Magento 1

Nesse artigo é exibido diversas dicas relativa ao Magento 1

Ola

Abaixo varias dicas para o Magento

Erro: Call to a member function getFullActionName() on null /???/app/code/local/Cerebrum/Telencephalon/Model/Adminhtml/Observer.php

Faça o seguinte

Guarde o arquivo

/app/code/local/Cerebrum/Telencephalon/Model/Adminhtml/Observer.php

Renomeando o mesmo

Efetue download do arquivo

https://github.com/cerebrumgit/magento1-telencephalon-php56/raw/master/app/code/local/Cerebrum/Telencephalon/Model/Adminhtml/Observer.php

E coloque em

/app/code/local/Cerebrum/Telencephalon/Model/Adminhtml/

Erro: Modelo base “coolbabyconfig/category_attribute_source_type_yesno” não encontrado para o atributo “bs_menuadvanced”

Esse erro é exibido devido a ausência do módulo “Etheme_Coolbabyconfig” e por haver um atributo no banco de dados relacionado ao módulo

A seguir temos uma instrução SQL que retorna o registro relacionado a esse módulo

SELECT * FROM eav_attribute WHERE source_model like '%coolbabyconfig%'

A seguir temos uma instrução SQL que altera o registro relacionando a um modelo de dados nativo do Magento

UPDATE eav_attribute SET source_model = 'eav/entity_attribute_source_table' WHERE source_model like '%coolbabyconfig%'

Erro: Modelo base “pedroteixeira_correios/source_postMethods” não encontrado para o atributo “postmethods”

Esse erro é exibido devido a ausência do módulo “PedroTeixeira_Correios” e por haver um atributo no banco de dados relacionado ao módulo

A seguir temos uma instrução SQL que retorna o registro relacionado a esse módulo

SELECT * FROM eav_attribute WHERE source_model like '%pedroteixeira%'

Vemos que se trata de um registro “multiselect” que é usado para o campo “Serviços de Entrega” que é exibido no gerenciamento de produtos

A seguir temos uma instrução SQL que altera o registro relacionando a um modelo de dados nativo do Magento

UPDATE eav_attribute SET source_model = 'eav/entity_attribute_source_table' WHERE source_model like '%pedroteixeira%'

Modelo base “idecheckoutvm/customer_attribute_source_pessoa_view” não encontrado para o atributo “tipo_pessoa”

Esse erro é exibido devido a ausência do módulo “Ideasa_IdeCheckoutvm” e por haver um atributo no banco de dados relacionado ao módulo

A seguir temos uma instrução SQL que retorna o registro relacionado a esse módulo

SELECT * FROM eav_attribute WHERE source_model like '%idecheckoutvm%'

A seguir temos uma instrução SQL que altera o registro relacionando a um modelo de dados nativo do Magento

UPDATE eav_attribute SET source_model = 'eav/entity_attribute_source_table' WHERE source_model like '%idecheckoutvm%'

Configuração não está sendo salva no Magento

Analisando o log do servidor em /var/log/apache2/error.log

Temos o armazenamento do seguinte erro

PHP Warning:  Unknown: Input variables exceeded 1000. To increase the limit change max_input_vars in php.ini. in Unknown on line 0

Sugiro alterar no php.ini o parâmetro “max_input_vars” para “3000”

Pode ser necessário reiniciar o servidor

Acessando o phpinfo e pesquisando por “max_input_vars” podemos visualizar o valor

Cartões de crédito para testes

Amex            376488977091001
Visa            4073020000000002
MasterCard      5555666677778884
Discover        6011000990139424
Dinners         36201475131126
JCB             3566002020360505
ELO             4514166365215946
Aura            5078601800003247449
Maestro         6759649826438453
HiperCard       6062825624254001
Hiper(Other)    6370950000000000

Encontrei o número para o cartão hiper pesquisando no google imagens onde é exibido uma imagem do itaú, o restante das numerações foram encontrada em sites diversos na NET

Importar produtos do Magento para o Google Merchant Center

https://support.google.com/merchants/answer/6351224?hl=pt-BR

composer require connect20/google_shoppingconnect

Ocorreu erro na loja ou processo não está se comportando como deveria

Sugiro seguir as orientações abaixo para resolução de ocorrências no Magento

PROCESSO RÁPIDO

A intenção é desativar todos os módulos de terceiros até encontrar a causa da ocorrência

A base dos módulos desenvolvidos por terceiros para a plataforma Magento é separado em 2 diretórios “community” e “local”

Renomeie a seguinte pasta /app/code/community/, dessa forma todos os módulos do ambiente “community” não deve ser carregado no Magento
Renomeie as pastas abaixo de /app/code/local/, não renomeie a pasta do módulo suspeito, dessa forma todos os módulos do ambiente “local” não deve ser carregado no Magento, com exceção do módulo suspeito

Efetue os testes

Caso o processo venha a funcionar é provável estar ocorrendo conflitos entre módulos, então retorne um diretório de cada vez e efetue teste até encontrar o módulo causador da ocorrência

Se o processo acima não funcionar tente o “Processo detalhado” abaixo

PROCESSO DETALHADO

Sugiro que faça o seguinte.

Veja qual é a versão do Magento utilizada no desenvolvimento da sua loja virtual.

Depois baixe essa mesma versão por intermédio do link a seguir, clicando na aba “Release Archives”

http://www.magentocommerce.com/download

Monte um ambiente de teste com o MAGENTO “Cru” e instale somente o módulo suspeito e efetue os devidos testes.

Se apresentar algum problema informe o desenvolvedor do módulo para analise da ocorrência.

Em seguida você pode estar colocando cada requerimento como módulos de terceiros ou template em seu projeto e testando a cada requerimento, dessa forma é possível encontrar a causa do problema.

Dessa forma é possivel saber se o conflito parte de algo relativo a arquivo ou banco de dados.

Outra possibilidade

Baixe o seu projeto e reproduza em seu ambiente local

Se funcionar é um indicativo relativo a algo no seu servidor como o uso de Cache ou falta de permissão nos arquivos

COMPARAÇÔES DE PROJETOS

Com o novo projeto de teste funcionando perfeitamente

Agora caso queira falta encontrar a causa da ocorrência podendo ser algo em “banco de dados” ou nos “scripts do projeto”

Efetue o backup do banco de dados do projeto que tem a ocorrência do erro e crie um novo banco de dados importando esse backup.

Configure o projeto de teste para utilizar esse novo banco de dados e efetue os testes, dessa forma é possível saber se a ocorrência está relacionada a algo no “banco de dados” ou nos “scripts do projeto”

Para comparação de scripts eu utilizo a Software Meld

Login no backend não retorna nada

A empresa de hospedagem aumentou o espaço em disco e funcionou como esperado

Erro: Warning: inet_pton(): Unrecognized address 177.23.249.99, 127.0.0.1 in /app/code/core/Mage/Core/Helper/Http.php on line 149

Esse erro foi exibido quando foi colocado o seguinte item no .htaccess

SetEnv MAGE_IS_DEVELOPER_MODE "true"

Como ativar a CRON no Magento

Sugiro instalar via Composer o módulo Aoe_Scheduler para Gerenciamento de serviços da CRON

Para instalar o módulo execute o comando a seguir no terminal do seu servidor no diretório do seu projeto

composer require aoepeople/aoe_scheduler

No backend do Magento em Sistema -> Scheduler -> Instructions, está documentado o script para adicionar ao crontab

No terminal ao executar o comando

crontab -e

Pode ser informado a(s) linha(s) de comando a serem executadas

Pode ocorrer de alguns servidores não permitiram o uso do crontab no formato nativo do sistema operacional, sendo oferecido essa configuração por algum painel de controle, nesses casos deve se entrar em contato com o suporte da hospedagem solicitando para eles adicionarem o script ao crontab ou instruções de como fazer o processo

Outra possibilidade

Seria a configuração conforme documentação do magento

http://devdocs.magento.com/guides/m1x/install/installing_install.html#install-cron

No terminal ao executar o comando

crontab -e

Pode ser informado qualquer um dos modelos de comandos a seguir

*/1 * * * * /bin/sh -x /home/marcio/dados/public_html/magento-1.9.2.4-dev31/cron.sh >> /home/marcio/dados/public_html/magento-1.9.2.4-dev31/var/log/magento.cron.log&

*/1 * * * * curl -s -o /dev/null http://SUA_URL/magento-1.8.0.0-dev02/cron.php >> /home/marcio/dados/public_html/magento-1.9.2.4-dev31/var/log/magento.cron.log&

*/1 * * * * php /home/marcio/dados/public_html/magento-1.9.0.1-dev06/cron.php >> /home/marcio/dados/public_html/magento-1.9.2.4-dev31/var/log/magento.cron.log&

Veja que o primeiro modelo acessa via shell o arquivo cron.sh do Magento

Veja que o segundo modelo acessa via curl o arquivo cron.php do Magento

Veja que o terceiro modelo acessa via php-client o arquivo cron.php do Magento

Vemos que cada comando tem o armazenamento do resultado em arquivo, dessa forma podemos visualizar no horário do arquivo se foi feito alterações

Você pode usar qualquer um dos modelos acima ou qualquer tecnologia que faz acesso ao devido arquivo do Magento

Esse modelo está baseado em meu ambiente local, portanto pode haver variação para cada ambiente

_

Para o caso de ambiente com versões discrepante entre o PHP WEB e CLI

Deve ser editado o arquivo cron.sh

Comentando a antiga variavel e adicionando a nova

PHP_BIN='/usr/bin/php56'

Isso é necessário pois no ambiente PHP WEB foi exibido a versão 5.6 e no ambiente CLI exibido a versão 5.4

Portanto quando executado o comando

php -v

Era retornado o PHP 5.4, consequentemente o script é processado sobre essa versão 5.4

Erro de servidor: “error 500” ou “tela branca”

A informação “error 500” se trata da omissão do erro devendo ser analisado o erro no log do servidor

Todo o erro gerado no servidor é armazenado no log a causa do erro

Execute o seguinte comando no terminal do seu servidor

tail -f /var/log/apache2/error.log

tail -f /home/marcio/var/php-fpm/error.log

Acesse o projeto até gerar o erro

Será exibido no log a causa do erro

Efetuando pesquisa sobre o erro geralmente é encontrado a solução

Agora é somente aplicar a devida correção sobre o seu servidor

Habilitar exibição do erro no Magento

No magento edite o arquivo index.php e atualize a linha

DE

#ini_set('display_errors', 1);

PARA

ini_set('display_errors', 1);

Cotação de Moedas, Magento Cambio

Habilitando moedas

Assim que instalamos o Magento, por padrão, ele carrega diversas moedas. Mas o normal seria utilizarmos apenas uma (ou duas) moedas no sistema.

Então carregar menos moedas no sistema é mais inteligente e otimizado para sua loja. Para isso acesse:

No Backend do Magento, acesse o menu: Sistema -> Configuração -> Avançado -> Sistema -> Moeda

Na lista de moedas instaladas você deve selecionar apenas as que deseja usar no sistema, para que ele não carregue opções desnecessárias.

Neste exemplo iremos trabalhar com Real Brasileiro e Dólar Norte-Americano.

Exibindo moedas na vitrine

Por padrão, o sistema exibe apenas uma moeda na sua visão de loja, apenas a moeda padrão – informada durante a instalação do Magento.

Para ter outras opções de moeda, você deve acessar:

No Backend do Magento, acesse o menu: Sistema -> Configuração -> Geral -> Configuração de Moedas [Opções e Moeda]

No campo “Moedas Permitidas” serão listados todas as moedas do sistema, aquelas que você configurou anteriormente. Basta selecionar as opções que deseja disponibilizar em frontend.

O campo “Moeda Base” é referente à cobrança dos produtos, como os clientes devem considerar a compra/pagamento dos itens, então mesmo visualizando em outra moeda o formato válido para pagamento é o da moeda base. Por padrão você tem apenas uma moeda base para todo o sistema, caso queira ter uma moeda base para cada website, você deve primeiro ir em:

No Backend do Magento, acesse o menu: Sistema -> Configuração -> Catálogo -> Catálogo [Preço]

E alterar o escopo de preços para “Website”.

Em seguida você deve reindexar os índices das tabelas conforme solicitado pelo sistema.

Se você alterar o escopo para “website” durante a criação/edição de um produto, pode definir preços diferentes para o mesmo produto. (exemplo no vídeo)

Já o campo “Exibir Moeda Padrão” influencia apenas na forma como seus produtos serão apresentados durante a navegação do usuário. Assim que ele entrar na sua loja, antes dele escolher o formato de moeda que deseja visualizar, qual a moeda será apresentada? Você decide neste campo.

Fazendo a cotação

Não basta apenas selecionar as opções de moedas para o sistema, é preciso informar o valor cambial de cada nova cifra. Para isso você precisa acessar:

No Backend do Magento, acesse o menu: Sistema -> Gerenciar Moeda -> Tarifas

Alguns campos estarão em branco para você preencher manualmente, ou… basta clicar no botão [+ Importar]. E a cotação será importada automaticamente do serviço Webservicex.

Se você estiver de acordo com o valor informado, basta clicar em Salvar.

Agora que o sistema conhece os valores de cada moeda, ele deve ser exibido na visão da sua loja as opções para o cliente escolher como deseja visualizar os preços.

Controle de câmbio

Você provavelmente não deseja fazer esse controle manualmente, todo dia acessando o backend para atualizar os preços do dólar/euro/real, etc. Por isso vamos a mais algumas configurações, em:

No Backend do Magento, acesse o menu: Sistema -> Configuração -> Geral -> Configuração de Moedas [Webservicex]

Você tem apenas um campo, no qual não precisa se preocupar.

tempo conexao webservicex

Este campo informa em segundos, por quanto tempo ele vai tentar uma conexão com o webservice da Webservicex para obter atualização dos valores. Mas você pode aumentar esse número caso queira uma garantia maior de resposta do servidores deles.

Agora a configuração que realmente interessa fica em:

No Backend do Magento, acesse o menu: Sistema -> Configuração -> Geral -> Configuração de Moedas [Opções de Importação Agendadas]

Aqui não tem muito o que explicar, é tudo bem sugestivo na verdade – sem truques.

configuracoes de agendamento webservicex

Basta “habilitar” o módulo. O serviço disponível é apenas o “Webservicex“, pelo menos até a versão 1.7.0.2 do Magento CE. A frequência normalmente será “Diariamente“, pois os valores são sempre atualizados. O horário é uma decisão mais administrativa, você pode fazer isso todo dia à meia-noite, ou então após o fechamento do pregão.

Os últimos 3 (três) campos referentes ao campo email, são para os casos em que a cotação automática falhar – assim você pode ser avisado por email.

Os arquivos de layout

No template padrão do Magento, este campo de seleção de moedas é apresentado sempre na coluna da esquerda. Caso queira modificar isso, saiba que o arquivo responsável por ele é o directory.xml que fica em:

app/design/frontend/base/default/layout/directory.xml

E o arquivo currency.phtml é quem carrega as informações na tela:

app/design/frontend/base/default/template/directory/currency.phtml

Lembre-se de nunca alterar o arquivo em base/default, faça sempre uma cópia dele para default/default, ou então para seu template/tema customizado.

E basicamente é isso que você precisa saber sobre o controle de moedas no Magento. Qualquer dúvida basta acessar o fórum da Escola Magento.

Fonte: http://mariosam.com.br/magento/cotar-moedas/

Como compactar a pasta do meu projeto ?

O script a seguir é um modelo para a execução do procedimento de backup a ser executado via terminal do servidor

tar -cvpzf EMPRESA_$(date +%Y.%m.%d_%H.%M.%S).tgz ./DIRETORIO

Como descompactar um arquivo ?

O script a seguir é um modelo para a execução do procedimento de backup a ser executado via terminal do servidor

tar xvzf FILE.tgz

Como exportar o backup do banco de dados ?

O script a seguir é um modelo para a execução do procedimento de backup compactado a ser executado via terminal do servidor

mysqldump -h 'HOST' -u 'USER' -p'PASS' 'DBNAME' | gzip > EMPRESA_$(date +%Y.%m.%d_%H.%M.%S).sql.gz

Como importar o backup do banco de dados ?

O script a seguir é um modelo a ser executado via terminal do servidor

gunzip FILE.sql.gz

mysql -h 'HOST' -u 'USER' -p 'DBNAME' < 'FILE.sql';

Como alterar a URL_BASE do Magento no banco de dados ?

O script a seguir é um modelo a ser executado via terminal do servidor

mysql -h 'HOST' -u 'USER' -p 'DBNAME' -e "\
    SELECT * FROM core_config_data WHERE path like '%secure/base_url%'; \
    UPDATE core_config_data SET value = 'http://SUA_URL/ambiente_01/' WHERE path like '%secure/base_url%'; \
    SELECT * FROM core_config_data WHERE path like '%secure/base_url%'; \
"

Ativar debug do template no backend

Edite o arquivo /app/code/core/Mage/Core/etc/system.xml

Atualizando para

<template_hints translate="label">
    <label>Template Path Hints</label>
    <frontend_type>select</frontend_type>
    <source_model>adminhtml/system_config_source_yesno</source_model>
    <sort_order>20</sort_order>
    <show_in_default>1</show_in_default>
    <show_in_website>1</show_in_website>
    <show_in_store>1</show_in_store>
</template_hints>
<template_hints_blocks translate="label">
    <label>Add Block Names to Hints</label>
    <frontend_type>select</frontend_type>
    <source_model>adminhtml/system_config_source_yesno</source_model>
    <sort_order>21</sort_order>
    <show_in_default>1</show_in_default>
    <show_in_website>1</show_in_website>
    <show_in_store>1</show_in_store>
</template_hints_blocks>

Sobre como cadastrar o peso do produto

O método de entrega já vem como default o formato do peso como Kilos, caso tenha preenchido o peso do produto no formato de gramas na configuração do método deve alterar o Formato do Peso para Gramas

Peso preenchido no formato “Default” em Kilos
Para um peso de 80 gramas, para isso devemos informar 0.0800
Para um peso de 800 gramas, para isso devemos informar 0.8000
Para um peso de 1 kilo, para isso devemos informar 1 onde deve ser convertido pelo Magento para 1.0000

Peso preenchido no formato “Alternativo” em gramas
Para um peso de 80 gramas, para isso devemos informar 80.0000
Para um peso de 800 gramas, para isso devemos informar 800.0000
Para um peso de 1 kilo, para isso devemos informar 1000 onde deve ser convertido pelo Magento para 1000.0000

Exibir horário corrente no backend

Edite o arquivo /app/design/adminhtml/default/default/template/page/header.phtml

Atualizando

DE

$this->formatDate(null, 'full')

PARA

$this->formatDate(null, 'full', true)

Ativar debug

No Backend do Magento, acesse o menu: System -> Configuration -> Developer -> Debug -> Template Path Hints = Yes

Para ser exibido a opção “Template Path Hints” em Debug, deve ser selecionado a configuração para o website, selecionando o mesmo no SelectBox “Configuration Scope:”

Desabilitando a compilação do Magento pelo código

Para desabilitar a compilação sem ter acesso pelo admin do magento basta ir em /includes editar o arquivo chamado config.php comentando a linha abaixo com # na frente

Com o compilador ligado

define('COMPILER_INCLUDE_PATH', dirname(__FILE__).DIRECTORY_SEPARATOR.'src');

Com o compilador desligado

#define('COMPILER_INCLUDE_PATH', dirname(__FILE__).DIRECTORY_SEPARATOR.'src');

Forçar Recompilação do Magento pelo código

A pasta que fica localizada dentro da pasta /includes chamada de SRC é onde se encontra todos os arquivos compilados pelo Magento, para forçar pelo código uma nova compilação do Magento, basta renomear essa pasta ou removela. Obs: (Recomendo antes só renomear e se tudo der certo e uma nova pasta SRC for criada automaticamente, ai sim pode remover ela)

Obs. no uso do Compiler do Magento

No processo “Compilação” nunca apenas clique no botão “Ativar” pois pode ser ativado uma versão em Cache

Sempre antes clique no botão “Executar o processo de compilação”, dessa forma em seguida deve ser ativado automaticamente o Compiler do Magento

Como limpar o cache do Magento?

Se você tiver feito alterações em sua loja Magento, e elas não aparecerão imediatamente, pode ser necessário que você limpe o cache.
O Magento mantém seu cache em /var/cache localizado dentro do diretório de instalação do Magento.
Assim, por exemplo, se o Magento é instalado na pasta principal public_html/, o cache será em public_html/var/cache
Para limpar o cache, simplesmente apague tudo do diretório public_html/var/cache e recarregue seu site no seu browser.
Para limpar todas as sessões, você também pode excluir tudo do diretório public_html/var/session.

Como depurar problemas Magento MySQL

Assim como qualquer aplicação PHP moderna o Magento armazena a maioria de suas informações no banco de dados (exceto mídia e configurações XML).

Assim, para a depuração de problemas no Magento é útil saber algumas coisas:

  1. Todas as consultas do MySQL podem ser registrados e analisados. Para este efeito, abra o arquivo lib/Varien/Db/Adapter/Pdo/Mysql.php e altere o valor da propriedade protegida $_debug para true, também a propriedade protegida $_logAllQuerie para true.

Você também pode alterar o valor de US $_logQueryTime que é especialmente útil quando a depuração lentidão. Uma vez que você fizer essa alteração todas as consultas serão registradas no arquivo var/debug/sql.txt

Como adicionar o rastreamento(tracking)?

No Backend do Magento, acesse o menu: Sales -> Order -> Acesse o pedido em seguida clique no botão “Ship”, no bloco “Shipping Information” clque no botão “Add Tracking Number”, selecione o método de entrega e informe o número para rastreamento, adicione um comentário caso ache necessário e clique em “Submit Shipment”

No Backend do Magento, na visualização do pedido no bloco “Shipping & Handling Information” deve ser exibido o link “Track Order” onde clicando no mesmo deve ser aberto Popup apresentado o processo do rastreamento

No frontend do Magento, acessando o menu: Minha conta -> Meus pedidos -> onde ao visualizar o pedido deve ser exibido o link “Rastrear o seu pedido” onde clicando no mesmo deve ser aberto Popup apresentado o processo do rastreamento

Como analisar o andamento do MySQL

Devido a demora da importação podemos efetuar analise do andamento do processamento no MySQL

mysqladmin -h 'localhost' -u 'root' -p status

mysql -h 'localhost' -u 'root' -p -e "\
    SET GLOBAL general_log = 1; \
    SET GLOBAL log_output = 'table'; \
    SELECT * from mysql.general_log; \
"

mysql -h 'localhost' -u 'root' -p -e "\
    SELECT VERSION(); \
    SELECT LAST_INSERT_ID(); \
    show global variables like '%show_compatibility_56%'; \
    show status like '%onn%'; \
    show processlist; \
    KILL 23429; \
"   

Como redefinir a senha do administrador em Magento?

UPDATE admin_user SET password = MD5('NEWPASSWORD') WHERE username = 'ADMINUSERNAME';

Exibir cabeçalho “Esta é uma loja de demonstração. …”

No Backend do Magento, acesse o menu: System -> Configuration -> General -> Design -> HTML Head -> Display demo store notice = YES

Erro 404 Página não encontrada

Geralmente é exibido a pagina 404 após a instalação de módulos, onde é necessário apenas se deslogar e logar novamente no sistema

Modo de manutenção

Para habilitar o modo de manutenção no Magento, basta criar um arquivo vazio na raiz de sua loja Magento nomeado como “maintenance.flag”

Como redefinir a senha do administrador em Magento?

UPDATE admin_user SET password = MD5('123456a') WHERE username = 'admin';

Problemas com caracteres

O erro de caracteres é gerado por definição de charset no servidor onde o mesmo deve ser configurado para aceitar qualquer charset

Para alterar o charset no Apache no Ubuntu tente esse procedimento

sudo nano /etc/apache2/conf.d/charset

ou

grep -ri 'AddDefaultCharset' /etc/apache2

sudo nano /etc/apache2/conf-available/charset.conf

Em seguida, comente a linha

#AddDefaultCharset UTF-8

salve e saia do arquivo

Agora você precisa reiniciar o servidor apache usando o seguinte comando

sudo /etc/init.d/apache2 restart

Fonte: http://stackoverflow.com/questions/30088776/apache-2-4-x-override-charset-after-update-to-ubuntu-15-04