Para se criar um script fora da estrutura do Magento é simples, porém deve ser feito com cautela.
Quando criamos um script externo pode acontecer de pensarmos, principalmente quem está iniciando em Magento, que não há uma forma de se utilizar as classes e métodos do Magento, como por exemplo a classe Mage.
Na verdade é possível sim utilizarmos tais classes e para isso precisamos primeiramente no arquivo dar um include do arquivo mais importante do Magento, também conhecido como Bootstrap: app/Mage.php.
Então é só fazer isso e já posso sair codificando meu script nos padrões Magento de qualidade? A resposta é não. Este é apenas o primeiro passeo.
Por motivos internos do Magento é preciso que se instancie uma session do ‘frontend’ ou ‘backend’. A partir daí tudo funciona nos padrões Magento, como se você estivesse criando seus códigos dentro de um Model, por exemplo.
No exemplo abaixo eu demonstro como criar o seu script de uma forma que funcione perfeitamente:
[php]
<?php
require_once ‘../app/Mage.php’;
Mage::app();
Mage::getSingleton(‘core/session’, array(‘name’ => ‘frontend’));
$orders = Mage::getModel(‘sales/orders’)->addFieldToFilter(‘created_at’, array(
‘from’ => ‘2012-10-01 00:00:00’,
‘to’ => ‘2012-10-31 23:59:59’,
‘datetime’ => true
)
);
/* Aqui é implementada o restante da lógica… */
if($orders->count() > 0) {
foreach($orders as $order)
{
…
}
}
…
?>
[/php]
Isto é muito útil quando temos scripts que devem ser rodados ocasionalmente e não precisamos necessariamente criar um módulo para tal ação.
Porém eu aconselho, sempre antes de tomar a decisão de criar um script externo no Magento, validar se realmente não é necessário que seja desenvolvido um módulo para resolver o problema.
Existem vários benefícios de se utilizar um módulo customizado ao invés de um script externo, porém este assunto fica para um post futuro.
Espero que esta dica seja de bom uso.
Um abraço e até a próxima!
Tiago Sampaio
Hi there, You’ve done an excellent job. I’ll definitely digg it and personally recommend to my friends. I am confident they’ll be benefited from this web site.
Hi Francisca,
Thanks a lot for your comment. I really hope you to like my website and all my posts.
My objective is to bring much knowledge for Magento’s Community here in Brazil as I can.
Thanks a lot.
Tiago Sampaio
Ola Tiago,
Gostaria de saber se você consegue colocar no php o codigo de carrinho abandonado para e-commerce.
Atenciosamente,
Guilherme
Olá Guilherme,
Sim, é possível colocar o script php de carrinho abandonado fora da estrutura do Magento, porém fisicamente o arquivo precisa ter acesso á estrutura do Magento, podendo ser colocado na pasta shell, etc.
Abs,
Tiago
Bom dia tiago! sempre acompanho seus post são excelentes! Estou com um erro e não sei se ele implica realmente em um problema, o que acontece é que meu magento após atualizar pata versão 1.9.2.3 não está mais criando arquivos session e cache na pasta var, as permissões estão corretas e aparentemente a loja está funcionando normal realizando pedidos etc. No momento ativei Redis e chequei está funcionando mais antes não criava os arquivos também. Tem problema a não criação desses arquivos? Obrigado !
Olá Fernando, tudo bem?
No seu caso, se você está utilizando o Redis com o Magento, as pastas
var/session
evar/cache
realmente ficarão vazias, pois o Magento vai escrever caches e sessões no Redis Server ao invés de filesystem. Se está funcionando corretamente no servidor de produção, provavelmente não existe nenhum erro nesta parte.Abraços,
– Tiago