Con lo que vimos en la Parte I y Parte II ya tendríamos integrado y funcionando perfectamente los dos programas, WordPress y PrestaShop.

          prestashop-mas-wordpress

En esta parte vamos a ser un poco mas metódicos y perfeccionistas. Si nos damos cuenta nuestra plantilla de WordPress trabaja en HTML5 y PrestaShop no, con lo que tendríamos conflictos a la hora de ejecutar un validador de código. También nos damos cuenta que nos han desaparecido las cabeceras de WordPress y no tendremos las meta etiquetas, cosa que no nos vendrá nada bien a la hora de intentar posicionar nuestra web.

Para empezar vamos a corregir las diferentes versiones que tenemos en nuestros gestores, para ello vamos a modificar el archivo header.tpl de PrestaShop y le indicaremos que si estamos en el blog use HTML5 y sino use la versión de PrestaShop, para solucionar esto lo pondremos con un if como hacíamos en la parte II dejando el archivo header.tpl como sigue:

{$dir=$smarty.server.PHP_SELF} 
{if strpos($dir,"/blog/")===0}
<!DOCTYPE html>
{else}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="{$lang_iso}">
{/if}

Con esto tendremos solucionado el problema de las diferentes versiones, si estamos utilizando otra plantilla que no sea la twentytwelve puede que no sea necesario realizar este paso, primero hay que comprobar si dicha plantilla usa o no HTML5.

Para solucionar el tema de las metaetiquetas tendremos que crear un modulo, podemos hacerle como vimos en la entrada crear un modulo para PrestaShop,

Empezamos por crear una carpeta llamada modulowp dentro de la carpeta modules de PrestaShop. A continuación nos creamos el archivo modulowp.php que sera el encargado de ejecutar el modulo, lo primero que hacemos es inicializar el modulo con el siguiente código:

<?php
if (!defined('_PS_VERSION_'))
  exit;
  
class modulowp extends Module
{
    public function __construct()
	{
		$this->name = 'modulowp';
		$this->tab = 'Modulo en la cabecera';
		$this->versión = 0.1;
		$this->author = '3W Soluciones Web';
		$this->need_instance = 0;

		parent::__construct();
		
		$this->displayName = $this->l('Modulo cabecera WordPress');
		$this->description = $this->l('Modulo cambia la cabecera añadiendo etiquetas de WordPress.');
	}
	public function install()
	{	
		return (parent::install() AND  $this->registerHook('displayMyNewHook'));
	}

Hay que fijarse que en la función install no hemos llamado a ningún Hook que ya existe en PrestaShop sino que nos hemos declarado el nuestro que se llamara displayMyNewHook.

A continuación creamos la función que se llamara al instalar el modulo en displayMyNewHook, añadiendo el siguiente código:

public function hookDisplayMyNewHook($params) 
    { 
	 global $smarty;
	 $dir= $_SERVER['PHP_SELF'];
	 if(strpos($dir,"/blog/")!==false){	
		wp_head();		
	 }

No nos hace falta llamar a ningún archivo .tpl porque la función wp_head() directamente imprime las metaeqtiquetas de WordPress.

Con esto lo único que nos haría falta seria entrar en la administración de PrestaShop y en la sección de Módulos->Módulos buscar nuestro modulo e instalarle.

Ya estaría instalado y funcionando nuestro modulo, pero no le hemos indicado donde queremos que se visualice el modulo, para ello modificamos el header.tpl de PrestaShop y añadirle la siguiente línea antes del </head> para que se visualicen dichas etiquetas:

{hook h='displayMyNewHook'}

Con esto dariamos por finalizada la integración de PrestaShop y WordPress.

Pin It on Pinterest