Crear página PHP en Prestashop 1.7

Lo primero es que no estamos hablando de crear páginas de contenidos en la pestaña Preferencias -> CMS (Diseño -> Páginas)

Empecemos  🙂

Aunque se puede hacer mediante módulo, nosotros lo vamos hacer a mano, que si bien no es lo más indicado, supongo que a más de alguno os puede venir bien.

Hace unos 5 años hicimos un ejemplo basado en Prestashop 1.5, ahora lo vamos hacer basado en Prestashop 1.7

El primer paso es crearnos un controlador, al que vamos a llamar “NadieController.php

Lo vamos a guardar en el directorio “/controllers/front”

¿Qué contenido va a tener el fichero “NadieController.php”?

<?php
class NadieControllerCore extends FrontController
{
public $php_self = 'nadie';
public function initContent()
{
$this->context->smarty->assign(
array(
'variableSmarty1' => 'Prueba 1',
'variableSmarty2' => 'Prueba 2',
)
);
parent::initContent();
$this->setTemplate('nadie');
}
}
  • Identificación página
    Entre otras cuestiones, no permite identificar a la página, como también por ejemplo cuando accedemos al controlador vía web, el valor del parámetro. (mismo nombre que la página, si el controlador es “nadieController…”, aquí indicamos ‘nadie’)

    public $php_self = 'nadie';
    
  • Heredamos de FrontController
    class NadieControllerCore extends FrontController
    
  • Función que viene del FrontController, y que se ejecuta nada más ejecutar el controlador.
    public function initContent()
    
  • Preparamos variables para usarlas en el TPL (plantilla)
    $this->context->smarty->assign(
    array(
    'variableSmarty1' => 'Prueba 1',
    'variableSmarty2' => 'Prueba 2',
    )
    
  • Llamada al método padre:
    parent::initContent();
    
  • Asignamos nombre de la plantilla
    “nadie” tiene que estar en “/themes/tuplantilla/templates/” (con extensión tpl), es decir “nadie.tpl
    En setTemplate, escribimos el nombre de la plantilla (nadie.tpl) sin necesidad de colocar la extensión.

    $this->setTemplate('nadie');
    

Una vez preparado el Controlador, vamos a crear el fichero “nadie.tpl” o mejor dicho la plantilla de impresión.

Nuestro contenido será el siguiente:

{extends file='page.tpl'}
{block name='page_title'}
<span class="sitemap-title">{l s='Pagina Nadie' d='Shop.Theme'}</span>
{/block}
{block name='page_content_container'}
<section>
{$variableSmarty1}
{$variableSmarty2}
</section>
{/block}

Bloque estructura – (plantilla)

{extends file='page.tpl'}

Bloque Titulo:

{block name='page_title'}
<span class="sitemap-title">{l s='Pagina Nadie' d='Shop.Theme'}</span>
{/block}
Bloque Titulo

Bloque Contenido:

{block name='page_content_container'}
<section>
{$variableSmarty1}
{$variableSmarty2}
</section>
{/block}

Estamos mostrando el contenido del valor de las variables “variableSmarty1” y “variableSmarty2” que antes habíamos declarado en el controlador.

Imprimiendo variables Smarty

 

Por último, vamos a definir los metatitulos, metadescripción y url amigable de la página de “Nadie”

Vamos a la pestaña Parámetros de la tienda -> Tráfico & SEO, y en el botón “+” añadimos nuestra página.

Nueva página

Nos saldrá un formulario donde seleccionamos la página “nadie”

Definiendo metas y urls amigables para una nueva página en Prestashop

Y definimos el metatitulo, metadescripción, url amigable, etc..

Definiendo datos SEO para la página de Nadie

Ahora para entrar a la dirección, podemos entrar así:

tutienda.com/nadie

Depende así:

tutienda.com/index.php?controller=nadie

Además veremos que aparece el metatitulo y metadescripción, tal como hemos configurado:

Mostrando titulo y descripción SEO

Y con esto y un bizcocho, terminamos por hoy.

Bizcocho de Prestashop

Documento realizado bajo Prestashop 1.7.1.0