Formulario de Contacto personalizado en Joomla!

February 5, 2009    Autor Damián   Guardado en: CMS, Joomla! 

Queriendo un formulario de contacto acorde a mis necesidades, descarte definitivamente (sin pensarlo) el formulario de contacto por defecto de Joomla! y entonces me embarque en buscar alguna extensión que realizara el mismo cometido.. es así que encontré Qcontacts el cual utilice durante un tiempo pero tampoco es lo que quería para mi formulario.

Entonces decidí investigar y ver como podría utilizar un formulario hecho por mí dentro de Joomla! y encontré que utilizando Wrapper (urls embebidas) se lo podría realizar sin problemas.

El formulario que yo utilice lo fui armando de a “trozos” de código que fui encontrando en la web, más algunas modificaciones que le hice yo mismo para que se adecue a lo que necesitaba.

Lo primero que tenemos que hacer es disponer de un formulario y subirlo a la raíz de nuestro hosting.
Pueden copiar todo el contenido del formulario que hay debajo y pegarlo en un archivo PHP. También hay que subir al hosting la última versión de SECURIMAGE, que es un script gratis de Captcha para utilizar en nuestros formularios.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
<?php session_start(); ?>
<form action="" method="post">
<table width="600" border="0" cellspacing="0" cellpadding="2">
  <tr>
    <td><b>Nombre Completo</b></td>
    <td><input name="nombres" type="text" maxlength="35" size="50" value="<?php if(isset($_POST["nombres"])) {echo $_POST["nombres"];} ?>">*</td>
  </tr>
  <tr>
    <td><b>Empresa</b></td>
    <td><input name="empresa" type="text" maxlength="40" size="50" value="<?php if(isset($_POST["empresa"])) {echo $_POST["empresa"];} ?>"></td>
  </tr>
  <tr>
    <td><b>Pagina Web</b></td>
    <td><input name="web" type="text" maxlength="50" size="50" value="<?php if(isset($_POST["web"])) {echo $_POST["web"];} ?>"></td>
  </tr>
  <tr>
    <td><b>Pais/Provincia</b></td>
    <td><input name="pais" type="text" maxlength="30" size="50" value="<?php if(isset($_POST["pais"])) {echo $_POST["pais"];} ?>"></td>
  </tr>
  <tr>
    <td><b>E-mail</b></td>
    <td><input name="email" type="text" maxlength="50" size="50" value="<?php if(isset($_POST["email"])) {echo $_POST["email"];} ?>">*</td>
  </tr>
  <tr>
    <td><b>Telefono</b></td>
    <td><input name="telefono" type="text" maxlength="35" size="50" value="<?php if(isset($_POST["telefono"])) {echo $_POST["telefono"];} ?>"></td>
  </tr>
  <tr>
    <td><b>Asunto</b></td>
    <td><input name="asunto" type="text" maxlength="35" size="50" value="<?php if(isset($_POST["asunto"])) {echo $_POST["asunto"];} ?>">*</td>
  </tr>
  <tr>
    <td><b>Mensaje</b></td>
    <td><textarea name="mensaje" cols="50" rows="5" maxlength="255"></textarea>
      *</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td><img id="captcha" src="/securimage/securimage_show.php" alt="CAPTCHA Image" /><a href="#" onclick="document.getElementById('captcha').src = '/securimage/securimage_show.php?' + Math.random(); return false"><img src="securimage/images/refresh.gif" alt="Recargar" border="0"/></a></td>
    </tr>
    <tr>
    <td>&nbsp;</td>
    <td> <input type="text" name="captcha_code" size="27" maxlength="6" /> *</td>
    </tr>
  <tr>
    <td><input name="action" type="hidden" value="send"></td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td><input name="enviar" type="submit" value="Enviar"></td>
  </tr>
