Main menu

Capturar la URL en un formulario de contacto de Breezingforms

Todo desarrollador web que use Joomla, conoce la extensión Breezingforms. Esta herramienta nos permite crear formularios mucho más completos que los que vienen por defecto en el core de Joomla.

Por ejemplo, si queremos poner en nuestra web desarrollada con Joomla, un formulario de contacto que permita al usuario seleccionar alguna opción dentro de una lista desplegable, rellenar muchos campos de información o introducir inputs de tipo radiobutton o checkbox, vamos a necesitar instalar alguna extensión debido a que el formulario de contacto que viene por defecto en Joomla es muy básico.

Breezingforms es ideal para estas ocasiones en que el formulario de Joomla se queda corto. Un caso con el que nos hemos encontrado hace poco ha sido la necesidad de saber desde qué URL escribía el usuario. Esto ha sucedido porque en nuestros minisites tenemos un formulario de contacto en el pie de página.

Por ejemplo, si visitas nuestro minisite de web y marketing online, verás que en cada página tienes un formulario en el pie:

http://marketingweb.endeos.com/desarrollo-web/desarrollo-web-profesional/
http://marketingweb.endeos.com/desarrollo-web/diseno-tienda-online/
http://marketingweb.endeos.com/posicionamiento-web-seo/

Bien, imagina que un posible cliente entra en el apartado de diseño de tienda online y decide usar el formulario de contacto para pedir un presupuesto. Ahora, supongamos que rellena los campos y en mensaje escribe algo ambiguo como:

“Necesito una web de este tipo y me gustaría información ampliada y un presupuesto acorde a mis necesidades.”

Cuando recibamos el mensaje en nuestro buzón de correo, no vamos a saber de qué tipo de web está hablando el posible cliente, ya que desarrollamos más de 5 tipos de web diferentes y no sabremos a cuál se refiere el usuario. Para solucionar este problema, podríamos crear un formulario diferente para cada una de las páginas, modificando el asunto según nuestras necesidades, pero ésta no es una solución óptima.

En este caso, vamos a necesitar saber desde qué parte de la web nos está escribiendo el usuario. Simplemente tendremos que crear un campo oculto y añadir en su valor la URL actual del sitio web. Para hacerlo, abriremos nuestro formulario, añadiremos un nuevo campo de tipo hidden input y le daremos un nombre y un label. A continuación, en el valor por defecto de este campo, vamos a necesitar capturar la URL con un pequeño código PHP, así que pondremos:

<?php return “http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]“; ?>

Finalmente guardaremos los cambios y haremos una prueba de envío de formulario para verificar que todo es correcto. Si has seguido los pasos indicados, deberías recibir en el buzón que tengas configurado en el formulario de Breezingforms el mensaje de contacto con la información del campo oculto y la URL desde donde el usuario se ha puesto en contacto.

EDITADO: alternativa por si el método anterior no te funciona

Si el método anterior no te ha funcionado, no te preocupes, siempre hay más formas de trabajar con Breezingforms. Lo que vamos a hacer es crear una plantilla personalizada para el formulario que estamos editando.

No hará falta crear ningún campo oculto. Lo que tendremos que hacer es configurar el formulario para que use su plantilla de correo por defecto:

Ahora, crearemos la plantilla por defecto que usará este formulario. En la ruta /media/breezingforms/mailtpl crearemos un fichero con nombre [nombre_formulario].txt.php donde [nombre_formulario] ha de coincidir exactamente con el nombre del formulario con el que estás trabajando.

En el fichero deberás poner el siguiente código:

<?php
/**
* BreezingForms - A Joomla Forms Application
* @version 1.7.3
* @package BreezingForms
* @copyright (C) 2008-2011 by Markus Bopp
* @license Released under the terms of the GNU General Public License
**/
defined('_JEXEC') or die('Direct Access to this location is not allowed.');
?>

<?php echo "URL: http://" ?><?php echo $_SERVER[HTTP_HOST].$_SERVER[REQUEST_URI]; ?><?php echo $NL ?>

<?php foreach ($MAILDATA as $DATA): ?>
<?php echo $DATA[_FF_DATA_TITLE]?>: <?php echo $DATA[_FF_DATA_VALUE]?><?php echo $NL ?>
<?php endforeach; ?>

