Programación

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.

    1 Estrella2 Estrellas3 Estrellas4 Estrellas5 Estrellas (Califica este artículo)
    Cargando…

    7 Comentarios Magento: como añadir nuevos campos en el registro

    1. luis

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

      espero tu respuesta gracias

    2. admin

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

    3. gustavo

      hago lo que me indicaron en las instrucciones pero no me guarda el campo en la base. que puedo estar haciendo mal, tengo la version 1.7.0.2

    4. Marisol

      Yo estoy intentando agregar dos campos, en mi caso el checkout de un carrito de compras, necesito que los clientes pongan dos nombres de personas autorizadas para recibir la mercancía… lo intente con este proceso, pero no funciono ¿será por que intento que sean campos obligatorios?

    5. Cristian

      Hola que tal, no la tengo muy claro pero ya hice el campo que necesito en el checkout de mi tienda, debo entrar y crear también el campo en la base de datos? no me queda muy claro el tema, gracias por la ayuda

    Dejar un comentario

    Clientes

    ¿Hablamos?

    Una vez que has llegado aquí ¿tienes alguna duda? Déjame tus datos de contacto y te llamaré en el primer hueco que encuentre.

    Contactar