Jump to content

Florian Lemaitre

Members
  • Content Count

    5
  • Joined

  • Last visited

Community Reputation

0 Neutral

About Florian Lemaitre

  • Rank
    PrestaShop Newbie

Profile Information

  • Location
    France
  • First Name
    Florian
  • Last Name
    Lemaitre
  1. Bonjour Cyssoo, Côté Apache, le serveur se la coule douce à 10% de CPU et de RAM. Côté MySQL le serveur est un peu plus en panique et je viens d'en trouver la cause... la fonction "updatePhysicalProductQuantity" qui prend de plus en plus de temps à s'exécuter au fur et à mesure des commandes. Vu que je ne gère pas les stocks sur mon site, un petit "return true;" avant l'appel de cette fonction a permis de gagner énormément de temps dans le traitement des créations de commandes. A savoir que le site a un taux de conversion proche de 100%, la validation de commande est le point qui génère le plus de charge. Aussi je te rejoins sur la POO, malheureusement Prestashop a encore un long chemin à faire de ce côté là... Vivement le full Doctrine ;). Cordialement,
  2. Bonjour, Je me suis toujours demandé pourquoi Prestashop ne gérait pas les transactions SQL pour la création de ses commandes. Malheureusement hier j'en ai fait les frais pour la première fois. Le serveur SQL qui sature et les tables qui se retrouvent en Deadlocks résultant en des commandes à moitié créées sur le site. Sur un site à 300/600 commandes l'heure je vous laisse imaginer les dégâts si je n'avais pas réagit dans les 5 minutes pour passer le site en maintenance. Je me demande pour quelle raison Prestashop ne met pas en place un système plus robuste de transaction pour s'assurer qu'une commande ne soit jamais corrompue en base de données ? Il me semble que l'intégrité des données est un point primordiale pour un système de vente en ligne ? Au plaisir de vous lire
  3. Here is the solution I adopted for this specific page (all other controllers use notifications). In a custom module I hooked on "displayHeader" with the following code : if (Context::getContext()->controller->php_self === "password") { $this->context->smarty->assign(array( 'notifications' => array( 'error' => Context::getContext()->controller->errors, 'warning' => Context::getContext()->controller->warning, 'success' => Context::getContext()->controller->success, 'info' => Context::getContext()->controller->info, ) )); } A dirty hack but less dirty than the original code from Prestashop (we are used to it...)
  4. Hi, When creating a new theme we can define Image Type sizes. We can create different stores on a same Prestashop installation. Each store can have its own theme. But... ImageType class isn't multistore. So when you install a new theme with funny Image sizes it overrides the Image sizes of the other stores. I can't believe nobody got into that problem unltill now and this behavior is still present in 1.7. Could someone please look into this issue ? Thanks
  5. Bonjour, En installant les tâches cron du module Blocklayered je me suis rendu compte que par défaut l'url proposé dans la configuration du module dans le backoffice contient le paramètre "truncate=1". Ce paramètre a pour effet d’exécuter une requête "TRUNCATE" sur la table 'layered_friendly_url' avant de reconstruire entièrement l'index. Sur un site comportant des centaines de catégories et des milliers de produits l’exécution de cette tâche prend quasiment une heure. Je me demande donc si on peut appeler cette tâche avec le paramètre "truncate=0" et si cela risque de poser un problème par la suite. Et si oui pourquoi ne pas le mettre par défaut dans les urls données dans la configuration du module. Merci par avance.
  6. On Prestashop 1.6.5 you can use "hookActionProductListModifier" in your module. This way, it's also working with Blocklayered module. public function hookActionProductListModifier($params) { if (isset($params['cat_products']) && ! empty($params['cat_products'])) { $id_customer = (isset($this->context->customer) ? (int)$this->context->customer->id : 0); $id_group = (isset($this->context->customer) ? $this->context->customer->id_default_group : _PS_DEFAULT_CUSTOMER_GROUP_); $id_country = (int)$id_customer ? Customer::getCurrentCountry($id_customer) : Configuration::get('PS_COUNTRY_DEFAULT'); $id_currency = (int)$this->context->cookie->id_currency; $id_shop = $this->context->shop->id; foreach ($params['cat_products'] as $key => $product) { $prices_array = array(); /* For each product, grab quantity discounts */ $quantity_discounts = SpecificPrice::getQuantityDiscounts($product['id_product'], $id_shop, $id_currency, $id_country, $id_group, null, true); if ($quantity_discounts) { foreach ($quantity_discounts as $qkey => $discount) { if (!(float)$discount['reduction']) { $price = $discount['price']; } else { if ($discount['reduction_type'] == 'percentage') { $price = $product['price_without_reduction'] - ($product['price_without_reduction'] * $discount['reduction']); } else { $price = $product['price_without_reduction'] - $discount['reduction']; } } $prices_array[] = $price; } $params['cat_products'][$key]['price_tax_exc'] = min($prices_array); $params['cat_products'][$key]['qt_disc'] = true; } } } }
×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More