PrestaShop trae un formulario de contacto por defecto, en el cual nosotros podemos modificar y añadir o modificar cosas, eso si tocando los correspondientes archivos. En este caso lo que queremos hacer es crear otro formulario aparte, por ejemplo para realizar una encuesta a nuestros clientes, para una devolución, para . . . . . sus usos pueden ser muy variados.
En la entrada «Enviar formularios con formmail.php» vimos como podíamos crear un formulario para que se enviase, en este caso nos vamos a basar en esa entrada para crearle. También podríamos usar servicios externos como formsite o foxiform.
Lo primero que tenemos que hacer es: en el menú Preferencias->CMS nos crearemos dos nuevos CMS uno que llamaremos formulario y otro que llamaremos contactoenviado, en el CMS formulario será donde incluyamos nuestro formulario, una vez estemos en el nuevo CMS le damos al botón de ver código y ponemos un código similar al siguiente para que funcione el formulario.
<form name="nombre_formulario" action="/formulario/formmail.php" method="post"> <input type="hidden" name="subject" value="Asunto del mensaje"/> <input type="hidden" name="recipients" value="correo_propietario@dominio.com"/> <input type="hidden" name="good_url" value="/content/16-contactoenviado"/> <p> <label for="textfield">Nombre:</label> <input type="text" name="textfield" id="textfield"> <label for="textfield2">Apellidos:</label> <input type="text" name="textfield2" id="textfield2"> </p> <p> <label for="email">Email:</label> <input type="email" name="email" id="email"> <label for="tel">Telefono:</label> <input type="tel" name="tel" id="tel"> </p> <p> <label for="datetime">Fecha:</label> <input type="datetime" name="datetime" id="datetime"> </p> <p> <label for="textarea">Comentarios:</label> <textarea name="textarea" id="textarea" cols="45" rows="5"></textarea> </p> <p> <input type="submit" name="submit" id="submit" value="Enviar"> </p> </form>
Con este código creamos el formulario de la imagen superior. En el campo good_url tenemos que poner «/content/id_cms-contactoenviado» en nuestro caso es «/content/16-contactoenviado», subimos el formmail.php a la carpeta que nos hemos creado en la raíz de nuestro sitio llamada formulario y le configuramos según vimos en la entrada «Enviar formularios con formmail.php» y con esto tendríamos funcionando nuestro formulario en PrestaShop.
En el valor de good_url tenemos que poner la otra hoja CMS que hemos creado, si tenemos activado las URL amigables, entonces ponemos /content/ numero de id del CMS, guion y la url amigable, si nos fijamos en la imagen nuestro id es el 16 y la URL amigable es contacto enviado, con lo que nos quedaria «/content/16-contactoenviado» sin comillas.
Hay un error en el código, hay dos actions y tiene que ser method=»post».
Gracias por el aviso.
He hecho todo tal y como comentas en ambas páginas, pero es que directamente no admite el html del form en el código. Cuando le doy a guardar la página CMS me dice «The content field is invalid». He probado a poner un y tampoco me deja guardar, me saca el mismo error.
¿Alguna sugerencia?
Gracias de antemano
debes activar la opción SI, en preferencias – configuración, Permite iframes en los campos HTML
He puesto un input a mano
Hola, si quiero que los campos sean obligatorios, lo tengo que hacer en el archivo formmail.php o dentor del form?
Hay un campo oculto que puedes poner que es name=»required» para los campos obligatorios, lo unico que te da un mensaje en ingles, en este enlace tienes los campos.
https://www.tectite.com/fmdoc/creating_forms.php
Gracias por la respuesta. Pero esa información tienen que ir dentro del archivo formmail.php, no?
Ya lo resolví. No hay una forma que ese mensaje aparezca abajo o un pop up?
Hola, estoy intentando ahcerlo, pero no se exactamente donde tengo que poner el archivo php, es a través del administrador de prestashop o através de Filezilla?
se hace con filezilla en la carpeta que te pone en el form action=… o sea en la carpeta /formulario/ en el ejemplo