Añadir campo de Telefono a formulario de contacto nativo

Para cualquier duda sobre Joomla! 3.x que no tenga cabida en alguno de los foros de más abajo.

Moderators: hefesto, carcam

Locked
geo26
Joomla! Fledgling
Joomla! Fledgling
Posts: 1
Joined: Mon Jan 27, 2014 8:19 am

Añadir campo de Telefono a formulario de contacto nativo

Post by geo26 » Mon Jan 27, 2014 8:30 am

Hola, tengo un problema.
Como puedo añadir el campo Teléfono al Formulario de contacto Nativo de Joomla 3.0x ?
Solo quiero añadir ese campo pero no hay manera. :-)
A poder ser no quiero instalar ningún componente, solo quiero que me salga el campo Teléfono para que el cliente pueda poner su Teléfono de contacto.

Gracias.

jcarloos
Joomla! Explorer
Joomla! Explorer
Posts: 345
Joined: Sat Mar 10, 2012 2:29 am

Re: Añadir campo de Telefono a formulario de contacto nativo

Post by jcarloos » Tue Jan 28, 2014 6:28 pm

Hola @geo26, bienvenido al foro:
Lo primero que tienes que hacer es, poner dentro del contacto, el télefono. Luego asegurarte en las opciones del componente, que el campo "teléfono" este marcado en mostrar. Con esto te tiene que salir ese campo.

jcarloos
Joomla! Explorer
Joomla! Explorer
Posts: 345
Joined: Sat Mar 10, 2012 2:29 am

Re: Añadir campo de Telefono a formulario de contacto nativo

Post by jcarloos » Tue Jan 28, 2014 6:40 pm

Creo que te entendí mal. Si lo que quieres es que un "usuario" ponga su teléfono, entonces debes ir al gestor de plugin, y filtrar por los plugin de tipo "user". El plugin "Usuario - Perfil" es el que se encarga de poner en opcional o obligatorio, los campos del perfil para los formularios de registro y administración.

Una vez que pongas esto, el usuario cuando se va a registrar, tiene que poner su teléfono. Y lo que te dije más arriba, ya hace que salga este campo.

jcarloos
Joomla! Explorer
Joomla! Explorer
Posts: 345
Joined: Sat Mar 10, 2012 2:29 am

Re: Añadir campo de Telefono a formulario de contacto nativo

Post by jcarloos » Tue Jan 28, 2014 9:08 pm

Vaya, al parecer tengo mala lectura hoy :D . Ya entiendo lo que quieres. Añadir un campo más al formulario de contacto de Joomla. Ostras, que difícil se me ha hecho comprender esto :).

Bueno. En primera, Joomla no permite (desde la administración) añadir un nuevo campo al formulario de contacto. Te muestro dos soluciones para esto.

La primera, y es la que te recomiendo, es que cambies el nombre "Asunto" por "Teléfono" y a efectos tuyos, te funcionara muy bien, ya que en el "Asunto" del correo que te llegue, veras un nombre de teléfono. Este cambio lo puedes hacer desde el gestor de idiomas, en la pestaña "Modificaciones". Acá creas una nueva, buscas esta palabra y la cambias. Te muestro un tutorial para hacer esto: Editar y modificar Constantes o Valores de Idioma

La otra vía, y la que no te recomiendo, es hacer estos pequeños cambios en Joomla. No te la recomiendo ya que modificar el core de Joomla, a pesar de que esta modificación no afecta en nada, ni es una modificación "extrema", pero es una modificación que nunca me gusta hacer. Sino puedo modificar las cosas a través de un override pues no lo hago. Pero bueno, tu decidirás si la pones o no.

PRIMER PASO
Copia este fichero:
tusitio\components\com_contact\views\contact\tmpl\default_form.php

y ponlo para la carpeta HTML de tu plantilla:
tusitio\templates\tuplantilla\html\com_contact\default_form.php

Abre el archivo default_form.php y añade lo siguiente:

Code: Select all

<div class="control-group">
     <div class="control-label"><?php echo $this->form->getLabel('contact_email'); ?></div>
     <div class="controls"><?php echo $this->form->getInput('contact_email'); ?></div>
</div>

[b]<div class="control-group">
     <div class="control-label"><?php echo $this->form->getLabel('contact_phone'); ?></div>
     <div class="controls"><?php echo $this->form->getInput('contact_phone'); ?></div>
</div>[/b]

<div class="control-group">
     <div class="control-label"><?php echo $this->form->getLabel('contact_subject'); ?></div>
     <div class="controls"><?php echo $this->form->getInput('contact_subject'); ?></div>
