Esto muestra como manejar los correos transaccionales, así como la forma de agregar atachments y el uso del bcc en los correos transaccionales.
Precondiciones:
Tener un al menos un correo transaccional.
<?php
$transactionalMail = Mage::getModel('core/email_template')->load('Nombre del Template','template_code');
$storeId = 1;
$area = 'frontend'; //$area = 'admin';
$fromEmail = array('name' => 'CONTACT', 'email' => 'support@domain.com');
$fileName = '/path/to/some/attachment.zip';
$fileConent = file_get_contents($fileName);
$toEmail = 'customer@domain.com';
$toName = 'Customer Customer';
$vars = array('var1' => 1, 'var2' => 2);
$transactionalMail->setDesignConfig(array('area'=>$area, 'store'=>$storeId));
$transactionalMail->getMail()->createAttachment($fileConent,'application/zip')->filename = basename($fileName);
$transactionalMail->getMail()->addBcc(array('name' => 'ADMIN', 'email' => 'admin@domain.com'));
$transactionalMail->sendTransactional(
$transactionalMail->getId(),
$fromEmail,
$toEmail,
$toName,
$vars,
$storeId);
Mostrando entradas con la etiqueta Magento. Mostrar todas las entradas
Mostrando entradas con la etiqueta Magento. Mostrar todas las entradas
viernes, 30 de diciembre de 2011
Magento: Como sobreescribir un controller
Plantilla básica de un config.xml para hacer sobreescribir un cotroller, incluye la version para sobreescribir un controller del front como la del admin.
Variables (Respetar las mayúsculas es importante):
{{Empresa}} ó {{empresa}} Nombre de espacio dentro de ./app/code/local
{{Modulo}} ó {{modulo}} Nombre del modulo dentro del nombre de espacio, debe estar dentro de ./app/code/local/{{Empresa}}
{{controller}} Nombre del modelo del controller.
{{modulonativo}} Nombre del modulo al que pertenece el controller que vamos a sobreescribir.
{{controllernativo}} Nombre del controller que vamos a sobreescribir.
Precondiciones:
Tener declarado el modulo con el archivo ./app/etc/{{Empresa}}_{{Modulo}}.xml
Tener ya la estructura de directorios del modulo, y el controller.
Tener el archivo config.xml del modulo
Los conotrollers no respetan la nomenclatura standard del autoinclude de Magento, por lo que es necesario hacer un require_once
Para hacer una reutilización optima del código del core, la clase del controller debe extender a la clase del controller que vamos a sobreescribir.
<?xml version="1.0"?>
<config>
<modules>
<{{Empresa}}_{{Modulo}}>
<version>0.1.1</version>
</{{Empresa}}_{{Modulo}}>
</modules>
<frontend>
<routers>
<{{modulo}}>
<use>standard</use>
<args>
<module>{{Empresa}}_{{Modulo}}</module>
<frontName>{{modulo}}</frontName>
</args>
</{{modulo}}>
</routers>
</frontend>
<admin>
<routers>
<{{modulo}}>
<use>admin</use>
<args>
<module>{{Empresa}}_{{Modulo}}</module>
<frontName>{{empresa}}{{modulo}}</frontName>
</args>
</{{modulo}}>
</routers>
</admin>
<global>
<rewrite>
<{{empresa}}_{{modelo}}_{{controller}}>
<from><![CDATA[#^/{{modulonativo}}/{{controllernativo}}/#]]></from>
<to>/{{empresa}}{{modulo}}/{{controller}}/</to>
</{{empresa}}_{{modelo}}_{{controller}}>
</rewrite>
</global>
</config>
Variables (Respetar las mayúsculas es importante):
{{Empresa}} ó {{empresa}} Nombre de espacio dentro de ./app/code/local
{{Modulo}} ó {{modulo}} Nombre del modulo dentro del nombre de espacio, debe estar dentro de ./app/code/local/{{Empresa}}
{{controller}} Nombre del modelo del controller.
{{modulonativo}} Nombre del modulo al que pertenece el controller que vamos a sobreescribir.
{{controllernativo}} Nombre del controller que vamos a sobreescribir.
Tener declarado el modulo con el archivo ./app/etc/{{Empresa}}_{{Modulo}}.xml
Tener ya la estructura de directorios del modulo, y el controller.
Tener el archivo config.xml del modulo
Los conotrollers no respetan la nomenclatura standard del autoinclude de Magento, por lo que es necesario hacer un require_once
Para hacer una reutilización optima del código del core, la clase del controller debe extender a la clase del controller que vamos a sobreescribir.
<?xml version="1.0"?>
<config>
<modules>
<{{Empresa}}_{{Modulo}}>
<version>0.1.1</version>
</{{Empresa}}_{{Modulo}}>
</modules>
<frontend>
<routers>
<{{modulo}}>
<use>standard</use>
<args>
<module>{{Empresa}}_{{Modulo}}</module>
<frontName>{{modulo}}</frontName>
</args>
</{{modulo}}>
</routers>
</frontend>
<admin>
<routers>
<{{modulo}}>
<use>admin</use>
<args>
<module>{{Empresa}}_{{Modulo}}</module>
<frontName>{{empresa}}{{modulo}}</frontName>
</args>
</{{modulo}}>
</routers>
</admin>
<global>
<rewrite>
<{{empresa}}_{{modelo}}_{{controller}}>
<from><![CDATA[#^/{{modulonativo}}/{{controllernativo}}/#]]></from>
<to>/{{empresa}}{{modulo}}/{{controller}}/</to>
</{{empresa}}_{{modelo}}_{{controller}}>
</rewrite>
</global>
</config>
jueves, 22 de diciembre de 2011
Magento: Como configurar un cron
Para configurar un cron usando el motor de crons de Magento se seben seguir los siguientes pasos:
Variables (Respetar las mayúsculas es importante):
{{Empresa}} ó {{empresa}} Nombre de espacio dentro de ./app/code/local
{{Modulo}} ó {{modulo}} Nombre del modulo dentro del nombre de espacio, debe estar dentro de ./app/code/local/{{Empresa}}
{{modelo}} Nombre del modelo del modulo.
{{metodo}} Nombre del metodo del modelo que se va a ejecutar.
{{cron_name}} Nombre del cron con el que sera identificado dentro de la tabla cron_schedule.
Precondiciones:
Tener declarado el modulo con el archivo ./app/etc/{{Empresa}}_{{Modulo}}.xml
Tener ya la estructura de directorios del modulo, y almenos un modelo.
Tener el archivo config.xml del modulo
En el archivo config.xml solo debemos seguir esta estructura:
<?xml version="1.0"?>
<config>
<modules>
<{{Empresa}}_{{Modulo}}>
<version>0.1.0</version>
</{{Empresa}}_{{Modulo}}>
</modules>
...
<global>
<models>
<{{modulo}}>
<class>{{Empresa}}_{{Modulo}}_Model</class>
</{{modulo}}>
</models>
</global>
...
<crontab>
<jobs>
<{{cron_name}}>
<schedule><cron_expr>0 * * * *</cron_expr></schedule>
<run><model>{{metodo}}/{{empresa}}_{{modulo}}_{{modelo}}::{{metodo}}</model></run>
</{{cron_name}}>
</jobs>
</crontab>
</config>
El valor del nodo <cron_expr>, equivale a una expresion del programa crontab de linux.
<schedule><cron_expr>0 * * * *</cron_expr></schedule>
Variables (Respetar las mayúsculas es importante):
{{Empresa}} ó {{empresa}} Nombre de espacio dentro de ./app/code/local
{{Modulo}} ó {{modulo}} Nombre del modulo dentro del nombre de espacio, debe estar dentro de ./app/code/local/{{Empresa}}
{{modelo}} Nombre del modelo del modulo.
{{metodo}} Nombre del metodo del modelo que se va a ejecutar.
{{cron_name}} Nombre del cron con el que sera identificado dentro de la tabla cron_schedule.
Precondiciones:
Tener declarado el modulo con el archivo ./app/etc/{{Empresa}}_{{Modulo}}.xml
Tener ya la estructura de directorios del modulo, y almenos un modelo.
Tener el archivo config.xml del modulo
En el archivo config.xml solo debemos seguir esta estructura:
<?xml version="1.0"?>
<config>
<modules>
<{{Empresa}}_{{Modulo}}>
<version>0.1.0</version>
</{{Empresa}}_{{Modulo}}>
</modules>
...
<global>
<models>
<{{modulo}}>
<class>{{Empresa}}_{{Modulo}}_Model</class>
</{{modulo}}>
</models>
</global>
...
<crontab>
<jobs>
<{{cron_name}}>
<schedule><cron_expr>0 * * * *</cron_expr></schedule>
<run><model>{{metodo}}/{{empresa}}_{{modulo}}_{{modelo}}::{{metodo}}</model></run>
</{{cron_name}}>
</jobs>
</crontab>
</config>
El valor del nodo <cron_expr>, equivale a una expresion del programa crontab de linux.
<schedule><cron_expr>0 * * * *</cron_expr></schedule>
martes, 20 de diciembre de 2011
Magento: Como sobre cargar un bloque
Ejemplo:
Para sobre cargar este bloque:
Mage_Adminhtml_Block_Sales_Order_Grid
Antes de comenzar
Empresa: significa el nombre de espacio dentro de la carpeta de ./app/code/local
Declarar un modulo nuevo si no lo tienes, para declarar el mdolulo debemos crear un archivo llamado Empresa_Adminhtml.xml en :
./app
/etc
/modules
/Empresa_Adminhtml.xml
El contenido del archivo debe ser:
<?xml version="1.0"?>
<config>
<modules>
<Empresa_Adminhtml>
<active>true</active>
<codePool>local</codePool>
</Empresa_Adminhtml>
</modules>
</config>
Luego debemos configurar el modulo, para ello creamos un archivo de configuración que debe quedar en:
./app
/code
/local
/Empresa
/Adminhtml
/etc
/config.xml
El contenido minímo que debe tener tu archivo config.xml es:
<?xml version="1.0" encoding="utf-8"?>
<config>
<modules>
<Empresa_Adminhtml>
<version>0.1.0</version>
</Empresa_Adminhtml>
</modules>
<global>
<blocks>
<adminhtml>
<rewrite>
<sales_order_grid>Empresa_Adminhtml_Block_Sales_Order_Grid</sales_order_grid>
</rewrite>
</adminhtml>
</blocks>
</global>
</config>
Ahora si creamos la clase que sobre cargara a la calse original, el archivo debe quedar en:
./app
/code
/local
/Empresa
/Adminhtml
/Block
/Sales
/Order
/Grid.php
El archivo debe tener como minimo este contenido, noten que nuestra clase extiende del bloque que estamos sobrecargando, lo cual sirve para tener que implementar solo los cambios especificos en el bloque.
<?php
class Empresa_Adminhtml_Block_Sales_Order_Grid extends Mage_Adminhtml_Block_Sales_Order_Grid
{
/**
* @todo
*/
}
Para sobre cargar este bloque:
Mage_Adminhtml_Block_Sales_Order_Grid
Antes de comenzar
Empresa: significa el nombre de espacio dentro de la carpeta de ./app/code/local
Declarar un modulo nuevo si no lo tienes, para declarar el mdolulo debemos crear un archivo llamado Empresa_Adminhtml.xml en :
./app
/etc
/modules
/Empresa_Adminhtml.xml
El contenido del archivo debe ser:
<?xml version="1.0"?>
<config>
<modules>
<Empresa_Adminhtml>
<active>true</active>
<codePool>local</codePool>
</Empresa_Adminhtml>
</modules>
</config>
Luego debemos configurar el modulo, para ello creamos un archivo de configuración que debe quedar en:
./app
/code
/local
/Empresa
/Adminhtml
/etc
/config.xml
El contenido minímo que debe tener tu archivo config.xml es:
<?xml version="1.0" encoding="utf-8"?>
<config>
<modules>
<Empresa_Adminhtml>
<version>0.1.0</version>
</Empresa_Adminhtml>
</modules>
<global>
<blocks>
<adminhtml>
<rewrite>
<sales_order_grid>Empresa_Adminhtml_Block_Sales_Order_Grid</sales_order_grid>
</rewrite>
</adminhtml>
</blocks>
</global>
</config>
Ahora si creamos la clase que sobre cargara a la calse original, el archivo debe quedar en:
./app
/code
/local
/Empresa
/Adminhtml
/Block
/Sales
/Order
/Grid.php
El archivo debe tener como minimo este contenido, noten que nuestra clase extiende del bloque que estamos sobrecargando, lo cual sirve para tener que implementar solo los cambios especificos en el bloque.
<?php
class Empresa_Adminhtml_Block_Sales_Order_Grid extends Mage_Adminhtml_Block_Sales_Order_Grid
{
/**
* @todo
*/
}
Magento: No puedo entrar al backend
Cuando no se puede entrar al backend en Magento solo debes ir al archivo
/app/code/core/Mage/Core/Model/Session/Abstract/Varien.php
Cerca de la linea 78 tenemos
$cookieParams = array(
'lifetime' => $cookie->getLifetime(),
'path' => $cookie->getPath(),
'domain' => $cookie->getConfigDomain(),
'secure' => $cookie->isSecure(),
'httponly' => $cookie->getHttponly()
);
Solo lo debemos cambiar
$cookieParams = array(
'lifetime' => $cookie->getLifetime(),
'path' => $cookie->getPath(),
/*'domain' => $cookie->getConfigDomain(),
'secure' => $cookie->isSecure(),
'httponly' => $cookie->getHttponly()*/
);
/app/code/core/Mage/Core/Model/Session/Abstract/Varien.php
Cerca de la linea 78 tenemos
$cookieParams = array(
'lifetime' => $cookie->getLifetime(),
'path' => $cookie->getPath(),
'domain' => $cookie->getConfigDomain(),
'secure' => $cookie->isSecure(),
'httponly' => $cookie->getHttponly()
);
Solo lo debemos cambiar
$cookieParams = array(
'lifetime' => $cookie->getLifetime(),
'path' => $cookie->getPath(),
/*'domain' => $cookie->getConfigDomain(),
'secure' => $cookie->isSecure(),
'httponly' => $cookie->getHttponly()*/
);
Suscribirse a:
Entradas (Atom)