Magento: como añadir nuevos campos en el registro

Si queremos añadir nuevos campos al formulario de registro de usuario, Magento no nos lo va a poner fácil. En el repositorio de extensiones si que disponemos de aplicaciones de pago donde crear múltiples campos para agregarlos al formulario pero, en mi caso, que sòlo hablamos de un par de campos fijos lo he conseguido de otra manera.

A continuación los archivos a tocar:

/app/design/frontend/template/default/customer/form/register.phtml

/app/code/local/Mage/Customer/Model/entity/Setup.php copiado de /app/code/core/Mage/Customer/Model/entity/Setup.php.

/app/code/local/Mage/Customer/etc/config.xml copiado de /app/code/core/Mage/Customer/etc/config.xml.

Manos a la obra. En mi caso he añadido 2 campos no obligatorios y no editables posteriormente por el usuario al formulario de registro. Son el campo empresa y actividad principal. Editaremos el register.phtml y colocaremos los 2 campos de texto:

  • Estos nuevos campos no están registrados en la bbdd. Para hecerlo lo más práctico es añadir el siguiente código al principio de la vista y acceder al formulario una sólo vez. De esta manera habremos creado los 2 nuevos campos.

    $setup = new Mage_Eav_Model_Entity_Setup('core_setup');
    $setup->addAttribute('customer', 'empresa', array(
    	'label'		=> 'Empresa',
    	'type'		=> 'varchar',
    	'input'		=> 'text',
    	'visible'	=> true,
    	'required'	=> false,
    	'position'	=> 1,
    	));
    $setup->addAttribute('customer', 'actividad', array(
    	'label'		=> 'Actividad',
    	'type'		=> 'varchar',
    	'input'		=> 'text',
    	'visible'	=> true,
    	'required'	=> false,
    	'position'	=> 2,
    	));

    Seguidamente en app/code/local/Mage/Customer/Model/Entity/Setup.php dentro de la función getDefaultEntities añadimos los campos debajo del campo email por ejemplo:

    'actividad' => array(
                            'required'      => false,
    						'visible'	=> true,
                            'label'         => 'actividad',
                            'sort_order'    => 61,
    					),
     'empresa' => array(
                            'required'      => false,
    						'visible'	=> true,
                            'label'         => 'empresa',
                            'sort_order'    => 62,
    					),

    Seguidamente en /app/code/local/Mage/Customer/etc/config.xml editamos el tag customer account y añadimos los nuevos campos:

    
    
                
    111
                    111
                    111
                    111
                    111
                    11
    				11
    				11
    				11
    1
                    1
                    11
                    11
                    11
                
            ....
    

    De esta manera habremos conseguido añadir estos nuevos campos al formulario de registro. Éstos, en nuestro caso, sólo seran vistos y editables, una vez guardados, dentro del admin. Si quisieramos que el propio usuario pudiera cambiarlos tendríamos que editar la vista edit.phtml del usuario.

    Comparte: Compartelo en Facebook | Compartelo en Twitter

    3 comentarios en “Magento: como añadir nuevos campos en el registro”

    1. luis:

      Jul 22, 11 a las 4:32

      Esta ruta no la tengo: /app/code/local/Mage/Customer

      espero tu respuesta gracias

    2. admin:

      Jul 30, 11 a las 15:46

      Hola Luis, ese directorio lo tienes que crear tu para indicar a Magento que has modificado el codigo original

    3. luis:

      Nov 30, 11 a las 2:38

      Gracias. Lo voy a probar. Saludos


    Dejame un comentario