Filtro de productos para Prestashop

Job ID: 37752078

Budget: €30 – €250 EUR

Objetivo:

El objetivo es crear unos filtros por característica y subcategorías en un listado de productos de Prestashop de una categoría concreta. El listado debe mostrarse muy rápido, evitando todas las consultas que hace prestashop, por eso funciona mostrando unos archivos que contienen un html precargado o cacheado, de cada miniatura de producto. Los filtros se ejecutan mediante un botón y los productos deben cargar con una llamada ajax.

Requerimientos

+ (1h) Hacer una consulta mysql que busque los ids de producto, que se correspondan con un id de categoría principal, y que puedan ser filtrados por otro id de categoría relacionada a los productos o un una característica específica. Tablas de la base de datos relacionadas: ps_category, ps_category_product ps_product, ps_feature, ps_feature_product, ps_feature_values.

+ (1h) Las consultas a la base de datos se deben hacer utilizando las clases disponibles de Prestashop, por lo que hay que crear disponer de una tienda de Prestashop para hacer pruebas locales e incluir en el código la siguiente línea, que permita poder acceder a los recursos de Prestashop:
include(dirname(__FILE__).'/config/config.inc.php');

+ Para la consulta a la base de datos, no es necesario inicializar una conexión, se hará con una llamada al método Db::getInstance()->execute($sql) de Prestashop.

+ Consultar los parámetros del contexto para id de moneda e idioma incluyendo el contexto de Prestashop en el código, de la siguiente forma:
$context = Context::getContext();
$id_lang = $context->language->id;
$id_currency = $context->currency->id;

+ (1h) Con el resultado de las consultas anteriores, buscar en una carpeta que esté en una ruta de la tienda, los archivos que contiene el html con la miniatura de cada id de producto. Como ejemplo se puede usar cualquier ruta, siempre y cuando exista una variable en la que podamos cambiarla. El nombre de cada archivo se compone del id de producto, id de idioma e id de moneda, separados por guión “-”. Adjunto html de ejemplo del producto con id = 106, id_lang = 1 e id_currency = 1.

+ (30m) Mostrar en el navegador el html de todos los productos que resulten de la consulta, uno al lado de otro, dentro de un div contenedor. Adjunto imagen de ejemplo de miniaturas de productos.

+ Para mostrar el html, debe hacerse dentro de un archivo con extensión .tpl o archivo de smarty, que tendrá el div contenedor en el que se mostrarán los productos, que en primera instancia se cargarán directamente dentro de ese div, filtrados por una categoría principal. La categoría principal se obtiene con la siguiente línea de código:
$id_category = Tools::getValue(‘id_category’);

+ (1h) Filtrar los resultados por una categoría relacionada mediante un botón. Se tiene que recibir un id de categoría como parámetro, El parámetro se podría llamar, filter_id_category. Por ejemplo, si se recibe el valor filter id_category = 10, la consulta debe incluir sólo los productos que tengan una relación con la categoría 10 en la tabla ps_product_category.

+ (30m) Para el filtro por característica, se haría pasándole un id_feature_value, mediante un parámetro que se podría llamar filter_feature_value, mediante un botón. Lo que permitirá filtrar los productos a mostrar por el valor que hay en la tabla ps_feature_value. Como en la tabla ps_feature value no está el id_product, hay que hacer el inner join con la tabla ps_feature, relacionando el id_feature de ambas tablas y a su vez otro inner join con la tabla ps_feature_product, dónde estará la relación entre el id_de producto y el id_feature.

+ (30m) No hay que combinar los dos filtros, es uno o el otro, no ambos. Lo que si se combina siempre es el id de categoría principal con uno u otro filtro. Es decir, los productos a mostrar siempre estarán relacionados al menos con la categoría principal y pueden estar filtrados o no por una subcategoría o por una característica en concreto.

+ (2h) Al darle al botón de cada filtro, debería recargar por ajax el div contenedor donde están mostrándose las miniaturas de producto y volverlas a mostrar, pero filtradas solo por el id de categoría o por el id de del valor de característica.

+ Crear un archivo exclusivo para el código javascript, no mezclar php con javascript o con html.

IMPORTANTE:

Esta tarea se ha explicado a nivel de detalle y a nivel técnico, por lo que rogamos leer los requerimientos y analizarlos, ya que sólo responderemos preguntas concretas de algún punto que no haya quedado claro, no responderemos a preguntas al aire con peticiones que nos hagan volver a explicar lo que ya está explicado.

Es imprescindible experiencia previa en desarrollos para Prestashop, quien no disponga de este skill en concreto, no tiene la más remota posibilidad de que le adjudiquemos la tarea.

El tiempo de entrega es inmediato, al adjudicar el proyecto la espera es de horas, no de días, si no hay disponibilidad a realizar el trabajo en fin de semana o días festivos, no aplicar.

No aceptaremos justificaciones de imprevistos por temas de índole personal.

No liberaremos el pago si se excede el tiempo de entrega acordado.

Es posible que durante el desarrollo surjan nuevos requerimientos que no habíamos previsto y que tendrán que ser desarrollados, en cuyo caso estaremos dispuestos a hacer una extensión en el tiempo de entrega que sea proporcional.

La explicación técnica que damos es orientativa, pero el objetivo de la tarea es brindar el funcionamiento que satisfaga la necesidad. Por supuesto, ningún nuevo requerimiento podrá ser excesivo y superar con creces el requerimiento inicial, se trata de ajustes que puedan surgir en la práctica y que no podrán ser recargados al presupuesto, solo podrán extender el tiempo de entrega, por lo que rogamos incluir en el prespuesto, un recargo que cubra la previsión para estos casos, ya que no haremos pagos adicionales al acordado.

No liberaremos el pago si la tarea se completa a medias, el resultado debe ser completamente funcional y satisfacer nuestros objetivos como cliente.

No liberaremos el pago hasta tanto revisemos y probemos la entrega. Por lo general se prueba inmediatamente, pero esto podría tardar varios días, a más tardar una semana, por lo que es necesario tomar las previsiones correspondientes y aceptar la extensión de tiempo necesaria para que podamos hacer la revisión, que no podrá exceder de una semana.

En caso que se deban realizar correcciones posteriores a la entrega y revisión, una vez hecha la siguiente entrega corregida, se tendrá que realizar un nuevo proceso de revisión, por lo que habrá que volver a esperar a que se confirme que todo está en orden, como para poder liberar el pago, a más tardar en un lapso de tiempo de una semana.
Related categories: PHP Prestashop MySQL HTML