</table>
</form>
 
 
<?php
 
      if (isset($_POST['action'])) {
 
       $dest = "TUEMAIL@gmail.com";
       $head = "From: ".$_POST['nombres']."<".$_POST['email'].">\r\n";
	   $asunto = $_POST['asunto'];
	   $email = $_POST['email'];
 
       // CUERPO DEL MENSAJE
       $msg = "----------------------------------------- \n";
       $msg.= "            Datos de Contacto             \n";
       $msg.= "----------------------------------------- \n";
	   $msg.= "ASUNTO:   ".$_POST['asunto']."\n";
       $msg.= "NOMBRE:   ".$_POST['nombres']."\n";
       $msg.= "EMPRESA:  ".$_POST['empresa']."\n";
	   $msg.= "WEB:      ".$_POST['web']."\n";
       $msg.= "PAIS:     ".$_POST['pais']."\n";
	   $msg.= "EMAIL:    ".$_POST['email']."\n";
	   $msg.= "TELEFONO: ".$_POST['telefono']."\n";
       $msg.= "HORA:     ".date("h:i:s a ")."\n";
       $msg.= "FECHA:    ".date("D, d M Y")."\n";
       $msg.= "IP:       ".$REMOTE_ADDR."\n\n";
	   $msg.= "----------------------------------------- \n";
       $msg.= "                 Mensaje                  \n";
       $msg.= "----------------------------------------- \n";
       $msg.= $_POST['mensaje']."\n\n";
 
	   // CAMPOS REQUERIDOS
	   if(empty($_POST['nombres'])) die("El campo Nombre Completo es requerido");
	   if(empty($_POST['email'])) die("El campo E-mail es requerido");
	   if(empty($_POST['asunto'])) die("El campo Asunto es requerido");  
	   if(empty($_POST['mensaje'])) die("El campo Mensaje es requerido");
 
	   // VALIDAR EMAIL
	   function validarCorreo($email)
       {
       return eregi('^[_a-z0-9-]+(\.[_a-z0-9-]+)*@([a-z0-9]+[\.-])*[a-z0-9]+\.[a-z]{2,6}$',$email);
       }
 
       if(validarCorreo($email)) { }
       else { die ('Su E-mail no es valido, verifiquelo e intentelo nuevamente.'); }
 
	   // CAPTCHA
	   include_once $_SERVER['DOCUMENT_ROOT'] . '/securimage/securimage.php';
	   $securimage = new Securimage();
	   if ($securimage->check($_POST['captcha_code']) == false) {
       die('El codigo es incorrecto, intentelo nuevamente.');
       }
 
       // ENVIO DEL MENSAJE
	   if (mail($dest, $asunto, $msg, $head)) {
       echo "Su mensaje fue enviado, pronto estaremos en contacto. Gracias.";
       } else {
       echo "Error de envio, intentelo nuevamente.";
	   }
	   }
 
?>

Hecho esto, vamos al panel de administración de Joomla!, Menús –> Menú principal y creamos un nuevo item en el menú seleccionando la opción Wrapper (urls embebidas).
Desde ahí le indicamos la ruta del formulario que anteriormente habiamos subido a nuestro servidor, modificamos algunos paramentros si lo creemos necesario y guardamos.

wrapper

Y así, logramos agregar un formulario personalizado a nuestro sitio Joomla!

Compartelo:
  • Digg
  • Technorati
  • Meneame
  • del.icio.us
  • Facebook
  • MySpace
  • Google Bookmarks
  • TwitThis
  • email
  • Print

No related posts.


