Evitar que el cliente reciba el email de confirmación en Prestashop

Cuando el cliente compra en Prestashop, automáticamente recibe un email con la confirmación del pedido con el resumen de su pedido.

Email del pedido en Prestashop

¿Cómo podemos desactivar que el cliente no reciba ese correo?

En este caso, vamos hacer el TIP bajo Prestashop 1.6.

Vamos a tocar la clase original, pero recordar que lo ideal es hacer un override la clase en “/override/classes/”

Editamos el fichero:

/classes/PaymentModule.php

Y buscamos el siguiente código:

if (Validate::isEmail($this->context->customer->email)) {
Mail::Send(
(int)$order->id_lang,
'order_conf',
Mail::l('Order confirmation', (int)$order->id_lang),
$data,
$this->context->customer->email,
$this->context->customer->firstname.' '.$this->context->customer->lastname,
null,
null,
$file_attachement,
null, _PS_MAIL_DIR_, false, (int)$order->id_shop
);
}

Código envío email de configuración en Prestashop

Y en este “mini-ejemplo” comentamos el código: Sigue leyendo

Print Friendly, PDF & Email

Mostrar contenidos CMS en los productos en Prestashop

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

Print Friendly, PDF & Email

Mostrar productos en páginas CMS en Prestashop

No recuerdo si en el pasado, hicimos una reseña en el blog de un módulo del usuario Vekia de la Comunidad de Prestashop que permite mostrar en la ficha de todos los productos una página CMS que hemos creado en la pestaña Preferencias -> CMS (En 1.7 Diseño -> Paginas)

El módulo es totalmente gratuito, y es compatible con Prestashop 1.6 / 1.7

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

Una vez instalado, simplemente nos dirigimos a la pestaña Diseño -> Páginas (en Prestashop 1.7), modificamos o creamos un contenido y por ejemplo para mostrar un producto concreto escribimos la siguiente etiqueta:

{product:idProducto}
Ficha del producto en contenidos en Prestashop 1.7

Ficha del producto en contenidos en Prestashop 1.7

Donde hemos indicamos “idProducto”, indicamos lógicamente el ID del producto que queremos que se vea en dicha página de contenidos.

Sí nos vamos a ver esa página en nuestra tienda, la veremos de la siguiente forma:

El módulo lo podemos descargar aquí:

  • https://mypresta.eu/modules/front-office-features/products-on-cms-pages.html
  • Enlaces de emergencia por si en algún momento falla la web de Vekia. (PS 1.6 / PS 1.7), recordar siempre descargarlo desde la web de Vekia, ya que es donde se mantendrá siempre actualizado para las diferentes versiones/variantes de Prestashop
Print Friendly, PDF & Email

He actualizado a PHP 7.1 y mi tienda Prestashop 1.6 me reporta errores

Si no estáis trabajando con las ultimas variante en actualizaciones de Prestashop de la versión 1.6 de Prestashop, es posible que os hayáis encontrado con algunos reporte de errores debido a la versión 7.1 de PHP

Notice: Array to string conversion in /…/classes/Hook.php…

Si estáis trabajando con Prestashop 1.6.1.11 o con anteriores variantes de Prestashop 1.6  y no con Prestashop 1.6.1.12 (porque esta versión ya lo lleva integrado los dos cambios que  se proponen en este artículo.)

En github: https://github.com/PrestaShop/PrestaShop/pull/7392 tenemos propuesto los siguientes cambios:

Fichero:

classes/Hook.php

Sobre la línea (465)

Cambiamos este código:

$output = '';
if ($array_return) {
$output = array();
} else {
$output = '';
}

También, nos recomiendan cambiar el fichero:

classes/helper/HelperOptions.php

(Sobre la línea 105)

Cambiar esto:

