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

Editor de textos avanzado en Prestashop 1.7

Gracias al usuario Vekia de la Comunidad de Prestashop, tenemos disponible una guía que nos permite habilitar funciones adicionales al editor de texto que tiene integrado Prestashop, cuando por ejemplo estamos escribiendo la descripción de la categoría, producto, etc..

Vekia, nos propone en su Guía, los siguientes cambios:

1º Paso – Editar fichero JS

Editamos el siguiente fichero “ /js/admin/tinymce.inc.js” y cambiamos el contenido del fichero por el siguiente código:

/**
* Change default icons to marerial icons
*/
function changeToMaterial() {
var materialIconAssoc = {
'mce-i-code': '<i class="material-icons">code</i>',
'mce-i-visualblocks': '<i class="material-icons">dashboard</i>',
'mce-i-charmap': '<i class="material-icons">grade</i>',
'mce-i-hr': '<i class="material-icons">remove</i>',
'mce-i-searchreplace': '<i class="material-icons">find_replace</i>',
'mce-i-none': '<i class="material-icons">format_color_text</i>',
'mce-i-bold': '<i class="material-icons">format_bold</i>',
'mce-i-italic': '<i class="material-icons">format_italic</i>',
'mce-i-underline': '<i class="material-icons">format_underlined</i>',
'mce-i-strikethrough': '<i class="material-icons">format_strikethrough</i>',
'mce-i-blockquote': '<i class="material-icons">format_quote</i>',
'mce-i-link': '<i class="material-icons">link</i>',
'mce-i-alignleft': '<i class="material-icons">format_align_left</i>',
'mce-i-aligncenter': '<i class="material-icons">format_align_center</i>',
'mce-i-alignright': '<i class="material-icons">format_align_right</i>',
'mce-i-alignjustify': '<i class="material-icons">format_align_justify</i>',
'mce-i-bullist': '<i class="material-icons">format_list_bulleted</i>',
'mce-i-numlist': '<i class="material-icons">format_list_numbered</i>',
'mce-i-image': '<i class="material-icons">image</i>',
'mce-i-table': '<i class="material-icons">grid_on</i>',
'mce-i-media': '<i class="material-icons">video_library</i>',
'mce-i-browse': '<i class="material-icons">attachment</i>',
'mce-i-checkbox': '<i class="mce-ico mce-i-checkbox"></i>',
};
$.each(materialIconAssoc, function (index, value) {
$('.' + index).replaceWith(value);
});
}
function tinySetup(config) {
if (!config) {
config = {};
}
if (typeof config.editor_selector != 'undefined') {
config.selector = '.' + config.editor_selector;
}
var default_config = {
selector: ".rte",
browser_spellcheck: true,
plugins : "visualblocks, preview searchreplace print insertdatetime, hr charmap colorpicker anchor code link image paste pagebreak table contextmenu filemanager table code media autoresize textcolor emoticons",
toolbar2 : "newdocument,print,|,bold,italic,underline,|,strikethrough,superscript,subscript,|,forecolor,colorpicker,backcolor,|,bullist,numlist,outdent,indent",
toolbar1 : "styleselect,|,formatselect,|,fontselect,|,fontsizeselect,",
toolbar3 : "code,|,table,|,cut,copy,paste,searchreplace,|,blockquote,|,undo,redo,|,link,unlink,anchor,|,image,emoticons,media,|,inserttime,|,preview ",
toolbar4 : "visualblocks,|,charmap,|,hr,",
external_filemanager_path: baseAdminDir + "filemanager/",
filemanager_title: "File manager",
external_plugins: {"filemanager": baseAdminDir + "filemanager/plugin.min.js"},
language: iso_user,
skin: "prestashop",
menubar: false,
statusbar: false,
relative_urls: false,
convert_urls: false,
entity_encoding: "raw",
valid_children: "+body[style|script|iframe|section],pre[iframe|section|script|div|p|br|span|img|style|h1|h2|h3|h4|h5],*[*]",
valid_elements : '*[*]',
force_p_newlines : false,
cleanup: false,
forced_root_block : false,
force_br_newlines : true,
convert_urls:true,
relative_urls:false,
remove_script_host:false,
init_instance_callback: "changeToMaterial"
};
$.each(default_config, function (index, el) {
if (config[index] === undefined)
config[index] = el;
});
// Change icons in popups
$('body').on('click', '.mce-btn, .mce-open, .mce-menu-item', function () {
changeToMaterial();
});
tinyMCE.init(config);
}

Sigue leyendo

Print Friendly

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

¿Dónde se guardan los datos de conexión a la base de datos en Prestashop 1.7?

Sorpresa… sorpresa… no es igual que en antaño ni en el mismo fichero….ni en la misma ruta.. en Prestashop 1.7 cambia…

En este caso, para acceder al fichero que contiene los datos de conexión a la base de datos en Prestashop 1.7, tenemos que acceder al fichero:

Configuración Base de datos Prestashop 1.7

Configuración Base de datos Prestashop 1.7

/app/config/parameters.php

Y aquí:
Sigue leyendo

Print Friendly

Cambiar grupo por defecto en el registro de clientes en Prestashop 1.5

En esta guía, explicaremos como cambiar el grupo por defecto en el registro de clientes en Prestashop 1.5.

Los pasos son los siguientes:

Ir al fichero:

/config/defines.inc.php

Buscar la siguiente línea:

define('_PS_DEFAULT_CUSTOMER_GROUP_', 3);

