MFLM Posted January 4, 2017 Share Posted January 4, 2017 (edited) Hola a todos Tengo un archivo PHP que genera un resultado donde aparecen las categorías de una tienda enseguida el código: if(Tools::getValue("boutique")) { Shop::setIdShop(Tools::getValue('boutique')); $cntxt = Context::getContext(); $cntxt->shop = new Shop(Tools::getValue('boutique')); $categories = Category::getCategories($context->language->id); $resultat = array(); $row = array(); foreach($categories as $cat) { foreach($cat as $c) { $row = array(); $categorie = New Category($c["infos"]["id_category"]); $row['id_category']=$c["infos"]["id_category"]; $row['id_parent']=$c["infos"]["id_parent"]; $row['titre']=$c["infos"]["name"]; $row['level_depth']=$c["infos"]["level_depth"]; $row['nbProduct'] = $categorie->getProducts($context->language->id,0,1000000 , null ,null , true); foreach ($row as $key => $value) { if ($value == NULL) { $row[$key]=''; } } $resultat[]=$row; } } echo json_encode($resultat); } Ahora me gustaría saber, ¿que categorías tienen promoción en alguno de sus productos? $query=' SELECT COUNT(p.`id_product`) as totalProducts FROM `'._DB_PREFIX_.'product` p , `'._DB_PREFIX_.'product_shop` ps WHERE p.`active` = 1 AND p.`id_product` = ps.`id_product` AND ps.`id_shop` = '.$cntxt->shop->id.''; $result_product_count = Db::getInstance()->ExecuteS($query); $countt = $result_product_count[0]['totalProducts']; $promos = Product::getPricesDrop($id_lang = 1, $page_number = 0, $nb_products = $countt, $count = false, $order_by = null, $order_way = null, $beginning = false, $ending = false, $context = $cntxt); $products = $categorie->getProducts($context->language->id,0,$countt+1 , null ,null , false , $active = true, $random = false, $random_number_products = 1, $check_access = true, $context = $cntxt); $products = $categorie->getProducts($context->language->id,0,$countt+1 , null ,null , false , $active = true, $random = false, $random_number_products = 1, $check_access = true, $context = $cntxt); $row['hasSold'] = 0; foreach($products as $p) { if (count(promos)>0) { foreach($promos as $promo) { if ($promo['id_product'] == $p['id_product']){ $row['hasSold']= 1; } } } } Tengo el código anterior que va dentro del foreach($cat as $c) pero este toma más de un minuto en obtener el resultado cuando la obtención de categorías lo da en 2 segundos. ¿Existe una forma de optimizar esta obtención de variable? o ¿Es la única manera? Agradezco a todos sus comentarios Edited January 4, 2017 by MFLM (see edit history) Link to comment Share on other sites More sharing options...
ventura Posted January 5, 2017 Share Posted January 5, 2017 La instancia a las categorias de una tienda (id) la puedes tener añadiendo el parametro shop $id_shop = '5'; // Shop ID $categoryByShop = new Category((int)Tools::getValue('id_category'), $this->context->language->id, $id_shop); Luego ya el resto no entiendo que quieres hacer, si que solo se muestren categorias con descuento en el product-list.tpl o si quieres crear una pagina especifica con esos productos con descuento Link to comment Share on other sites More sharing options...
MFLM Posted January 6, 2017 Author Share Posted January 6, 2017 La instancia a las categorias de una tienda (id) la puedes tener añadiendo el parametro shop $id_shop = '5'; // Shop ID $categoryByShop = new Category((int)Tools::getValue('id_category'), $this->context->language->id, $id_shop); Luego ya el resto no entiendo que quieres hacer, si que solo se muestren categorias con descuento en el product-list.tpl o si quieres crear una pagina especifica con esos productos con descuento Hola Ya se obtener las categorías de la tienda y subcategorías correspondientes. Lo que necesito es lo siguiente: Que muestre todas las categorías, y las que tienen promoción aparezcan diferentes con una imagen Pienso obtener todos los productos de promoción, guardarlos en un arreglo y después en el foreach compararlo. Es que ya hago el proceso pero tarda demasiado para dar el resultado. Link to comment Share on other sites More sharing options...
ventura Posted January 6, 2017 Share Posted January 6, 2017 Hola Ya se obtener las categorías de la tienda y subcategorías correspondientes. Viendo tu código no me ha quedado claro Lo que necesito es lo siguiente: Que muestre todas las categorías, y las que tienen promoción aparezcan diferentes con una imagen Crea una variable que diferencie a esas categorias Pienso obtener todos los productos de promoción, guardarlos en un arreglo y después en el foreach compararlo. existe una clase para ello, filtros en el modulo de facetas que puedes crear, o criterios de ordenación de los productos en base a lo que necesites Es que ya hago el proceso pero tarda demasiado para dar el resultado. no me extraña nada Intenta basarte en el core porque sino vas a tener problemas de rendimiento seguro Link to comment Share on other sites More sharing options...
MFLM Posted January 11, 2017 Author Share Posted January 11, 2017 Hola a todos En una aplicación móvil al momento de mostrar las categorías en un menú, quisiera saber que categorías tiene promoción, para así mostrar una imagen diferente. Se que al momento de obtener las categorías, tengo que hacer un foreach a los productos que tienen promoción y compararlos. Pero si tengo muchos productos y muchas categorías esto tardara demasiado. Espero me ayuden Gracias 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