Como añadir una página extra en Prestashop
Prestashop ya dispone de muchas páginas para poder crear y diseñar tu tienda pero en ocasiones especiales o extraordinarias puede resultar útil saber como crear una nueva página extra a las ya existentes en Prestashop 1.5.x.
Por ejemplo, imagina que deseas crear otro formulario a parte del que ya existe de contacto (contact-form) con otros campos. Como lo harías?
Una opción es pensar en crear una página CMS añadiendo el código HTML del formulario. Ok, perfecto tenemos el código HTML del formulario pero, como controlamos el envío?
Para estos casos, es necesario crear una nueva página con su controlador y su vista (archivo .tpl) en la plantilla activa.
Lo primero que tendremos que hacer es añadir un nuevo archivo en la raiz del Prestashop con el siguiente contenido:
<?php
require(dirname(__FILE__).'/config/config.inc.php');
Tools::displayFileAsDeprecated();
Tools::redirect('index.php?controller=newpage'.((count($_GET) || count($_POST)) ? '&'.http_build_query(array_merge($_GET, $_POST), '', '&') : ''), __PS_BASE_URI__, null, 'HTTP/1.1 301 Moved Permanently');
Casi todos los archivos que hay en la raiz tienen este mismo contenido. En este caso, lo único que varía es el parámetro controller=newpage.
En este caso, estamos creando una página con el nombre de «newpage».
Ahora tendremos que añadir su controlador. En controllers/front/ crearemos un nuevo archivo con el siguiente contenido:
<?php
class NewpageControllerCore extends FrontController
{
public $php_self = 'new-page';
public $ssl = true;
public function postProcess()
{
}
public function setMedia()
{
parent::setMedia();
$this->addCSS(_THEME_CSS_DIR_.'new-page.css');
$this->addJS(_THEME_JS_DIR_.'new-page.js');
}
public function initContent()
{
parent::initContent();
$this->setTemplate(_PS_THEME_DIR_.'new-page.tpl');
}
}
Y lo guardaremos con el siguiente nombre: NewpageController.php.
Estamos creando la clase que controlará la información de nuestra página. Todos los controladores heredan los métodos y atributos de FrontController.
La función postProcess() se puede utilizar para recibir los datos de un formulario por ejemplo.
La función setMedia() es interesante utilizarla cuando vamos necesitar ejecutar javascript o añadir estilos.
La función initContent() es una de las más importantes y su principal objetivo es enlazar con la plantilla donde estará nuestro HTML. En esta función crearemos las variables smarty necesarias para trasladar al archivo .tpl.
En el archivo .tpl tendremos la vista de nuestra página. Será contenido HTML con variables smarty si fuera necesario.
En nuestro ejemplo crearemos un nuevo archivo llamado new-page.tpl que añadiremos en la raiz de la plantilla que estemos utilizando con el siguiente contenido:
{capture name=path}{l s='New Page'}{/capture}
{include file="$tpl_dir./breadcrumb.tpl"}
<p>YOUR CODE FOR NEW PAGE</p>
Tan solo es un ejemplo sencillo donde tan solo estamos añadiendo el breadcumb y el contenido de la página.
Para acceder a esta nueva página que hemos creado podríamos hacerlo a través una url como la siguiente:
http://www.your-shop.com/index.php?controller=new-page
jj
Si queremos añadirle url amigable, tan solo tenemos que ir a la administración de la tienda e ir a Preferencias -> SEO y URLS y pulsar en añadir nueva página. Nos encontraremos con un formulario donde aparecerá nuestra nueva página donde podremos configurar sus metas:
Guardando este formulario añdiendo al menos el nombre de la página y su url reescrita podremos acceder a nuestra nueva página con la siguiente URL:
http://www.your-shop.com/new-page
Si te ha servido este tutorial hazte fan de la página de facebook del blog Jose Aguilar