La línea que estará capturando la URL del usuario es esta:

<?php echo "URL: http://" ?><?php echo $_SERVER[HTTP_HOST].$_SERVER[REQUEST_URI]; ?>

Mientras que esta otra parte lo que hace es mostrar los campos del formulario:

<?php foreach ($MAILDATA as $DATA): ?>
<?php echo $DATA[_FF_DATA_TITLE]?>: <?php echo $DATA[_FF_DATA_VALUE]?><?php echo $NL ?>
<?php endforeach; ?>

A partir de aquí, puedes modificar la plantilla como quieras.

En Endeos llevamos años usando Breezingforms y podemos desarrollarte cualquier funcionalidad extra que quieras incorporarle. No dudes en ponerte en contacto con nosotros si quieres personalizar el funcionamiento de esta extensión.

Compartir en redes sociales

Si este artículo te ha sido de ayuda o te parece interesante, ayúdanos a difundirlo.

Compartir en Facebook Compartir en Twitter Compartir en Google+ Compartir en Linkedin
factory_shortcodes_assets:
a:0:{}

One Pingback/Trackback

  • Pingback: Breezing Forms: cómo capturar el título del artículo o de la página - Blog Endeos()

  • Juan Tellez Torres

    me encanta su idea solo que quisiera implementarla de manera diferente y que trato de que mi formulario en ves que me de la captura de url, me gustaría que me de el titulo del articulo donde tengo el boton que me envia a mi formulario, se que se escucha medio revuelto pero si vi su tema de “Breezing Forms: cómo capturar el título del artículo o de la página” y veo que solo funciona en donde la pagina donde esta el formulario. Pero que tal si el formulario se encuentra en otra pagina dejo la imagen y espero su breve respuesta gracias buenos temas y aportes.

    • blogendeos

      Buenos días Juan,

      Gracias por tu comentario. Según entendemos quieres que si un usuario llega a la página donde tienes el formulario haciendo clic a un botón que tienes en otra página distinta, el formulario indique la URL donde está el botón.

      Si es así, se nos ocurre hacerlo del siguiente modo:

      1- Añadir una variable GET al botón que te lleva a la página donde está el formulario. Por ejemplo: href=”/mi-formulario.html?origen=boton”.

      2- Con jQuery, comprobar si la variable “origen” de la URL está declarada y su valor es “boton”. En caso afirmativo, añadir también con jQuery un campo “hidden” al formulario con el valor de la URL donde tienes el botón.

      En caso de que tengas distintos botones (en distintas páginas), en el valor de la variable GET “origen” puedes poner directamente la URL de la página del botón.

      Esperamos haber sido de ayuda. Si necesitas que te implementemos esta funcionalidad en tu página web, puedes enviarnos un mensaje desde el formulario de contacto para concretar los detalles.

      Saludos.

  • Victor M López Cano

    Buenas, me parece muy interesante esta solución pero no sé si lo estoy haciendo bien
    <input type="hidden" name="char_06" value="

    me podéis ayudar? gracias

    • blogendeos

      Hola @victormlpezcano:disqus, ¿has hecho un copy-paste del código mostrado en el artículo? Prueba a poner manualmente las comillas dobles, a ver si va a ser eso.

      • Victor M López Cano

        Hola, esta es la línea que tengo del campo oculto

        Si pongo en value, entre ” ” la línea de código al guardar cambios desaparece, luego algo estoy escribiendo mal. Inicialmente escribo <input name="char_06" type="hidden" value="” />. ¿Es correcto? Muchísimas gracias de antemano… es algo que me interesaría mucho poner

        • blogendeos

          Hola de nuevo @victormlpezcano:disqus, lo que vamos a hacer es ampliar el artículo indicando otro método para hacerlo. Quizás en versiones más recientes ya no es posible hacerlo tal y como se indica…

          Entre hoy y mañana verás este artículo actualizado, el segundo método seguro que te funcionará.

          Saludos.

          • Victor M López Cano

            Gracias! Estaré muy pendiente!

          • blogendeos

            Ya lo tienes @victormlpezcano:disqus, esperamos que sea de ayuda.

          • Victor M López Cano

            Gracias!

Al usar este sitio acepta el uso de cookies para análisis y contenido personalizado. Leer más

ACEPTAR
Aviso de cookies