Page 1 of 1

Añadir campo de Telefono a formulario de contacto nativo

Posted: Mon Jan 27, 2014 8:30 am
by geo26
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.

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

Posted: Tue Jan 28, 2014 6:28 pm
by jcarloos
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.

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

Posted: Tue Jan 28, 2014 6:40 pm
by jcarloos
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.

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

Posted: Tue Jan 28, 2014 9:08 pm
by jcarloos
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.

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

Posted: Wed Feb 05, 2014 10:23 pm
by fernando_calsa
e instalar un componente de formularios? mejor que tocar el core de joomla y que cambiar la constante de idioma no?

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

Posted: Fri Feb 14, 2014 10:47 am
by hefesto
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