Buenas Jose, tengo una tienda de informática hecha con prestashop 1.7, y tengo un formulario de reparaciones con ticket en html
y quisiera saber como puedo añadirlo a mi tienda prestashop.
Me seria de gran ayuda!
gracias!
Hola,
Quizá te pueda servir el siguiente módulo:
https://www.jamodules.com/prestashop-addons/es/178-361-cetasko.html
Saludos
Hola Jose
Gracias por el aporte lo probare en mi página web y ya les contare que tal me ha ido
UN saludo
Buenas tardes José, le escribo porque necesito la herramienta » editor de texto de página de inicio para prestashop 1.6. Quisiera saber como puedo obtenerla.
Hola,
El editor de textos para la página de inicio es un módulo gratuito que deberías encontrar en el apartado de módulos de tu tienda para instalarlo o activarlo.
Saludos
Hola Victor , gracias porla ayuda , estaria bien saber si el proceso es el mismo para ps 1.7
gracias por la web
Hola
Quiero hacer eso que indicas exactamente pero en la versión 1.7.1.2
¿Podrias actualizar el Tutorial?
Hola amigo, hago los pasos pero al momento de ejecutar me sale la pagina totalmente en blanco, que podrá ser?
Hola, intenta habilitar el modo debug para ver el error que aparece. saludos
Buenas noches, después de actualizar mi tienda online, intento actualizar los cms ya creados, pero me encuentro con el problema que la sección contenido de la página, no tiene los iconos para agregar imágenes, alinear a la izquierda y demás. Los textos me aparecen en formato html. Como puedo tener de nuevo la caja con todos los iconos?. Gracias
Muchas gracias por compartir tu conocimiento con los demás, en más de una ocasión me has salvado de un apuro.
Yo estoy usando la versión 1.6.1.3 y como al compañero al seguir el segundo y tercer paso y despues añadir la página en SEO y URLs me da el error: He seguido los pasos pero me sale el mismo error, en la mísma línea
Fatal error: Class ‘paginaejemploController’ not found in C:\AppServ\www\pfitosanitarios\classes\controller\Controller.php on line 135
Si pudieras orientarme estarñia aun más agradecida.
Un saludo
Hola, la experiencia me dice que la mejor forma de conseguir este efecto es hacer un módulo con controlador como por ejemplo el módulo de ofertas flash que tiene su propia página y puedes hechar un vistazo aqui:
http://jose-aguilar.com/modulos-prestashop/es/11-ofertas-flash.html
Buenas, estoy intentándolo y no consigo que me aparezca, dentro de SEO&URLS no me aparece el controlador…
¿Sabes por qué puede ser?
Gracias.
En que versión de Prestashop lo estás empleando? si se trata de la versión 1.6.x seguramente hay que hacer algún cambio
He seguido los pasos pero me sale este error
Fatal error: Class ‘paginaejemploController’ not found in C:AppServwwwtdaclassescontrollerController.php on line 135
Hola buenas tardes,
No sabemos en que versión de prestashop lo estarás probando pero este tutorial es para prestashop 1.5.x. En prestashop 1.6.x es distinto.
sAludos
Hola
yo como queria una variante del sitemap lo que hice fue duplicar y renombrar pero … aunque me coje el controller y tal no me muesta el contenido osea llego a hacerlo todo pero a la hora de cargar el contenido me tira 404
¿pude olvidad algo?
Hola, tengo la version 1.6.0.9… esto servirá para esta versión?
HOla, si que debería funcionar pero debes omitir el primer paso. Simplemente creando el controlador debería funcionar. Saludos
Hola, disculpa como podria crear una nueva pagina con un formulario pero para una version mas reciente como la 1.6 muchas gracias
Hola, creando un controlador nuevo y su tpl. Para hacerlo bien puedes guiarte del controllers/front/ContactController.php y su contact-form.tpl de la plantilla en uso.
hola, podrias decirme donde se encuentran los archivos raiz de prestashop 1.6.8 que ya no estan en la posicio que te nian en la version 1.5 muchas gracias
Hola Jose un saludo
mi consulta es la siguiente
quiero añadir una pagina extra en prestashop 1.6.8 pero creo no se por donde empesar el tuto ue muestras no me funciona podrías ayudarme con la información para esta versión de prestashop.
En prestashop 1.6 ahora se hace de otra forma. En prestashop 1.6 suelo hacer módulos que añaden páginas via controlador del módulo pero añadir una página de esta forma todavía no hemos tenido que hacer.
Saludos
Tio eres un crack de todos los tutoriales que he buscado por internet el tuyo es el unico que no me ha dado error a la hora de crear mi página externa de prestashop, chapo tio, Muchaaaas Gráciaaas!
Hola muy buenas, lo primero felicitarte por el blog, he entrado hace un rato y la verdad es que tienes información muy útil. Me ha gustado mucho.
Necesito una pequeña ayuda. Necesito crear una nueva página, y gracias a éste artículo me ha quedado claro, pero… ¿Existe la manera de que cuando acceda a esa página, los módulos de la derecha e izquierda se oculten(menu lateral, tiendas, etc…)?
Necesito que se muestre la cabecera, y el footer, y en el centro el contenido de mi página a todo lo que da…
¿Es posible?
Mil gracias por compartir tus conocimientos. Un saludo
HOla buenas tardes,
Bueno no se si habrá otra forma, pero la forma más rápida es hacerlo via maquetación. Puedes ocultar las columnas de la siguiente forma:
#nombredetupage #left_column { display:none; }
#nombredetupage #right_column { display:none; }
Y luego center_column hacerlo ancho 100%:
#nombredetupage #center_column { width:100%; }
Y ya lo tendrías,
Espero haberte ayudado,
Saludos
Esto mismo estaba buscando, pero en nombre de la pagina, que pongo «mipagina.html» o «mipagina.tpl» o que, y donde pongo eso.
En el css o en la tpl o donde.
Gracias!
Hola, en PrestaShop debe ser un archivo mipagina.tpl, saludos