Cambiar colores en Prestashop 1.7

En su momento, estuvimos hablando a modo de ejemplo de cambiar 2/3 fondos de la plantilla por defecto en Prestashop 1.7 añadiendo nuestros propios estilos en el fichero /themes/classic/assets/css/custom.css 

En esta ocasión, vamos hablar de un módulo desarrollado por el usuario shacker de la Comunidad de Prestashop, que nos permitirá cambiar colores “generales” sin tener que añadir nosotros nuestros propios estilos o modificar estilos existentes de forma manual.

La instalación del módulo, sin ningún problema desde la pestaña módulos -> módulos

Módulo para cambiar colores en Prestashop 1.7

En la configuración del módulo vemos las opciones que nos permite a la hora de cambiar los colores de la plantilla.

Para no dar un repaso a todas las opciones, vamos a chequear por ejemplo 3 opciones:

Configuración de módulo para cambiar colores básicos en Prestashop 1.7

En la imagen, hemos señalado un color para el encabezado, otro para los precios y otro para el pie de página

A la hora de cambiar/elegir el color nos proporciona una paleta con la que nos facilita la elección del color:

Paleta de colores

En nuestro caso, el resultado final ha quedado de la siguiente forma:

Color de fondo pie de página en Prestashop 1.7

Color precio de los productos en Prestashop 1.7

Color cabecera en Prestashop 1.7

¿Dónde puedo descargar este módulo para poder cambiar colores en Prestashop 1.7?

Sigue leyendo

Evitar el envío de un email en Prestashop

No estamos hablando de desactivar el envío de un determinado email en base a los estados de pedidos (Pedidos -> Estados)

Realmente es útil para aquellos emails que no podemos deshabilitar en el panel, pero que queremos deshabilitar. (Tampoco hablamos de desactivar el envío de emails en general)

Por ejemplo vamos a desactivar este email, que recibe el cliente nada más el realizar el pedido: (Este email usa la plantilla “order_conf“)

Email del pedido en Prestashop

Email del pedido en Prestashop

Lo que vamos hacer es un “override” de la clase Mail.php y vamos a indicar que si nos llega la plantilla “order_conf” el email no se envía. (Como los envíos de los emails usan la función Send de la clase Mail pues hacemos la comprobación directamente en la clase)

Creamos el fichero con el nombre “Mail.php” que vamos a guardar en el directorio “/overrides/classes/

<?php
class Mail extends MailCore
{
public static function Send($id_lang, $template, $subject, $template_vars, $to,
$to_name = null, $from = null, $from_name = null, $file_attachment = null, $mode_smtp = null,
$template_path = _PS_MAIL_DIR_, $die = false, $id_shop = null, $bcc = null, $reply_to = null)
{
// No envía el email de la plantilla que nosotros vayamos a igualar en el "if"
if ($template == 'order_conf') {
return true;
}
return parent::Send($id_lang, $template, $subject, $template_vars, $to, $to_name, $from, $from_name, $file_attachment, $mode_smtp, $template_path, $die, $id_shop, $bcc, $reply_to);
}
}

Si observáis el código, aquí:

if ($template == 'order_conf')

estamos haciendo la comprobación de la plantilla.

Esto tiene un problema, que, si la misma plantilla la usan otras partes de la tienda, pues tampoco se enviara ese “email” 🙂