if ($field['type'] == 'texarea' || $field['type'] == 'textareaLang') {

por

if ($field['type'] == 'textarea' || $field['type'] == 'textareaLang') {

En realidad, estos cambios ya están implementados en la última variante de la 1.6 de Prestashop a día de hoy, pero para aquellas personas que estén usando por ejemplo la 1.6.1.10 no están implementados.

Lo dicho, intentar siempre tener vuestra versión (variante) de Prestashop actualizada, es decir si estáis usando la 1.6, estar siempre actualizados a la ultima variante de Prestashop 1.6, y si estáis usando la versión 1.7 de Prestashop, estar siempre actualizados a la última variante de la Prestashop 1.7

Enlace de github, donde se trata este problema: https://github.com/PrestaShop/PrestaShop/pull/7392

Print Friendly, PDF & Email

Limitar número de productos en el carrito en Prestashop

Traducción de la guía realizada por el usuario Nemo de la Comunidad de Prestashop

Limitar números de productos en el carrito en Prestashop 1.6

Limitar número de productos en el carrito en Prestashop 1.6

Según nos indica Nemo, el tutorial es para Prestashop 1.6

Imaginemos que queremos que, en el carrito, no puedan existir más de 5 productos en total.

Recordamos que lo mejor es hacer un override de los Clases y Controladores que se vayan a modificar.

En el fichero:

/controllers/front/CartController.php

Dentro de la función:

processChangeProductInCart


Debajo de la línea: (En Prestashop 1.6.1.12, sobre la línea 241)

$cart_products = $this->context->cart->getProducts();

Añadimos la siguiente

$total_cart_produtcs_count=0;

Ahora un poco más abajo, donde tenemos esta línea:

foreach ($cart_products as $cart_product) {

Añadimos:

$total_cart_produtcs_count+=$cart_product['cart_quantity'];

Almacenamos en la variable total_cart_produtcs_count el número total de productos que se van añadiendo al carrito.

Ahora justo antes de este comentario:

// Check product quantity availability

Añadimos:

$max_qty = 5;
		if(Tools::getValue('op', 'up')=='up' && $mode=='add')
		{
			if (count($cart_products) == $max_qty || $total_cart_produtcs_count + $this->qty > $max_qty)
				$this->errors[] = sprintf(Tools::displayError('El limite de productos en el carrito son %s'), $max_qty);
		}

  • En la variable “max_qty” indicamos el límite máximo de productos que se pueden añadir al carrito.
  • En el primero IF se chequea cuando se añade/actualiza productos al carrito.
  • En el segundo IF contamos los productos añadidos al carrito y los comparamos con el límite que hemos establecido
  • Si se cumplen los dos IF, imprimimos el mensaje de que se ha llegado al límite de productos que se pueden añadir al carrito.

Esta traducción, puede contener errores o quedar desactualizada en el momento en el que vayáis a ver este post, revisarla siempre con el tutorial de Nemo:

Imagen de previsualización de YouTube
Print Friendly, PDF & Email

Unificar anchura de los métodos de pago en el listado en Prestashop

En algunos post del foro, hace varios años fui comentando casos parecidos…

Guía basada en Prestashop 1.6 con la plantilla por defecto.

Llegado un momento, es posible que cuando vayamos a visualizar los métodos de pago, a la hora de elegir cual queremos para completar la compra, veamos que el ancho es diferente en cada uno de los bloques y no queda muy bien estéticamente.

En este ejemplo, tenemos instalado 4 módulos, que son, el Módulos de Contrareembolso, de Transferencia Bancaria, de Contra-Reembolso (Estos vienen por defecto en Prestashop) y el módulo de iupay (versión 2.8.3) descargado de la web de Redsys

Métodos de pago en Prestashop

Métodos de pago en Prestashop

En esta imagen, vemos que la anchura del módulo de “iupay” no es la misma que  la del resto de módulos.

La solución es la siguiente (en este caso).

1º Hacer override del tpl del módulo de esa parte en tu plantilla.

Copiar el fichero:

“/modules/iupay/views/templates/hook/payment.tpl”

En:

/themes/default-bootstrap/modules/iupay/views/templates/hook/” (La estructura de directorios del módulo la tenéis que crear en vuestra plantilla.)

2º Modificar: “/themes/default-bootstrap/modules/iupay/views/templates/hook/payment.tpl”

Cambiar en el fichero la siguiente instrucción:

<div class="col-xs-12 col-md-6">

por

<div class="col-xs-12">

Finalmente quedara de la siguiente forma:

Ancho de los métodos de pago totalmente unificados

Ancho de los métodos de pago totalmente unificados

Esto es solo un Ejemplo, es posible que en vuestro caso sea debido a otro problema, tenéis que fijaros en la estructura de otros módulos, como por ejemplo el de transferencia bancaria:

/themes/default-bootstrap/modules/bankwire/views/templates/hook/payment.tpl

Y adaptar la estructura básica al vuestro.

Print Friendly, PDF & Email

Asociar imágenes a características en Prestashop

Tenemos un aporte del usuario Reda OULED que permite configurar imágenes a los valores de las características en Prestashop 1.7 (También compatible con Prestashop 1.6)

La instalación de este módulo se hace desde la pestaña Módulos -> Módulos y Servicios, como suele ser habitual.

Configuración del módulo para asociar imágenes a las características en Prestashop 1.7

Configuración del módulo para asociar imágenes a las características en Prestashop 1.7

La única opción de configuración que nos permite el módulo, son simplemente la anchura y altura a la que vamos a visualizar la imagen que vamos asociar al valor de la característica.

¿Cómo se añade una imagen al valor de la característica en Prestashop 1.7?

Vamos a la pestaña Catalogo -> Atributos y Características (Señalamos Características de los Productos)

Accediendo a la gestión de atributos y características en Prestashop 1.7

Accediendo a la gestión de atributos y características en Prestashop 1.7

Ahora señalamos una de las características y editamos un valor de dicha característica.

Editando valor de una característica

Editando valor de una característica

Añadiendo imagen al valor de una característica en Prestashop 1.7

Añadiendo imagen al valor de una característica en Prestashop 1.7

Vemos que ahora aparece un nuevo campo donde podemos subir/asociar la imagen al valor “Elegante” de la característica “Estilos” 

¿Cómo se ve la imagen en la tienda?

Visualización icono de la característica en Prestashop 1.7

Visualización icono de la característica en Prestashop 1.7

El módulo lo podemos descargar desde aquí:

  • https://www.prestashop.com/forums/topic/591769-module-gratuit-image-caract%C3%A9ristique/

Tutorial probado en Prestashop 1.7.0.6 con la versión “1.0.0” del módulo.

Print Friendly, PDF & Email

¿Exportar categorías por CSV en Prestashop 1.7?

Tenemos un aporte del usuario Daresh de la Comunidad de Prestashop, valido para Prestashop 1.6

Obviando la instalación del módulo que no tiene complicación, vayamos a ver que nos ofrece.

Exportar categorías en Prestashop

Exportar categorías en Prestashop

Tal como podemos ver en la siguiente captura, simplemente nos ofrece la posibilidad de exportar todas las categorías por idioma (podemos seleccionar) y por tienda (si trabajamos con multitienda, podemos seleccionar tienda).

El módulo según nos indica el autor funciona bien en Prestashop 1.6

El módulo se descarga desde aquí: 

  • https://www.prestashop.com/forums/topic/512749-free-module-export-categories-to-csv/
  • Enlace alternativo por si falla el enlace del foro. (Descargar el módulo siempre desde el foro)

 

Print Friendly, PDF & Email

Mostrando información del proveedor en la ficha del producto en Prestashop 1.6

Es cierto que tenemos módulos disponibles en la Comunidad, que nos pueden servir para mostrar “parte” de la información de los proveedores en la ficha del producto en Prestashop 1.6

Otra opción que nos propone “Nemo” en la que no trabajamos con módulos es la siguiente: (Hemos traducido la guía al idioma de Cervantes)

Crear un override en el directorio:

/override/controllers/front/

con el nombre “ProductController.php” y el siguiente contenido

< ?php
class ProductController extends ProductControllerCore
{
public function initContent()
{
parent::initContent();
if($this->product->id_supplier) {
$id_supplier_address = Address::getAddressIdBySupplierId($this->product->id_supplier);
$supplier_address = new Address($id_supplier_address);
}
if (Validate::isLoadedObject($supplier_address))
{
$this->context->smarty->assign(array(
'supplier_country'=> $supplier_address->country,
'supplier_company'=> $supplier_address->company,
'supplier_address1'=> $supplier_address->address1,
'supplier_postcode'=> $supplier_address->postcode,
'supplier_city'=> $supplier_address->city,
'supplier_phone'=> $supplier_address->phone,
'supplier_state' => State::getNameById($supplier_address->id_state),
'supplier_vat_number'=> $supplier_address->vat_number,
));
}
}
}

El siguiente paso, es ir al fichero: “/themes/tu-plantilla/product.tpl” y añadir el siguiente código: Sigue leyendo

Print Friendly, PDF & Email

Google maps de fondo en el formulario de contacto en Prestashop 1.6

Desde la Comunidad, nos traen un módulo que “sitúa” de fondo, el mapa de google maps en el formulario de contacto de Prestashop 1.6

Una vez subido el módulo desde la pestaña Módulos -> Módulos (como es habitual).

Instalado el módulo, vemos que nos ofrece las siguientes opciones de configuración:

Opciones de configuración del módulo

Opciones de configuración del módulo

Para obtener la “API” que nos piden en la primera opción de configuración

API key de Google Maps en Prestashop

API key de Google Maps en Prestashop

Tenemos que ir a: https://developers.google.com/maps/documentation/javascript/get-api-key

Y pulsamos donde dice “Get A KEY”

Obtener la clave de la API

Obtener la clave de la API

Sigue leyendo

Print Friendly, PDF & Email