Y cambiamos el 3, por el id del grupo, que queramos que se asigne por defecto. (Recordamos que los grupos los podemos crear en la pestaña Clientes -> Grupos del panel de administración en Prestashop 1.5)

El siguiente paso, es ir a la base de datos y buscar la tabla:

ps_configuration

psconfig

Dentro de la tabla, en el campo:

name

Buscamos el valor:

PS_CUSTOMER_GROUP Sigue leyendo

Print Friendly

Guía – Crear constantes en Prestashop 1.5

En esta guía, explicaremos como crear “variables” constantes en Prestashop 1.5.

El primero paso es ir al fichero:

/config/defines.inc.php

Si nos damos cuenta, veremos vemos que tiene lineas como por ejemplo esta:

define('_PS_CLASS_DIR_', _PS_ROOT_DIR_.'/classes/');

En este caso se indica que la el valor de la variable “_PS_CLASS_DIR_”, esta compuesto por el valor de la variable “_PS_ROOT_DIR_” (que en este caso podríamos decir que es el directorio raíz (_PS_ROOT_DIR_ es otra variable que hay definida que hace referencia al directorio raíz, lo que hace en este caso es una concatenación), acompañado de la carpeta “classes”.

¿Como definir nuestra propia variable constante? Sigue leyendo

Print Friendly

Guía – Uso de la clase Cookie en Prestashop 1.5

Recordamos que la clase “Cookie.php” en Prestashop 1.5 se encuentra en el directorio:

/classes/Cookie.php

Podemos leer “Determinados datos” en Prestashop, determinados por la Cookie, que serian lo siguientes:

Datos Cliente / Visitante – Front-End

  • date_add (Fecha creación de la cookie)
  • id_lang (El ID del idioma seleccionado)
  • id_currency (El ID de la moneda seleccionada)
  • last_visited_category (ID de la ultima categoría visitada en el listado de productos)
  • ajax_blockcart_display (Para saber si el carrito esta “Expandido” o no lo esta)
  • viewed (ID de los productos recién vistos (separados por comas)
  • id_wishlist (ID actual de la lista en el Bloque de wishlist)
  • checkedTOS ( Para saber si han marcado las condiciones del servicio (Condiciones generales de venta) en el checkbock  (“0” si no ha señalado nada, “1” si las ha aceptado)
  • id_guest (EL ID del usuario “invitado”)
  • id_connections (ID de la conexión actual  de la sección del usuario)
  • id_customer (El id del cliente)
  • customer_lastname (Nombre Cliente)
  • customer_firstname (Apellidos Cliente)
  • logged (Sirve para comprobar si estas logeado) Sigue leyendo
Print Friendly

Guía – Listado de controladores del Front-End en Prestashop 1.5

Recordamos que los “Controladores” del FrontEnd de tu tienda Prestashop, bajo la versión 1.5, se encuentran en el directorio:

/override/controllers/front/

(No es una lista completa, se esta completando)

  • AddressController.php – Usado por “address.php” para que los clientes modifiquen su dirección.
  • AddressesController.php – Usado por “addresses.php” para obtener la direcciones de los clientes
  • AuthController.php – Usado por “authentication.php” para la autentificación del usuario.
  • BestSalesController.php – Usado por “best-sales.php” para obtener el listado de productos mas vendidos.
  • CartController.php – Usado por “cart.php” para administrar el carrito de los clientes
  • CategoryController – Usado por “category.php” para obtener los listados de productos por categorías
  • CMSController.php – Usado por “cms.php” para obtener las paginas de CMS (Contenidos)
  • CompareController.php – Usado por “productscomparison.php” para la comparación de productos.
  • ContactController.php – Usado por “contactform.php” para el funcionamiento del formulario de contacto en el FrontEnd.
  • DiscountController.php – Usado por “discount.php” para obtener los vales de descuento de los clientes. Sigue leyendo
Print Friendly

Guía – Usar el ID del pedido y no el número de referencia en Prestashop 1.5

En esta guía, y gracias a un módulo desarrollado por el usuario: scorpionsworld del foro de Prestashop, podremos visualizar en distintas partes de nuestra tienda Prestashop el id del pedido. (Recordamos que en Prestashop 1.5, se visualiza el numero de referencia y no el número de pedido)

order_reference

Módulo Prestashop

El módulo en cuestión se instala como cualquier otro módulo, es decir desde la pestaña Módulos -> Módulos del panel de administración de vuestra tienda Prestashop.

Si nos fijamos en la configuración del módulo, nos permite las siguientes opciones:

orderReference

Configuración módulo Prestashop

 

Sigue leyendo

Print Friendly

Guía – Permitir añadir código html en las descripciones de las categorías en Prestashop 1.5

En esta guía, explicaremos como permitir que el usuario pueda añadir código html, en las descripciones de las categorías en Prestashop 1.5

chubcat

Editor gráfico categorías en Prestashop

Esta explicación, se basa en esta guía: Guía en Francés.

El primero paso, sera editor el fichero:

/controllers/admin/AdminCategoriesController.php

En dicho fichero, buscaremos el siguiente código:

array(
'type' => 'textarea',
'label' => $this->l('Description:'),
'name' => 'description',
'lang' => true,
'rows' => 10,
'cols' => 100,
'hint' => $this->l('Invalid characters:').' <>;=#{}'
),

Y lo dejamos así:

Sigue leyendo

Print Friendly