Formulario de Contacto personalizado en 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> </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> </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> </td> </tr> <tr> <td> </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.

Y así, logramos agregar un formulario personalizado a nuestro sitio Joomla!
No related posts.
39 Comentarios
Muchas gracias amiago me ha servido demaciado este post ya que implemente tu codigo en una pagina que estoy construyendo te pasaste!!.
Estimado…no se por que no funciona…ni si quiera valida !!!
lo he probado en local, web y Joomla
Slds
Hola LASR,
si me das más detalles quizas podamos encontrar la solución. Saludos.
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
Excelente tips, realmente me ayudó mucho.
Gracias
Lo único que no termino de enterder, como envía el correo? desde Joomla o desde afuera?
Muchas gracias por compartir el código.
Hola, buenisimo el codigo gracias por compratirlo, tengo una consulta: como puedo hacer para agregarle los estilos al texto?
hola me podrias decir como se instala el captcha securimagen en la web joomla para que funcione este formulario muchas gracias.
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.
Hola Carolina, es simple. Lo unico que tenés que hacer es darle estilo como a todo en Joomla, a través de CSS.
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.
Alguien Sabe como tener una campo para cargar el archivo y que se adjunto via mail?
Desde ya Muhcas Gracias
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
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.
no me aparece la imagen de captcha , porfavor podrían ayudarme, al parecer solo eso me falta…
Verifica que la ruta a la carpeta del captcha sea la correcta.
Gracias no crei que seria tan facil
Gracias compadre !!!
ya tengo mi formulario de contacto andando
pero si captcha, opte por sacarlo
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
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.
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
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.
Hola, esta todo bien salvo por el pequeño inconveniente en que no me llegan los correos! :S que hago?
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!
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
Hola, no me carga las imagenes del capcha!, y por ende no me corre el scrip!
Y no te da ningun error? Revisa la ruta del secureimage.
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
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
Muchas Gracias Damián lo probare
Hola! Tengo una duda grande de como poner el SECURIMAGE, explicadme alguien!!
Gerardo, cuál es tu duda?
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
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.
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
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?