</div>
Te puse en negrita (entre las etiquetas [ b ]....[ /b ]) lo que tienes que añadir, y en ese lugar lo añades.

SEGUNDO PASO
A partir de aquí empiezas a modificar el core de Joomla, debes tenerla presente, para cuando actualices el sitio, ya que se te borra una vez actualices.


Luego vas a:
tusitio\components\com_contact\models\forms\contact.xml

Una vez ahí, lo abres para editarlo. Añades lo siguiente:

Code: Select all

<field name="contact_email"
	type="email"
	id="contact-email"
	size="30"
	description="COM_CONTACT_EMAIL_DESC"
	label="COM_CONTACT_EMAIL_LABEL"
	filter="string"
	validate="contactemail"
	required="true"
/>

[b]<field name="contact_phone"
	type="text"
	id="contact-phone"
	size="30"
	description="COM_CONTACT_PHONE_DESC"
	label="COM_CONTACT_PHONE_LABEL"
	filter="string"
	required="true"
/>[/b]
		
<field name="contact_subject"
	type="text"
	id="contact-emailmsg"
	size="60"
	description="COM_CONTACT_CONTACT_MESSAGE_SUBJECT_DESC"
	label="COM_CONTACT_CONTACT_MESSAGE_SUBJECT_LABEL"
	filter="string"
	validate="contactemailsubject"
	required="true"
/>
Al igual que el otro, te he puesto en negrita (entre las etiquetas [ b ]....[ /b ]) lo que tienes que añadir, y en ese lugar lo colocas.

TERCER PASO
Vas a:
tusitio\language\es-ES\es-ES.com_contact

Y lo abres para editarlo. Añade lo siguiente al final del mismo:

Code: Select all

COM_CONTACT_PHONE_LABEL="Teléfono"
COM_CONTACT_PHONE_DESC="Teléfono de contacto"
CUARTO PASO
Ya este último paso es para que llegue el teléfono, en conjunto con el correo que enviaron. Vas a:

tusitio\components\com_contact\controllers\contact.php

Lo abres para editarlo. Añades la siguiente línea:

Code: Select all

$name		= $data['contact_name'];
$email		= JStringPunycode::emailToPunycode($data['contact_email']);
[b]$phone		= $data['contact_phone'];[/b]
$subject	= $data['contact_subject'];
$body		= $data['contact_message'];
Te he puesto en negrita (entre las etiquetas [ b ]....[ /b ]) lo que tienes que añadir, y lo añades en ese lugar.

y más abajo cambias esta línea:

Code: Select all

$mail->setSubject($sitename.': '.$subject);
Por esta otra:

Code: Select all

$mail = JFactory::getMailer();
$mail->addRecipient($contact->email_to);
$mail->addReplyTo(array($email, $name));
$mail->setSender(array($mailfrom, $fromname));
[b]$mail->setSubject($sitename.': '.$subject.' Tel:'.$phone);[/b]
$mail->setBody($body);
$sent = $mail->Send();
Te he puesto en negrita (entre las etiquetas [ b ]....[ /b ]), en donde estaba la línea que tenías que cambiar anteriormente, y la que tienes que poner.

Bueno, espero que sepas que vía tomar.

User avatar
fernando_calsa
Joomla! Intern
Joomla! Intern
Posts: 57
Joined: Mon Jun 10, 2013 5:50 pm
Location: Madrid
Contact:

Re: Añadir campo de Telefono a formulario de contacto nativo

Post by fernando_calsa » Wed Feb 05, 2014 10:23 pm

e instalar un componente de formularios? mejor que tocar el core de joomla y que cambiar la constante de idioma no?
Intentando mejorar cada día
twitter: @fernando_calsa
El ciclismo, mi vida; La ingeniería, mi pasión; Joomla, mi perdición

User avatar
hefesto
Joomla! Hero
Joomla! Hero
Posts: 2569
Joined: Fri Jan 20, 2006 12:37 am
Location: Seville - Spain
Contact:

Re: Añadir campo de Telefono a formulario de contacto nativo

Post by hefesto » Fri Feb 14, 2014 10:47 am

Coincido con Fernando, Carlos. Tocar el core nunca debería ser una opción. A la larga suele traer problemas. Yo optaría por usar un componente de formularios: Chronoforms por ejemplo es gratuito, y trae "de serie" un plugin que te permite usar fácilmente uno de sus formularios para el registro de usuarios.

Un saludo,
Isidro
Spanish forum local moderator
Twitter: @isidrobaq
Comunidad Joomla de España: https://joomlaes.org
NO atiendo peticiones privadas de soporte. Por favor, pregunta en los foros.


Locked

Return to “Joomla! 3.x”