gusman126 Posted February 22, 2018 Share Posted February 22, 2018 Hola a todos. Por favor @nadie puedes verlo? puedes usar esto para tu blog y explicar como hacer esto Tengo un pequeño problema que aun no he podido encontrar la solución, sigo buscando y probando asi que es posible que en unos dias la encuentre, pero a ver si aqui me la dan antes. La cuestión es la siguiente. El prestashop es el 1.7 Tengo un modulo desarrollado que añade lotes de caducidad a los productos, usa su propia tabla con sus propios datos, el id del producto, fecha de caducidad y lote..... He desarrollado un modulo que busca y filtra esta tabla según una fecha, tipo el modulo de facetas, pero hay un problema, al final despues de la explicación. $sql = "select id_producto as id from "._DB_PREFIX_."lotes_caducidad where fecha_caducidad = '".$date."' group by id_producto"; He puesto en la barra lateral un cuadro tipo fecha y cuando cambia el valor llama a un ajax y una url $('input[type="date"]').change(function(){ $fecha = this.value; $.ajax({ type: 'POST', data : "{}", url:'modules/filterlotes/sajax.php?fecha='+$fecha, dataType: "json", success : function(response) { $('#js-product-list').html(response) $('.total-products').html('') }, complete : function(){ } }); }); Al llamar al fichero tiene las ordenes de buscar todos los productos de la categoria donde esta actualmente el usuario $products_partial = Product::getProducts($id_lang, 0,0, 'name', 'asc', $id_category = $cat); $result = Product::getProductsProperties($this->context->language->id, $products_partial); una vez a leido es información se hace una busqueda y solo se añaden al array de productos finales los id que tienen lotes de caducidad con la fecha elegida if(count($rows_l) > 0){ foreach($rows_l as $pr){ $clave = array_search($pr['id'], array_column($result, 'id_product')); $productos[] = $presenter->present( $presentationSettings, $assembler->assembleProduct($result[$clave]), $this->context->language ); } }else{ $productos = []; } una vez a filtrado y añadido al array lo añado a las variables smarty y devuelvo en Json la plantilla o fichero tpl $products = $productos; $this->context->smarty->assign('products', $products); echo json_encode($this->fetch($this->templateFile)); entonces como hemos visto arriba el fichero tpl {if isset($products)} <div class="products row"> {foreach from=$products item="product"} {include file="catalog/_partials/miniatures/product.tpl" product=$product} {/foreach} </div> {else} <div class="products"> <h1>{l s='No hay productos' d='filterlotes'}</h1> </div> {/if} lo añade al div $('#js-product-list').html(response) Bueno después de contar todo esto, he aqui mi problema. Es posible que todo esto lo este haciendo mal, que debe haber otra manera para usar los filtros y mostrarlos, espero que @nadie pueda ver y corregirme. El problema esta que al mostrar los productos , filtrados, cuando le doy a organizar por nombre, cantidad o por otro orden este filtro se pierde y vuelven a estar los de siempre. ¿Como puedo hacer que al filtrar y cambiar el orden sigan estando los productos filtrados? Si alguien quiere ver el funcionamiento https://xativalowcost.com/presta17/3-women Fechas de lotes 21/02/2018 y 01/03/2018 Gracias por adelantado y de nada si a alguien le puede servir este codigo para hacer su propio filtro Link to comment Share on other sites More sharing options...
nadie Posted March 2, 2018 Share Posted March 2, 2018 (edited) En 22/2/2018 a las 10:45 AM, gusman126 dijo: Hola a todos. Por favor @nadie puedes verlo? puedes usar esto para tu blog y explicar como hacer esto Tengo un pequeño problema que aun no he podido encontrar la solución, sigo buscando y probando asi que es posible que en unos dias la encuentre, pero a ver si aqui me la dan antes. La cuestión es la siguiente. El prestashop es el 1.7 Tengo un modulo desarrollado que añade lotes de caducidad a los productos, usa su propia tabla con sus propios datos, el id del producto, fecha de caducidad y lote..... He desarrollado un modulo que busca y filtra esta tabla según una fecha, tipo el modulo de facetas, pero hay un problema, al final despues de la explicación. $sql = "select id_producto as id from "._DB_PREFIX_."lotes_caducidad where fecha_caducidad = '".$date."' group by id_producto"; He puesto en la barra lateral un cuadro tipo fecha y cuando cambia el valor llama a un ajax y una url $('input[type="date"]').change(function(){ $fecha = this.value; $.ajax({ type: 'POST', data : "{}", url:'modules/filterlotes/sajax.php?fecha='+$fecha, dataType: "json", success : function(response) { $('#js-product-list').html(response) $('.total-products').html('') }, complete : function(){ } }); }); Al llamar al fichero tiene las ordenes de buscar todos los productos de la categoria donde esta actualmente el usuario $products_partial = Product::getProducts($id_lang, 0,0, 'name', 'asc', $id_category = $cat); $result = Product::getProductsProperties($this->context->language->id, $products_partial); una vez a leido es información se hace una busqueda y solo se añaden al array de productos finales los id que tienen lotes de caducidad con la fecha elegida if(count($rows_l) > 0){ foreach($rows_l as $pr){ $clave = array_search($pr['id'], array_column($result, 'id_product')); $productos[] = $presenter->present( $presentationSettings, $assembler->assembleProduct($result[$clave]), $this->context->language ); } }else{ $productos = []; } una vez a filtrado y añadido al array lo añado a las variables smarty y devuelvo en Json la plantilla o fichero tpl $products = $productos; $this->context->smarty->assign('products', $products); echo json_encode($this->fetch($this->templateFile)); entonces como hemos visto arriba el fichero tpl {if isset($products)} <div class="products row"> {foreach from=$products item="product"} {include file="catalog/_partials/miniatures/product.tpl" product=$product} {/foreach} </div> {else} <div class="products"> <h1>{l s='No hay productos' d='filterlotes'}</h1> </div> {/if} lo añade al div $('#js-product-list').html(response) Bueno después de contar todo esto, he aqui mi problema. Es posible que todo esto lo este haciendo mal, que debe haber otra manera para usar los filtros y mostrarlos, espero que @nadie pueda ver y corregirme. El problema esta que al mostrar los productos , filtrados, cuando le doy a organizar por nombre, cantidad o por otro orden este filtro se pierde y vuelven a estar los de siempre. ¿Como puedo hacer que al filtrar y cambiar el orden sigan estando los productos filtrados? Si alguien quiere ver el funcionamiento https://xativalowcost.com/presta17/3-women Fechas de lotes 21/02/2018 y 01/03/2018 Gracias por adelantado y de nada si a alguien le puede servir este codigo para hacer su propio filtro @gusman126 Desconozco si lo has solucionado, pero intento mirarlo (no prometo nada porque yo y Prestashop hemos terminado hace tiempo y solo me paso alguna vez por el foro y poco más) antes de mayo y sino lo has solucionado intento mirarlo y decirte algo. PosData: Mi blog no está orientado propiamente a temas de desarrollo "puro", aunque existan temas de desarrollo y pequeñas modificaciones de código, pero no es un blog orientado propiamente al desarrollo "puro", y tampoco es esa la intención, ya que no es un tema que atrae tráfico (existen excepciones como todo los sitios, pero no es lo habitual) porque la mayoría de personas que buscan dudas en "Español" (lo tengo estudiado) buscan otro tipo de consultas y tampoco puedo perder mucho tiempo elaborando X documentación en la actualidad ya que estoy fuera del mundillo y en otros menesteres, además yo soy más de foro.. y estoy intentando desvincularme de este mundillo de Prestashop totalmente. PosData 2: Expón tu duda también en la zona de desarrollo del foro internacional: https://www.prestashop.com/forums/forum/116-core-developers/ donde tienes más desarrolladores que pueden ayudarte. PosData 3: Si lo publicas en tu blog (tengo fichados todos los blogs de Prestashop, sean turcos, alemanes, ingleses, japoneses, chinos, etc..) ponlo también en este tema. PosData 4: No funciona url de la web que proporcionas. Edited March 2, 2018 by nadie (see edit history) Link to comment Share on other sites More sharing options...
gusman126 Posted March 2, 2018 Author Share Posted March 2, 2018 Gracias @nadie No, aun no esta solucionado. Estoy haciendo pruebas con productos "reales" por lo que la categoria no es women es https://xativalowcost.com/presta17/en/13-comida Lo he añadido en el apartado de ingles, hasta que no lei en tu blog que estabas desconectado no lo sabia, Gracias y disculpa el error. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now