martes, 24 de julio de 2012

Magento: Cómo crear un helper

La creación de un helper en Magento es muy simple, lo que sí es muy importante, es tener cuidado en el uso de las mayúsculas y minúsculas, así como en el uso de comentarios en los archivos xml.

Este artículo también pretende ser un breve tutorial para comprender el porqué de las cosas.

1) Hay que crear un módulo para alojar nuestro helper, para ello, necesitamos crear un nuevo archivo en la carpeta app/etc/modules/ el cual llamaremos Micodigo.xml

Poner el siguiente código dentro:

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <modules>
        <Micodigo_Mihelper>
            <codePool>local</codePool>
            <active>true</active>
        </Micodigo_Mihelper>
    </modules>
</config>

Micodigo representa un espacio de nombres (Namespace) en donde podemos colocar uno o varios módulos nuestros.

Mihelper representa el nombre de nuestro módulo

En el nodo codePool, local significa que nuestro módulo es exclusivamente para nuestra necesidad específica (en Magento, community es por lo general para los plug-ins libres o comerciales que la comunidad de Magento desarrolla y resuelven problemas más comunes, y core significaría que este módulo es de la plataforma de Magento)

2) Crear el directorio app/code/local/Micodigo/Mihelper/etc/ y crear el archivo config.xml:

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <modules>
        <Micodigo_Mihelper>
            <version>1.0.0</version>
        </Micodigo_Mihelper>
    </modules>
    
    <global>
        <helpers>
            <mihelper>
                <class>Micodigo_Mihelper_Helper</class>
            </mihelper>
        </helpers>
    </global>
</config>

3) Crear la carpeta app/code/local/Micodigo/Mihelper/Helper/ y crear el archivo Data.php

<?php
class Micodigo_Mihelper_Helper_Data extends Mage_Core_Helper_Abstract
{

    public function test()
    {
        return 'Hola mundo' ."\n";
    }

}

4) Usar el helper de la siguientes maneras:

echo Mage::helper('mihelper')->test();
$helper = Mage::helper('mihelper')
echo $helper->test();

O si lo prefieres, puedes probarlo desde el shell, ya sea que hayas iniciado una sesión por SSH en linux:

1) Crear un archivo test.php en la carpeta raíz de Magento, y poner este código:

<?php
require 'app/Mage.php';
Mage::App('default');
if (!Mage::isInstalled()) {
    echo "Application is not installed yet, please complete install wizard first.";
    exit;
}

$_SERVER['SCRIPT_NAME'] = str_replace(basename(__FILE__), 'index.php', $_SERVER['SCRIPT_NAME']);
$_SERVER['SCRIPT_FILENAME'] = str_replace(basename(__FILE__), 'index.php', $_SERVER['SCRIPT_FILENAME']);
ini_set('display_errors', '1');

require 'Mage/Core/Helper/Data.php';
echo Mage::helper('mihelper')->test();

2) Ejecutarlo desde el prompt de linux, con un comando como este (hay que tomar en cuenta que la ubicación del archivo php binario varía según la distribucion de linux que estés usando, en este caso es con CentOS 6):

/usr/bin/php ./test.php

2 comentarios:

  1. Muchas gracias por el tutorial, me funcionó correctamente en Magento 1.7
    Solo hay una corrección. En el paso número 2 cambiar:

    2) Crear el directorio app/local/Micodigo/Mihelper/etc/ y crear el archivo config.xml:

    por:

    2) Crear el directorio app/code/local/Micodigo/Mihelper/Helper/ y crear el archivo config.xml:

    y listo.

    ResponderEliminar

Datos personales

Mi foto
Podrás encontrar códigos recursos y artículos sobre PHP, JavaScript, jQuery, MooTools, Ajax, CSS, HTML, UML, RUP, AUP, XP (eXtreme Programming), Six-Sigma, CMMI, FrameWorks, Zend Framework, Magento, CodeIgniter, CakePHP, Joomla 1.5, Doctrine, Active Record, ORM, POO, MVC, MySql, PostgreSql. Este espacio está destinado a ayudar y compartir un poco de lo mucho que he recibido de la comunidad en la Red.