Por cierto, en su momento hicimos una guía específica para evitar que el cliente reciba el email de confirmación en Prestashop. (Es una forma diferente, pero más “especifica”, en este ejemplo hablamos de “forma general” para cualquier email que use la plantilla que se usa el email que recibe el cliente al realizar un pedido con el resumen del pedido (hemos puesto un ejemplo, pero podría haber sido con otra plantilla)

Información obtenida en:

https://www.prestashop.com/forums/topic/315165-disable-mail-for-credit-slip/

Documento realizado bajo Prestashop 1.6.1.12

Información sobre las posiciones y módulos en Prestashop

En esta ocasión vamos hablar de un módulo desarrollado por el usuario coeos.pro de la Comunidad de Prestashop que ha ido actualizándose a lo largo del tiempo para funcionar sobre las distintas versiones de Prestashop.

El módulo nos permite conocer información relativa a las posiciones de la tienda, información sobre los módulos instalados (localización del CSS, JS, etc..)

La instalación del módulo, como suele ser habitual la realizamos desde la pestaña módulos -> módulos

Accediendo a la configuración del módulo para ver información relativa a los módulos y posiciones en Prestashop

Inicialmente las opciones de configuración, que nos ofrece el módulo son las siguientes:

Configurando el módulo

  • Address IP -> Solo las IP de las conexiones que vayamos a colocar aquí, verán la información de este “debug”. (Si lo queremos ver nosotros “solos”, colocamos nuestra IP publica (cualesmiip.com) de conexión a internet)
  • open block H-M -> Dependiendo la opción que seleccionemos aquí, por ejemplo, nos permite ver la información solo cuando pulsamos en los bloques, o verla directamente desplegada si seleccionamos “all the time”

    Desplegando toda la información

  • CSS and JS -> Si activamos esta opción mostramos la información de las rutas de los CSS y JS de los módulos

Por ejemplo, si nos vamos a la ficha del producto en Prestashop (pongo un extracto de una imagen, vemos la siguiente información):

Viendo información en la ficha del Producto

En esta captura (recordamos que esta recortada), vemos el hook displayRightColumnProduct y el hook “displayProductButtons” y vemos los módulos que tenemos instalados y la ruta de los TPL, JS, PHP.

¿Dónde puedo descargar este módulo, ver los problemas y preguntar dudas?

https://www.prestashop.com/forums/topic/468925-what-is-this-module-what-is-this-hook-css-js-tpl/

Aunque el documento esta construido bajo Prestashop 1.6 (Sigo diciendo que a día de hoy sigue siendo la versión mas estable), el desarrollador esta actualizando el módulo para su funcionamiento en Prestashop 1.7 Sigue leyendo

Descripción de la categoría al final del listado en Prestashop 1.7

En este tutorial, vamos a realizar un miniTip para mostrar la descripción de la categoría donde estamos situados debajo del listado de productos.

Por defecto, vemos la descripción junto con la imagen y el título de la categoría en Prestashop 1.7 de la siguiente forma:

Descripción de la categoría en Prestashop 1.7

Nuestra intención es ver la descripción (solo vamos a mover la descripción) justo debajo del listado de productos, tal como podemos ver en la siguiente imagen:

Descripción debajo del listado de productos en Prestashop 1.7

El primer paso es irnos al fichero:

/themes/classic/templates/catalog/listing/product-list.tpl

Y vamos añadir un nuevo bloque que luego vamos a usar en otro fichero.

En fichero actual (a final del todo), justo antes de cerrar las siguientes etiquetas:

{/block}

Añadimos un bloque:

<section>{block name='descripcionfinalc'}{/block}</section>

Hemos llamado al “bloque” -> descripcionfinalc

Nuevo Bloque Smarty Prestashop

Ahora, vamos a usar ese bloque dentro del fichero:

/themes/classic/templates/catalog/listing/category.tpl

Si nos fijamos, (obviando los comentarios del fichero), la primera línea funcional de código es el extend, que tenemos:

{extends file='catalog/listing/product-list.tpl'}

De un modo u otro estamos heredando la estructura de la plantilla a la que hacemos referencia, por eso antes hemos añadido un nuevo bloque que ahora vamos a usar realmente en el fichero:

/themes/classic/templates/catalog/listing/category.tpl

En nuestro caso, hemos añadido la siguiente instrucción:

(Llamamos al bloque y dentro del bloque mostramos la descripción de la categoría)

{block name='descripcionfinalc'}
{if $category.description}
<div id="category-description" class="text-muted">{$category.description nofilter}</div>
{/if}
{/block}

Estamos usando el bloque que hemos definido en la plantilla base y dentro del bloque estamos mostrando la descripción de la categoría actual.

Este bloque lo vamos a ver en última posición, porque antes en la plantilla base (/themes/classic/templates/catalog/listing/product-list.tpl) hemos definido que estaba al final 🙂

Lo primero que quiero decir, que estamos haciendo un ejemplo muy rápido y por tanto puede contener y contiene erratas, la ideal es que entendáis el funcionamiento de los bloques.

Documento basado en Prestashop 1.7.1.1

Ver página de mantenimiento sin desactivar la tienda en Prestashop 1.7

En este ejemplo, vamos a realizar una pequeña guía (lo siento si se cuela alguna errata), que permitirá que nosotros podamos ver la página de mantenimiento, pero sin desactivar la tienda.

La idea es qué. mediante una dirección alternativa, nosotros podamos ver la página de mantenimiento para tener más facilidad a la hora de personalizarla.

Teníamos una guía pequeña para crear una página PHP en Prestashop 1.7, simplemente es importante leerla antes de seguir leyendo este artículo.

Lo primero, que vamos hacer es ver donde está la función que ejecuta la página de mantenimiento en Prestashop.

La función, la podemos encontrar en el fichero:

/classes/controller/FrontController.php

Aquí:

protected function displayMaintenancePage()
{
if ($this->maintenance == true || !(int) Configuration::get('PS_SHOP_ENABLE')) {
$this->maintenance = true;
if (!in_array(Tools::getRemoteAddr(), explode(',', Configuration::get('PS_MAINTENANCE_IP')))) {
header('HTTP/1.1 503 Service Unavailable');
header('Retry-After: 3600');
$this->registerStylesheet('theme-error', '/assets/css/error.css', ['media' => 'all', 'priority' => 50]);
$this->context->smarty->assign(array(
'shop' => $this->getTemplateVarShop(),
'HOOK_MAINTENANCE' => Hook::exec('displayMaintenance', array()),
'maintenance_text' => Configuration::get('PS_MAINTENANCE_TEXT', (int) $this->context->language->id),
'stylesheets' => $this->getStylesheets(),
));
$this->smartyOutputContent('errors/maintenance.tpl');
exit;
}
}
}

Lo que vamos hacer es sobreescribir la función en un nuevo controlador que habilitara el acceso a la página de mantenimiento desde una dirección alternativa.

En el fichero “NadieController.php” que lo vamos a guardar en el directorio: “/controllers/front

Vamos a dejarlo de la siguiente forma:

< ?php
class NadieControllerCore extends FrontController
{
public $php_self = 'nadie';
public function init()
{
parent::init();
$this->displayMaintenancePage();
}
protected function displayMaintenancePage()
{
header('HTTP/1.1 503 Service Unavailable');
header('Retry-After: 3600');
$this->registerStylesheet('theme-error', '/assets/css/error.css', ['media' => 'all', 'priority' => 50]);
$this->context->smarty->assign(array(
'shop' => $this->getTemplateVarShop(),
'HOOK_MAINTENANCE' => Hook::exec('displayMaintenance', array()),
'maintenance_text' => Configuration::get('PS_MAINTENANCE_TEXT', (int) $this->context->language->id),
'stylesheets' => $this->getStylesheets(),
));
$this->smartyOutputContent('errors/maintenance.tpl');
exit;
}
}

Analizamos:

public function init()
{
parent::init();
$this->displayMaintenancePage();
}

Sobrescribimos función init, llamamos a la función padre y por último ejecutamos la función que hemos de mostrar la página de mantenimiento.

Si os fijáis en la función: “displayMaintenancePage” hemos quitado la condicional:

if ($this->maintenance == true || !(int) Configuration::get('PS_SHOP_ENABLE')) {
$this->maintenance = true;
if (!in_array(Tools::getRemoteAddr(), explode(',', Configuration::get('PS_MAINTENANCE_IP')))) {

Ahora ya podemos ver la página de mantenimiento desde la siguiente dirección:

tutienda.com/index.php?controller=nadie

Si queremos personalizar la dirección, visita el siguiente enlace: URL amigable en nueva página

Sigue leyendo

Analizando el Prestashop Day en Madrid

Destaco que me nombraron y hablaron sobre mí en la presentación inicial del evento junto al compañero Jesús 🙂

Pongo imagen.

Nombrado en el Prestashop Day de Madrid

Por otro lado, a lo largo del día se montaron varios talleres, casi todos orientados al SEO, Marketing, SEM, etc..  (También hubo uno de optimización y de ERP si la memoria no me falla)

También hubo una presentación por parte de Prestashop por la tarde de la versión 1.7.1.X, donde básicamente estuvieron comentando lo que ya sabíamos aquellas personas que siguen la actualidad prestashopera, como por ejemplo:

Si estás trabajando con la versión 1.6, no recomiendan actualizar por el momento a la 1.7, aunque ya exista una forma de hacerlo.

Lo que si recomiendan es que, si vas a iniciar una tienda, iniciarla con la versión 1.7, yo tengo mis reservas sobre este comentario. (Personalmente sigo dando prioridad a la 1.6)

También estuvieron hablando de porque Prestashop usaba la versión 2 de Symphony y no la 3.

Comentaron que por el momento se va a mantener Smarty para el front-office, hablaron del nuevo sistema de traducciones.

Estuve desvirtualizando con varias empresas del sector, entre ellas Factoría Digital, que fueron los que me invitaron, también vi a los chicos de Línea Gráfica (Creo que hace 5 años que no veía a Fernando), a Nohemi de Alabaz (como curiosidad en su stand eran casi todo chicas 🙂 ), a los chicos de Soy.es dando vueltas con la camisetas de la empresa.

También me encontré con Bertrand, Luis Cambra, Dani, Armando Salvador (eComm360), Juan Martín, Juanjo, Rafa Vargas,  Alpargata Viajera y muchas personas más que si me pongo a nombrar no terminamos. (tampoco recuerdo todos, ah … si unos polacos que se hicieron una foto conmigo… pero no tengo sus datos)

A nivel de público fue una barbaridad, muchas, muchas personas.

Como curiosidad se me escapo el tren al volver .