Si queremos mostrar el contenido de unas de las páginas que hemos creado en la pestaña Preferencias -> CMS en la ficha del producto, podemos hacer lo siguiente.
En este TIP, vamos a tocar clases/controladores original, recordar que lo ideal es hacer un override y nunca tocar una clase y controlador original.
Ejemplo en Prestashop 1.6
Vamos al fichero:
/controllers/front/ProductController.php
Dentro de la función:
public function initContent()
Buscamos la línea: (Sobre la línea 293 por ejemplo en las ultimas variantes actuales de la 1.6)
$this->context->smarty->assign(array( 'stock_management' => Configuration::get('PS_STOCK_MANAGEMENT'),
Y añadimos encima:
$cms_contenido = new CMS(ID CMS, $this->context->language->id, $this->context->shop->id),
Vamos a obtener los datos del CMS con ID 3 (que en nuestro caso es el relativo a Términos y condiciones)
Ahora buscamos la siguiente línea en la misma función
)); } $this->setTemplate(_PS_THEME_DIR_.'product.tpl');
Y justo encima añadimos:
'cms_contenido' => $cms_contenido,
Hemos asignado el contenido del array donde almacenamos los valores de la página de contenidos a una variable que vamos a usar luego en el tpl.
Ahora ya podemos hacer uso de la variable “cms_contenido” en el fichero:
/themes/default-bootstrap/product.tpl
Si hacemos un “var_dump” de la variable, podemos ver las opciones que nos permite la variable a la hora de imprimir el ID, contenidos, etc.. del CMS en cuestión.
{$cms_contenido|var_dump}
Por ejemplo:
Imprimir contenido del CMS en la ficha del producto en Prestashop
{$cms_contenido->content}
Imprimir título del CMS en Prestashop
{$cms_contenido->meta_title}
Ah, se me olvidaba indicaros que en este caso hemos tocado la inicio del TIP el controlador original y lo ideal es hacer un override del controlador en:
/override/controllers/front