Hola
Estoy creando un formulario de contacto para prestashop, para ello estoy he creado una pagina propia (.tpl), para este formulario uso el anti-robots de Google reCaptcha no captcha.
Tengo un pequeño problema ya que el codigo php insertado en el .tpl se imprime en la pagina despes del operador ->
Una imagen vale más que mil palabras, así que:
¿Como puedo arreglar esto?
Mil gracias
URL del sitio: Contenido solo visible a usuarios registrados
Hola,
Tu sitio web se encuentra en mantenimiento, tendrías que habilitarlo para poder revisarlo.
Dame tu IP y la añadoo para que puedas ver el sitio.
Por ciertose me olvido mencionar que el sitio usa el theme Panda
Hola,
Tendrías que quitar el estado de mantenimiento. Ten en cuenta que en el foro somos varias personas respondiendo, cada una con su IP, en incluso algunas de esas IP serían dinámicas, por lo que limitaría la capacidad de ayudarte.
Antes de quitar el estado de manteniemiento te hago una anotación. Para incluir código php dentro de un archivo smarty .tpl no se pueden utilizar la marcas para marcar el inicio y el fin del código php, ya que smarty no sabrá interpretarlo.
En su lugar tienes que utilizar las etiquetas {php} y {/php} para delimitar el código php. En el siguiente enlace puedes ver más información:
Hola
Ya habia leido lo de {php} y {/php} pero si uso esto en lugar de simplemente me carga una pàgina en blanco...
Entonces si no puedo cargar php con {php} y {/php} ni , ¿que hago?
Voy a preguntar si puedo quitar el estado de mantenimiento, aunque dudo que me dejen hacerlo, sin eso no hay solución?
Gracias.
Hola
Una opción es tener tu código en un archivo externo tal como se muestra en el ejemplo, verás la sentencia include
http://www.smarty.net/docsv2/es/language.function.php.tpl
Si aún asi te sale errores es posible que el código que insertas sea el problema y no la integración con smarty, tendrías que probar tu código de manera aislada primero con un html simple antes de integrarlo con prestashop.
Saludos
Hola
El codigo no es el problema, ya que he testeado un simple echo "hola"; y no imprime el hola
Como comento en mi anterior mensaje, con {php} y {/php} me carga una pagina en blanco, el include tampoco lo podria hacer
Además de todo esto, desenvolupe el formulario completo en archivos externos, por lo que no hay problemas en ellos.
Como al principio tenia el problema de integracion php, puse todo el envio del form en un php externo, pero estoy usando recaptcha no captcha y eso lo tengo que incluir en el archivo que pinta el formulario.
Gracias.
Hola
Con el include lo puedes hacer, es decir es como si se insertara todo el código en el lugar indicado.
Prueba hacer ut echo "hola" con el archivo incluido
Saludos.
¿Y como hago un include sin php? No me permite usar ni ni {php} y {/php}
Si uso no me carga la zona central del template, es decir el header, sidebar y footer si que me los carga pero el contenido de la pagina no.
Y si uso {php} y {/php} me carga toda la pagina completamente en blanco.
Es más de poder usar un include en prestashop hubiera hecho el form en una pagina del cms
Gracias.
Hola
Según veo {php} esta descartado para las plantillas de smarty en prestashop, revisa
https://www.prestashop.com/forums/topic/232274-include-php-file-in-tpl-file/
En resumen en la vista sólo podrás poner código final html o variables con smarty, el código PHP tendrías que usarlo en el controlador
Tendrías que especificar que código quieres poner en este archivo .tpl ya que no podrás insertarlo directamente
Una opción alterna es que lo incluyas con sentencias smarty, tu código estaría en un archivo .php pero lo incluirías con :
{include file="http://tu_sitio.com/tu_archivo.php"}
Tendrías que usar la url de tu sitio y el archivo .php copiado en la raiz de tu sitio
Saludos.
El metodo aterno que me propones me deja la pagina en blanco, exactamente igual que si uso el {php}{/php}
Lo del controlador no lo piillo, como se haria eso?
El codigo que necesito insertar en mi .tpl es este:
verifyResponse( $_SERVER["REMOTE_ADDR"], $_POST["g-recaptcha-response"] ); } ?>ALTA NEWSLETTER PARA PROFESIONALES:
Dese de alta como profesional para recibir nuestras invitaciones a actividades para profesionales, cursos, seminarios, webinarios e informaciones relacionadas.
success) { echo "Hi " . $_POST["name"] . " (" . $_POST["email"] . "), thanks for submitting the form!"; } else { ?>@
gracias
Hola Oscar,
Respecto al tema del controlador, tienes una ejemplo en https://www.prestashop.com/forums/topic/329803-problema-con-personalizacion-de-tpl-en-backoffice/?p=1670764
Saludos
Hola
Aun no he probado lo que ahi se explica, pero la replica de la persona que pide ayuda es que eso no funciona... :S
Gracias.
Hola
A primera vista viendo el código que quieres poner, no creo que te funcione, la razón es por que estas saliendo del modelo de programación de Prestashop, no te funcionará usas por ejemplo : $_POST["name"]
Además veo en este misma línea que esperas que te envie un mensaje, esto igual no te funcionará por que todo lo maneja prestashop con el modelo MVC
Tendrías que evaluar hacer un módulo prestashop para lo que quieres y ceñirte al estandard de programacion que se usa, lamentablemente si decides hacer un módulo, desde foro no podemos asesorarte en estos temas de programación debido a su complejidad,
Otra opcion alterna es que este archivo sea un archivo independiente de prestashop y lo llames desde un link o un iframe
Saludos.
¿Y dejando de lado el codigo que os he puesto (ya que puedo trabajar sobre uno más sencillo)?
¿¿Como hago para imprimir un simple echo "hola mundo";??
Como ya os dijje las soluciones que me proponiais no eran validas. Y simplemente un include ya me solucionaria el tema.
¿Si hago un modulo, podré trabajar con php o estaré en las mismas?
Los iframes tampoco estan permitidos en Prestashop y a parte de no estarlo (dado que se puede desactivar el bloqueo en el documento de validación) no stán recomendados.
Por cierto, volviendo al tema del controlador, dado que este se trabaja en php, ¿podria desde ahí aplicar todo el codigo?
¿Y en ese caso como se haria? Ya que no acabo de entender mucho el rollo del Controller
Gracias.