ChronoForms: cómo capturar la URL y el título de página
Recientemente nos ha llegado un mail con una petición parecida a esta:
Hola estoy haciendo un formulario de contacto utilizando chronoforms 5 y me preguntaba si me podrían ayudar con un problema que tengo. Necesito capturar el nombre del articulo de donde se envió el formulario.
Si me pudieran ayudar se los agradecería.
En un principio pensamos en explicar los pasos directamente en el mail de respuesta, pero alguien de la oficina saltó:
¡Oye! ¿Y si le damos respuesta haciendo un artículo en el blog?
¡Dicho y hecho! Y no solo te explicamos cómo capturar el nombre del artículo, sino también la url desde la que se envía el formulario hecho en Chronoforms.
¿Qué te parece el 2 x 1? Interesante ¿Verdad? ¡Pues vamos a ello!
En primer lugar crearemos unos campos invisibles en el formulario que capturarán esos datos y en segundo lugar los mostraremos en el mail que nos llega después de cada envío.
Capturar la URL y título del menú con ChronoForms
Vamos a editar nuestro formulario hecho en ChronoForms, para ello accede al administrador de tu Joomla, navega hasta Componentes>ChronoForms5 y selecciona el formulario que vas a mostrar.
Asegúrate que en la pestaña General tienes la opción Setup Mode en Advanced si quieres que te coincidan las capturas de pantalla. (Si lo haces en modo Simple los pasos también servirán, pero puede que tu pantalla sea diferente a las imágenes que te mostramos).
Saltamos a la pestaña Designer y luego a Layout.
En la columna de la izquierda despliega los elementos Advanced y arrastra uno del tipo Custom al formulario de la derecha.
Clica sobre el Edit de color azul del elemento Custom Code que acabas de añadir y aparecerá una ventana para editar sus propiedades.
En Pure code asegúrate de poner Yes.
En el apartado Code añade las siguientes líneas (puedes usar solo uno de los códigos o los dos, según lo que quieras capturar):
Código para capturar la url de la página
<input type='hidden' name='page_url' id='page_url' value='<?php echo \JURI::getInstance()->toString(); ?>' />
Código para capturar el título del elemento de menú de la página
<?php $jdoc = \JFactory::getDocument(); ?> <input type='hidden' name='page_title' id='page_title' value='<?php echo $jdoc->getTitle(); ?>' />
Ya puedes guardar los cambios. Ahora tu formulario hecho con ChronoForms 5 guarda la URL de la página y el título del menú.
Ahora vamos a hacer que nos lleguen esos datos.
Enviar por mail la URL y el título del elemento de menú capturados
Dirígete sobre el menú Setup, luego al evento On Submit y en la acción Email, clica sobre el botón azul Edit.
En la pestaña Basic bajaremos hasta llegar al apartado Template Generation y lo ponemos en Custom. Esto nos va a permitir personalizar los datos que nos llegarán por mail cada vez que se envíe el formulario.
En el apartado Email template deberás añadir el campo que corresponde al elemento que hemos capturado anteriormente.
URL de página origen: {page_url} Título del elemento de menú: {page_title}
En nuestro formulario de ejemplo solo pedimos el nombre y un mensaje, por lo que nos queda de la de la siguiente manera:
Esto depende de los datos que pidas en tu formulario por lo que la imagen puede ser diferente a lo que veas en tu pantalla.
¡Esto es todo! ¿Fácil verdad? Esperamos haber respondido la petición que nos hicieron y a la vez sacar de dudas a todo el que haya llegado a este artículo buscando la manera de capturar la URL y el título de la página desde la que se envía un formulario hecho con ChronoForms 5.
Actualizamos: capturar el título del artículo
En los pasos anteriores hemos capturado y mostrado el título del elemento de menú que enlaza a un artículo con un formulario.
Ahora vamos a capturar el título de ese artículo que muestra el formulario (que puede ser diferente o no al del menú).
Para ello, en Custom Code añadimos las siguientes líneas:
<?php $article_title = ''; $id = \JRequest::getInt('id', ''); $article = \JTable::getInstance('content'); $article->load($id); $article_title = $article->get('title'); ?> <input type='hidden' name='title_article' id='title_article' value='<?php echo $article_title; ?>' />
Y en la acción Email lo mostraremos con el código:
Título del artículo: {title_article}
Quedando nuestro correo electrónico de la siguiente manera:
Al final se ha convertido en un 3 x 1 ¿verdad?