39 Comentarios




    Jaime - 14th May 2009 3:51 pm

    Muchas gracias amiago me ha servido demaciado este post ya que implemente tu codigo en una pagina que estoy construyendo te pasaste!!.



    LASR - 7th Sep 2009 4:25 pm

    Estimado…no se por que no funciona…ni si quiera valida !!!
    lo he probado en local, web y Joomla
    Slds



    Damián - 23rd Oct 2009 5:27 pm

    Hola LASR,

    si me das más detalles quizas podamos encontrar la solución. Saludos.



    Roberto Arcos - 28th Oct 2009 9:31 pm

    Hola, la solución empleando un wrapper es buena. Yo he añadido mi formulario personalizado dentro de un articulo de joomla, el método post de dicho formulario envía los datos al correspondiente archivo procesar.php este valida y enviar los datos a un correo electrónico, de no pasar los requerimientos vuelve a la pagina de contacto con las variables que indican que los campos estan vacios, pero tengo problemas para que la pagina de contacto (que en realidad es un articulo de joomla) lea código php, concretamete debe mostrarme las variables con informacion como por ejemplo: tal campo esta vacio
    es mas ni siquiera un simple me muestra

    el codigo no se limpia, permanece intacto, ya que he desabilitado el editor, pero no consigo que se muestre algo de php

    el proceso me resulta bien, si lo hago con archivos independientes:
    mi archivo html con el formulario
    mi archivo php procesar y
    mi archivo php de respuesta

    mas no con joomla
    gracias



    Darwin - 22nd Dec 2009 11:46 pm

    Excelente tips, realmente me ayudó mucho.
    Gracias



    luis - 1st Apr 2010 4:44 pm

    Lo único que no termino de enterder, como envía el correo? desde Joomla o desde afuera?



    Iván - 8th Apr 2010 4:05 pm

    Muchas gracias por compartir el código.



    CArolina - 28th Apr 2010 10:43 am

    Hola, buenisimo el codigo gracias por compratirlo, tengo una consulta: como puedo hacer para agregarle los estilos al texto?



    odinn - 2nd May 2010 9:36 pm

    hola me podrias decir como se instala el captcha securimagen en la web joomla para que funcione este formulario muchas gracias.



    Freddy - 5th May 2010 12:20 pm

    Excelente… muchas gracias..



    Damián - 5th May 2010 2:04 pm

    Lo envia desde la función que tiene PHP para enviar emails, la cual podes seleccionar en la configuración de joomla en el panel de administración.



    Damián - 5th May 2010 2:06 pm

    Hola Carolina, es simple. Lo unico que tenés que hacer es darle estilo como a todo en Joomla, a través de CSS.



    Damián - 5th May 2010 2:08 pm

    Odinn, tenés que descargarte el secureimage de la página y ponerlo en la misma carpeta en donde se encuentra el archivo PHP del formulario.



    Guidoz - 3rd Jun 2010 3:15 pm

    Alguien Sabe como tener una campo para cargar el archivo y que se adjunto via mail?
    Desde ya Muhcas Gracias



    Jose Maria - 5th Jun 2010 12:20 pm

    Hola damian, gracias por tu ayuda con este tema yo he instalado el formulario tal y como especificastes pero me sale este error

    Warning: session_start() [function.session-start]: Cannot send session cache limiter – headers already sent (output started at /homepages/0/d329871568/htdocs/formulario/formulario.php:7) in /homepages/0/d329871568/htdocs/formulario/formulario.php on line 7

    y no me sale en la web el botón de enviar

    Espero me ayude alguien gracias



    Damián - 6th Jun 2010 9:51 pm

    Hola José María, verifica que no haya ningun contenido ni espacio en blanco antes de < ?php session_start(); ?> que es la primera linea con la que comienza el formulario.



    alexis amario - 22nd Jun 2010 5:37 pm

    no me aparece la imagen de captcha , porfavor podrían ayudarme, al parecer solo eso me falta…



    Damián - 25th Jun 2010 4:01 pm

    Verifica que la ruta a la carpeta del captcha sea la correcta.



    Carlos Vargas - 1st Jul 2010 1:37 pm

    Gracias no crei que seria tan facil



    Pablo leiva - 5th Jul 2010 2:17 pm

    Gracias compadre !!!
    ya tengo mi formulario de contacto andando
    pero si captcha, opte por sacarlo ;)



    Javier - 13th Jul 2010 10:33 pm

    hola exelente me funciona las validaciones y todo, el problema es que no me deja subir el archivo de la imagen, obviamente no me carga la imagen, y cuando apreto enviar me salen los siguentes warning ojala me puedas ayudar..

    o hay q cambiar algo mas de la configuracion global de joomla

    saludos javier

    Warning: include_once(/home6/dvlopers/public_html/rutachilesa/securimage/securimage.php) [function.include-once]: failed to open stream: No such file or directory in /home6/dvlopers/public_html/rutachilesa/paginasphp/Solicitud2.php on line 101

    Warning: include_once() [function.include]: Failed opening ‘/home6/dvlopers/public_html/rutachilesa/securimage/securimage.php’ for inclusion (include_path=’.:/usr/lib64/php:/usr/lib/php’) in /home6/dvlopers/public_html/rutachilesa/paginasphp/Solicitud2.php on line 101

    Fatal error: Class ‘Securimage’ not found in /home6/dvlopers/public_html/rutachilesa/paginasphp/Solicitud2.php on line 102



    Damián - 14th Jul 2010 2:25 pm

    El problema es que no encuentra la carpeta donde esta el secureimage, eso seguramente se debe a que la ruta indicada para que levante el secureimage no es la correcta. Revisa la ruta y volve a intentar, deberia funcionar.



    Fesp - 28th Jul 2010 2:53 pm

    ante todo felicitarte por el buen curro realizado. A mi me pasa algo raro, en mi pagina de contacto no aparece el captcha ni el botón refresh. Pero si pongo el path entero si me aparece en una página en blanco. Salvo que me haya equivocado estoy seguro que la ruta es correcta.

    Puedes echarme una mano? el sitio es http://sidreriasoutullo.com/index.php?option=com_wrapper&view=wrapper&Itemid=88



    Damián - 31st Jul 2010 1:38 am

    Hola, recien acabo de ver el mensaje y por lo que veo pudiste solucionar lo del captcha. También note que no está mostrando los mensajes de error al pie del botón enviar. Quizás sería cuestión de que le des más HEIGHT al wrapper. Saludos.



    Diego - 11th Aug 2010 1:13 pm

    Hola, esta todo bien salvo por el pequeño inconveniente en que no me llegan los correos! :S que hago?



    Ignacio Soler - 13th Aug 2010 7:07 am

    Por favor, cambia la dirección de prueba del formulario porque me llegan a mi TODOS los correos de quien prueba tu formulario!!! Desde hace muuuucho tiempo.

    GRACIAS! :)



    Albert - 13th Sep 2010 6:58 pm

    Hola,

    Ami me pasa algo raro..cuando le doy a enviar se mantienen todos los campos menos el mensaje..y nunca llega a mandar dicho mensaje..que ocurre??
    Gracias

    http://www.nazaretti.org/csagrera/joomla/index.php?option=com_wrapper&view=wrapper&Itemid=35



    Juan Pablo - 28th Sep 2010 3:17 pm

    Hola, no me carga las imagenes del capcha!, y por ende no me corre el scrip!



    Damián - 30th Sep 2010 11:55 pm

    Y no te da ningun error? Revisa la ruta del secureimage.



    Yulinoe - 5th Oct 2010 1:25 pm

    Hola Damián, Fíjate trate de hacer este excelente formulario y no me funciona, me sale un aviso que dice “No se puede mostrar la pagina” soy nueva en esto y estoy trabajando en mi PC, una duda que tengo es que si estará bien que suba el formulario php en mi carpeta www o cual seria la dirección correcta por favor necesito ayuda :( Gracias de ante mano



    Damián - 6th Oct 2010 5:04 pm

    Yulinoe, el formulario lo tenés que subir a la carpeta de Joomla!. Si lo subis a la carpeta www el formulario queda for fuera del sitio. El sitio Joomla es todo lo que está incluido en la carpeta Joomla. Si ponés el formulario en la carpeta Joomla, el archivo quedaría en la raíz del sitio, lo que te quedaria como en la foto del articulo. Por ejemplo http:/ /tusitio.com/formulario.php



    Yulinoe - 19th Oct 2010 1:58 pm

    Muchas Gracias Damián lo probare :)



    Gerardo - 5th Nov 2010 7:21 pm

    Hola! Tengo una duda grande de como poner el SECURIMAGE, explicadme alguien!!



    Damián - 6th Nov 2010 2:57 pm

    Gerardo, cuál es tu duda?



    Gerardo - 8th Nov 2010 1:08 pm

    lo q pasa es que descargue el Securimage 2.0.1 (zip) pero no tengo ni la mas remota idea de que hacer con el.

    modifique el codigo q tu has colocado en el articulo y elimine la validacion del CAPTCHA para q se enviara el correo sin importar lo de los spam pero para mi tristeza no envia el correo.

    Saludos



    Damián - 8th Nov 2010 8:13 pm

    Tenés que descomprimir el secure image y ponerlo junto con el archivo del formulario. También tenés que fijarte que la carpeta que contega al captcha coincida con la ruta que se especifica en el formulario (linea 39: src=”/securimage/securimage_show.php”).
    Pero si decís que le quitaste el captcha del formulario y aún así no envia el formulario, el problema debe ser otro.



    DM - 15th Nov 2010 10:25 am

    buenas… amigo… no puedo solucionar el tema del captcha… seguramente es problema de la direccion pero no me da mas la cabeza..
    src=”/securimage/securimage_show.php
    creo una carpeta /public_html/securimage y tiro todo el contenido de la descarga ahi… y nada… me aparece bien la imagen en el formulario pero cuando lo envio me tira 6 errores que me aburrieron… seguramente mas tarde los escribo aca a ver si me dan una mano… y en cuanto al codigo php para enviar la ip al mail, a quien no le funcione el tuyo le paso este
    $msg .= “IP : “.$_SERVER["REMOTE_ADDR"].”\r\n”; //Envia IP
    Funciona joya
    y les dejo dos mas de onda
    $msg .= “Pais : “.$_SERVER["HTTP_REFERER"]; //Pais
    $msg .= “Navegador : “.$_SERVER["HTTP_USER_AGENT"].”\r\n”; //Navegador

    muy bueno tu codigo amigo… gracias por todo



    Miguel - 2nd Dec 2010 12:54 am

    Barbaro amigo!

    Te sacaste un 10

    =)



    incognito - 13th Dec 2010 12:57 pm

    amigo, tengo un problema, lo instalo bien todo pero cuando envio un mensaje, no llega a mi bandeja en gmail ya puse mi email y todo, alguna sugerencia?

Deja tu Comentario