Jump to content

Tri Chaotique dans catégorie


Recommended Posts

Bonjour,

Malgré avoir écumé plusieurs fois le forum je ne trouve par de solution, je vous lance donc une bouteille à la mer en espérant que quelqu'un la récupère.

Mon problème se situe la liste des produits dans la page catégorie.

  • Prestashop 1.6.1.11 (mais c'est un Prestashop qui à "subit" de nombreuses mise à jour :) un vieux de la vieille )
  • Pas d’utilisation du module de tri à facette. Mon ordre de tri par défaut est prix croissant avec une pagination de 40.
  • Mes produits sont souvent associés à plusieurs catégories.

 

Mais sur toutes mes pages catégories, les premiers prix affichés de ma page N+1 sont inférieurs aux derniers de la page N

il semble que cela soit "un bug" comme évoqué ici http://forge.prestashop.com/browse/PSCFV-6820?jql=text ~ "sort specific prices"

j'ai tenté de modifier comme conseille dans ce post 

mais rien n'y fait.. d’ailleurs j'ai même l'impression que la  function du fichier Category.php (classes)

function getProducts($id_lang, $p, $n, $order_by = null, $order_way = null, $get_total = false, $active = true, $random = false, $random_number_products = 1, $check_access = true, Context $context = null)

n'a aucun impact sur ce tri.

 

NB : Le tri fonctionne parfaitement si j'affiche la totalité des articles sur 1 page.

 

Please hellpppp  :( (c) Lilou Fifth Element

Merci à vous

 

 

Link to comment
Share on other sites

Merci okom3pom

 

J'ai appliqué ton override mais cela ne fonctionne pas. Ceci dit ce qui est étrange c'est que j'ai modifié 

            $nb_days_new_product = 20;

pour le passer  à

            $nb_days_new_product = 9000;

Et aucun effet, alors que normalement je devrais avoir tous mes produits en "nouveau" ?

j'ai bien vider les caches (serveurs et navigateur)

 

Link to comment
Share on other sites

Oui le cache navigateur,

le cache presta et le class_index.php  (malgré que dans performance je suis en  Forcer la compilation à chaque appel )

Je me suis même demandé si il interprétait le code (niveau de la classe ou de son override) , et dès que j’écris n'importe quoi j'ai bien une erreur

Etrange non ?

 

j'ai tenté par l'override racine\override\classes\Category.php

et meme directement dans \classes\Category.php

il y a  d'autres endroits ?

 

 

Encore plus etrange si je renomme classes\Category.php en classes\Categorybidon.php j'ai une erreur

Si je supprime de ce même fichier  "public function getProducts($id_"  ça fonctionne

 

C'est fou non ?

Edited by Aude5 (see edit history)
Link to comment
Share on other sites

voila :) rien de spécial juste forcé à nb_days_new_product = 90000 (pour essai) 

 

<?php
class Category extends CategoryCore
{
  /**
     * Version Prestashop de la méthode 1.6.1.9 
     *  - Pas de vente privée
     *  - Trie par prix sur le total des articles
     *
     * Returns category products
     *
     * @param int         $id_lang                Language ID
     * @param int         $p                      Page number
     * @param int         $n                      Number of products per page
     * @param string|null $order_by               ORDER BY column
     * @param string|null $order_way              Order way
     * @param bool        $get_total              If set to true, returns the total number of results only
     * @param bool        $active                 If set to true, finds only active products
     * @param bool        $random                 If true, sets a random filter for returned products
     * @param int         $random_number_products Number of products to return if random is activated
     * @param bool        $check_access           If set tot rue, check if the current customer
     *                                            can see products from this category
     * @param Context|null $context
     *
     * @return array|int|false Products, number of products or false (no access)
     * @throws PrestaShopDatabaseException
     */
    public function getProducts($id_lang, $p, $n, $order_by = null, $order_way = null, $get_total = false, $active = true, $random = false, $random_number_products = 1, $check_access = true, Context $context = null)
    {
        if (!$context) {
            $context = Context::getContext();
        }

        if ($check_access && !$this->checkAccess($context->customer->id)) {
            return false;
        }

        $front = in_array($context->controller->controller_type, array('front', 'modulefront'));
        $id_supplier = (int)Tools::getValue('id_supplier');

        /** Return only the number of products */
        // Okom3pom AND p.`vente_privee` != 1
        if ($get_total) {
            $sql = 'SELECT COUNT(cp.`id_product`) AS total
                    FROM `'._DB_PREFIX_.'product` p
                    '.Shop::addSqlAssociation('product', 'p').'
                    LEFT JOIN `'._DB_PREFIX_.'category_product` cp ON p.`id_product` = cp.`id_product`
                    WHERE cp.`id_category` = '.(int)$this->id.' AND p.`vente_privee` < 1   
                '.($front ? ' AND product_shop.`visibility` IN ("both", "catalog")' : '').
                ($active ? ' AND product_shop.`active` = 1' : '').
                ($id_supplier ? 'AND p.id_supplier = '.(int)$id_supplier : '');

            return (int)Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue($sql);
        }

        if ($p < 1) {
            $p = 1;
        }

        /** Tools::strtolower is a fix for all modules which are now using lowercase values for 'orderBy' parameter */
        $order_by  = Validate::isOrderBy($order_by)   ? Tools::strtolower($order_by)  : 'position';
        $order_way = Validate::isOrderWay($order_way) ? Tools::strtoupper($order_way) : 'ASC';

        $order_by_prefix = false;
        if ($order_by == 'id_product' || $order_by == 'date_add' || $order_by == 'date_upd') {
            $order_by_prefix = 'p';
        } elseif ($order_by == 'name') {
            $order_by_prefix = 'pl';
        } elseif ($order_by == 'manufacturer' || $order_by == 'manufacturer_name') {
            $order_by_prefix = 'm';
            $order_by = 'name';
        } elseif ($order_by == 'position') {
            $order_by_prefix = 'cp';
        }

        if ($order_by == 'price') {
            $order_by = 'orderprice';
        }

        $nb_days_new_product = Configuration::get('PS_NB_DAYS_NEW_PRODUCT');
        if (!Validate::isUnsignedInt($nb_days_new_product)) {
            $nb_days_new_product = 90000;
        }
        
        // Okom3pom AND p.`vente_privee` != 1
        $sql = 'SELECT p.*, product_shop.*, stock.out_of_stock, IFNULL(stock.quantity, 0) AS quantity'.(Combination::isFeatureActive() ? ', IFNULL(product_attribute_shop.id_product_attribute, 0) AS id_product_attribute,
                    product_attribute_shop.minimal_quantity AS product_attribute_minimal_quantity' : '').', pl.`description`, pl.`description_short`, pl.`available_now`,
                    pl.`available_later`, pl.`link_rewrite`, pl.`meta_description`, pl.`meta_keywords`, pl.`meta_title`, pl.`name`, image_shop.`id_image` id_image,
                    il.`legend` as legend, m.`name` AS manufacturer_name, cl.`name` AS category_default,
                    DATEDIFF(product_shop.`date_add`, DATE_SUB("'.date('Y-m-d').' 00:00:00",
                    INTERVAL '.(int)$nb_days_new_product.' DAY)) > 0 AS new, product_shop.price AS orderprice
                FROM `'._DB_PREFIX_.'category_product` cp
                LEFT JOIN `'._DB_PREFIX_.'product` p
                    ON p.`id_product` = cp.`id_product`
                '.Shop::addSqlAssociation('product', 'p').
                (Combination::isFeatureActive() ? ' LEFT JOIN `'._DB_PREFIX_.'product_attribute_shop` product_attribute_shop
                ON (p.`id_product` = product_attribute_shop.`id_product` AND product_attribute_shop.`default_on` = 1 AND product_attribute_shop.id_shop='.(int)$context->shop->id.')':'').'
                '.Product::sqlStock('p', 0).'
                LEFT JOIN `'._DB_PREFIX_.'category_lang` cl
                    ON (product_shop.`id_category_default` = cl.`id_category`
                    AND cl.`id_lang` = '.(int)$id_lang.Shop::addSqlRestrictionOnLang('cl').')
                LEFT JOIN `'._DB_PREFIX_.'product_lang` pl
                    ON (p.`id_product` = pl.`id_product`
                    AND pl.`id_lang` = '.(int)$id_lang.Shop::addSqlRestrictionOnLang('pl').')
                LEFT JOIN `'._DB_PREFIX_.'image_shop` image_shop
                    ON (image_shop.`id_product` = p.`id_product` AND image_shop.cover=1 AND image_shop.id_shop='.(int)$context->shop->id.')
                LEFT JOIN `'._DB_PREFIX_.'image_lang` il
                    ON (image_shop.`id_image` = il.`id_image`
                    AND il.`id_lang` = '.(int)$id_lang.')
                LEFT JOIN `'._DB_PREFIX_.'manufacturer` m
                    ON m.`id_manufacturer` = p.`id_manufacturer`
                WHERE product_shop.`id_shop` = '.(int)$context->shop->id.' 
                    AND p.`vente_privee` < 1
                    AND cp.`id_category` = '.(int)$this->id
                    .($active ? ' AND product_shop.`active` = 1' : '')
                    .($front ? ' AND product_shop.`visibility` IN ("both", "catalog")' : '')
                    .($id_supplier ? ' AND p.id_supplier = '.(int)$id_supplier : '');

        if ($random === true) {
            $sql .= ' ORDER BY RAND() LIMIT '.(int)$random_number_products;
        } else {
            $sql .= ' ORDER BY '.(!empty($order_by_prefix) ? $order_by_prefix.'.' : '').'`'.bqSQL($order_by).'` '.pSQL($order_way);
            // Okom3pom
            // LIMIT '.(((int)$p - 1) * (int)$n).','.(int)$n;
            // End Okom3pom
        }

        $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql, true, false);

        if (!$result) {
            return array();
        }

        if ($order_by == 'orderprice') {
            Tools::orderbyPrice($result, $order_way);
        }
        
        // Okom3pom
        $result = array_slice($result, (((int)$p - 1) * (int)$n), (int)$n);     
        // End Okom3pom

        /** Modify SQL result */
        return Product::getProductsProperties($id_lang, $result);
    }

}

 

Link to comment
Share on other sites

  • 1 year later...

Bonjour je me permets de déterrer ce topic car j'ai le même problème sur un ps 1.6.1.24 avec la pagination par prix croissant sur les pages category.

J'ai tenté passer la valeur de $nb_days_new_product à 90000 en vidant tous les caches mais ça ne résout pas mon problème.

Link to comment
Share on other sites

Oui. Tout lu et ai fait l'override avec $nb_days_new_product = 9999. J'ai même modifié directement cette valeur du fichier ../category.php, vidé les caches, supprimé class_index, désactivé le filtre à facettes (au cas où)... mais rien y fait le tri par prix croissant ne fonctionne pas....

 

Link to comment
Share on other sites

Bonjour @okom3pom,

Comme Aude5 j'avais voulu tester l'affichage de mes produits en nouveau avec $nb_days_new_product = 9999....

J'ai sinon compris pourquoi je n'avais pas de résultat, je faisais les tests sur ma page "promotions" (car elle a un listing de produit important) mais je n'ai tilté qu'après que ce n'était pas une catégorie... Je confirme donc que l'override fonctionne sur ces dernières.

Saurais-tu comment je pourrais en faire de même pour mes pages nouveautés, promotions et meilleurs ventes ?

Je te remercie pour ta disponibilité et ces solutions ;)

Link to comment
Share on other sites

dans blocklayered.php et la function getProductByFilters il y a ces ' LIMIT ' à la fin de la fonction :

if (version_compare(_PS_VERSION_, '1.6.1', '>=') === true) {
                $this->products = Db::getInstance()->executeS('
				SELECT
					p.*,
					' . ($alias_where == 'p' ? '' : 'product_shop.*,' ) . '
					' . $alias_where . '.id_category_default,
					pl.*,
					image_shop.`id_image` id_image,
					il.legend,
					m.name manufacturer_name,
					' . (Combination::isFeatureActive() ? 'product_attribute_shop.id_product_attribute id_product_attribute,' : '') . '
					DATEDIFF(' . $alias_where . '.`date_add`, DATE_SUB("' . date('Y-m-d') . ' 00:00:00", INTERVAL ' . (int) $nb_day_new_product . ' DAY)) > 0 AS new,
					stock.out_of_stock, IFNULL(stock.quantity, 0) as quantity' . (Combination::isFeatureActive() ? ', product_attribute_shop.minimal_quantity AS product_attribute_minimal_quantity' : '') . '
				FROM ' . _DB_PREFIX_ . 'cat_filter_restriction cp
				LEFT JOIN `' . _DB_PREFIX_ . 'product` p ON p.`id_product` = cp.`id_product`
				' . Shop::addSqlAssociation('product', 'p') .
                        (Combination::isFeatureActive() ?
                        ' LEFT JOIN `' . _DB_PREFIX_ . 'product_attribute_shop` product_attribute_shop
					ON (p.`id_product` = product_attribute_shop.`id_product` AND product_attribute_shop.`default_on` = 1 AND product_attribute_shop.id_shop=' . (int) $context->shop->id . ')' : '') . '
				LEFT JOIN ' . _DB_PREFIX_ . 'product_lang pl ON (pl.id_product = p.id_product' . Shop::addSqlRestrictionOnLang('pl') . ' AND pl.id_lang = ' . (int) $cookie->id_lang . ')
				LEFT JOIN `' . _DB_PREFIX_ . 'image_shop` image_shop
					ON (image_shop.`id_product` = p.`id_product` AND image_shop.cover=1 AND image_shop.id_shop=' . (int) $context->shop->id . ')
				LEFT JOIN `' . _DB_PREFIX_ . 'image_lang` il ON (image_shop.`id_image` = il.`id_image` AND il.`id_lang` = ' . (int) $cookie->id_lang . ')
				LEFT JOIN ' . _DB_PREFIX_ . 'manufacturer m ON (m.id_manufacturer = p.id_manufacturer)
				' . Product::sqlStock('p', 0) . '
				WHERE ' . $alias_where . '.`active` = 1 AND ' . $alias_where . '.`visibility` IN ("both", "catalog")
				ORDER BY ' . Tools::getProductsOrder('by', Tools::getValue('orderby'), true) . ' ' . Tools::getProductsOrder('way', Tools::getValue('orderway')) . ' , cp.id_product' .
                        ' LIMIT ' . (((int) $this->page - 1) * $n . ',' . $n), true, false);
            } else {
                $this->products = Db::getInstance()->executeS('
				SELECT
					p.*,
					' . ($alias_where == 'p' ? '' : 'product_shop.*,' ) . '
					' . $alias_where . '.id_category_default,
					pl.*,
					MAX(image_shop.`id_image`) id_image,
					il.legend,
					m.name manufacturer_name,
					' . (Combination::isFeatureActive() ? 'MAX(product_attribute_shop.id_product_attribute) id_product_attribute,' : '') . '
					DATEDIFF(' . $alias_where . '.`date_add`, DATE_SUB("' . date('Y-m-d') . ' 00:00:00", INTERVAL ' . (int) $nb_day_new_product . ' DAY)) > 0 AS new,
					stock.out_of_stock, IFNULL(stock.quantity, 0) as quantity' . (Combination::isFeatureActive() ? ', MAX(product_attribute_shop.minimal_quantity) AS product_attribute_minimal_quantity' : '') . '
				FROM ' . _DB_PREFIX_ . 'cat_filter_restriction cp
				LEFT JOIN `' . _DB_PREFIX_ . 'product` p ON p.`id_product` = cp.`id_product`
				' . Shop::addSqlAssociation('product', 'p') .
                        (Combination::isFeatureActive() ?
                        'LEFT JOIN `' . _DB_PREFIX_ . 'product_attribute` pa ON (p.`id_product` = pa.`id_product`)
				' . Shop::addSqlAssociation('product_attribute', 'pa', false, 'product_attribute_shop.`default_on` = 1 AND product_attribute_shop.id_shop=' . (int) $context->shop->id) : '') . '
				LEFT JOIN ' . _DB_PREFIX_ . 'product_lang pl ON (pl.id_product = p.id_product' . Shop::addSqlRestrictionOnLang('pl') . ' AND pl.id_lang = ' . (int) $cookie->id_lang . ')
				LEFT JOIN `' . _DB_PREFIX_ . 'image` i  ON (i.`id_product` = p.`id_product`)' .
                        Shop::addSqlAssociation('image', 'i', false, 'image_shop.cover=1') . '
				LEFT JOIN `' . _DB_PREFIX_ . 'image_lang` il ON (image_shop.`id_image` = il.`id_image` AND il.`id_lang` = ' . (int) $cookie->id_lang . ')
				LEFT JOIN ' . _DB_PREFIX_ . 'manufacturer m ON (m.id_manufacturer = p.id_manufacturer)
				' . Product::sqlStock('p', 0) . '
				WHERE ' . $alias_where . '.`active` = 1 AND ' . $alias_where . '.`visibility` IN ("both", "catalog")
				GROUP BY product_shop.id_product
				ORDER BY ' . Tools::getProductsOrder('by', Tools::getValue('orderby'), true) . ' ' . Tools::getProductsOrder('way', Tools::getValue('orderway')) . ' , cp.id_product' .
                        ' LIMIT ' . (((int) $this->page - 1) * $n . ',' . $n), true, false);
            }
        }

        if (Tools::getProductsOrder('by', Tools::getValue('orderby'), true) == 'p.price')
            Tools::orderbyPrice($this->products, Tools::getProductsOrder('way', Tools::getValue('orderway')));

        return $this->products;
    }

Est-ce que la modif ne serait pas à faire ici ?

Link to comment
Share on other sites

J'ai vu ça :)

Je sêche sinon un peu. J'ai essayé enlever ces ' LIMIT ' en essayant retourner les résultats en array_slice (me suis inspiré de ta modif précédente) mais je ne dois pas faire ça correctement...

Link to comment
Share on other sites

J'ai je crois réussi :); J'ai supprimé les ' LIMIT ' et retourné le tout en array_slice...

Je ne sais pas si c'est super propre, voici mes modif :

if (version_compare(_PS_VERSION_, '1.6.1', '>=') === true) {
                $this->products = Db::getInstance()->executeS('
				SELECT
					p.*,
					' . ($alias_where == 'p' ? '' : 'product_shop.*,' ) . '
					' . $alias_where . '.id_category_default,
					pl.*,
					image_shop.`id_image` id_image,
					il.legend,
					m.name manufacturer_name,
					' . (Combination::isFeatureActive() ? 'product_attribute_shop.id_product_attribute id_product_attribute,' : '') . '
					DATEDIFF(' . $alias_where . '.`date_add`, DATE_SUB("' . date('Y-m-d') . ' 00:00:00", INTERVAL ' . (int) $nb_day_new_product . ' DAY)) > 0 AS new,
					stock.out_of_stock, IFNULL(stock.quantity, 0) as quantity' . (Combination::isFeatureActive() ? ', product_attribute_shop.minimal_quantity AS product_attribute_minimal_quantity' : '') . '
				FROM ' . _DB_PREFIX_ . 'cat_filter_restriction cp
				LEFT JOIN `' . _DB_PREFIX_ . 'product` p ON p.`id_product` = cp.`id_product`
				' . Shop::addSqlAssociation('product', 'p') .
                        (Combination::isFeatureActive() ?
                        ' LEFT JOIN `' . _DB_PREFIX_ . 'product_attribute_shop` product_attribute_shop
					ON (p.`id_product` = product_attribute_shop.`id_product` AND product_attribute_shop.`default_on` = 1 AND product_attribute_shop.id_shop=' . (int) $context->shop->id . ')' : '') . '
				LEFT JOIN ' . _DB_PREFIX_ . 'product_lang pl ON (pl.id_product = p.id_product' . Shop::addSqlRestrictionOnLang('pl') . ' AND pl.id_lang = ' . (int) $cookie->id_lang . ')
				LEFT JOIN `' . _DB_PREFIX_ . 'image_shop` image_shop
					ON (image_shop.`id_product` = p.`id_product` AND image_shop.cover=1 AND image_shop.id_shop=' . (int) $context->shop->id . ')
				LEFT JOIN `' . _DB_PREFIX_ . 'image_lang` il ON (image_shop.`id_image` = il.`id_image` AND il.`id_lang` = ' . (int) $cookie->id_lang . ')
				LEFT JOIN ' . _DB_PREFIX_ . 'manufacturer m ON (m.id_manufacturer = p.id_manufacturer)
				' . Product::sqlStock('p', 0) . '
				WHERE ' . $alias_where . '.`active` = 1 AND ' . $alias_where . '.`visibility` IN ("both", "catalog")
				ORDER BY ' . Tools::getProductsOrder('by', Tools::getValue('orderby'), true) . ' ' . Tools::getProductsOrder('way', Tools::getValue('orderway')) . ' , cp.id_product', true, false);
            } else {
                $this->products = Db::getInstance()->executeS('
				SELECT
					p.*,
					' . ($alias_where == 'p' ? '' : 'product_shop.*,' ) . '
					' . $alias_where . '.id_category_default,
					pl.*,
					MAX(image_shop.`id_image`) id_image,
					il.legend,
					m.name manufacturer_name,
					' . (Combination::isFeatureActive() ? 'MAX(product_attribute_shop.id_product_attribute) id_product_attribute,' : '') . '
					DATEDIFF(' . $alias_where . '.`date_add`, DATE_SUB("' . date('Y-m-d') . ' 00:00:00", INTERVAL ' . (int) $nb_day_new_product . ' DAY)) > 0 AS new,
					stock.out_of_stock, IFNULL(stock.quantity, 0) as quantity' . (Combination::isFeatureActive() ? ', MAX(product_attribute_shop.minimal_quantity) AS product_attribute_minimal_quantity' : '') . '
				FROM ' . _DB_PREFIX_ . 'cat_filter_restriction cp
				LEFT JOIN `' . _DB_PREFIX_ . 'product` p ON p.`id_product` = cp.`id_product`
				' . Shop::addSqlAssociation('product', 'p') .
                        (Combination::isFeatureActive() ?
                        'LEFT JOIN `' . _DB_PREFIX_ . 'product_attribute` pa ON (p.`id_product` = pa.`id_product`)
				' . Shop::addSqlAssociation('product_attribute', 'pa', false, 'product_attribute_shop.`default_on` = 1 AND product_attribute_shop.id_shop=' . (int) $context->shop->id) : '') . '
				LEFT JOIN ' . _DB_PREFIX_ . 'product_lang pl ON (pl.id_product = p.id_product' . Shop::addSqlRestrictionOnLang('pl') . ' AND pl.id_lang = ' . (int) $cookie->id_lang . ')
				LEFT JOIN `' . _DB_PREFIX_ . 'image` i  ON (i.`id_product` = p.`id_product`)' .
                        Shop::addSqlAssociation('image', 'i', false, 'image_shop.cover=1') . '
				LEFT JOIN `' . _DB_PREFIX_ . 'image_lang` il ON (image_shop.`id_image` = il.`id_image` AND il.`id_lang` = ' . (int) $cookie->id_lang . ')
				LEFT JOIN ' . _DB_PREFIX_ . 'manufacturer m ON (m.id_manufacturer = p.id_manufacturer)
				' . Product::sqlStock('p', 0) . '
				WHERE ' . $alias_where . '.`active` = 1 AND ' . $alias_where . '.`visibility` IN ("both", "catalog")
				GROUP BY product_shop.id_product
				ORDER BY ' . Tools::getProductsOrder('by', Tools::getValue('orderby'), true) . ' ' . Tools::getProductsOrder('way', Tools::getValue('orderway')) . ' , cp.id_product', true, false);
            }
        }

        if (Tools::getProductsOrder('by', Tools::getValue('orderby'), true) == 'p.price')
            Tools::orderbyPrice($this->products, Tools::getProductsOrder('way', Tools::getValue('orderway')));

        $result = array_slice($this->products, (((int) $this->page - 1) * $n), $n);

        return $result;
    }

 

Link to comment
Share on other sites

Par contre je n'arrive pas à mettre la modification en override, j'ai ce warning : "Undefined property: BlockLayeredOverride::$page in .local\override\modules\blocklayered\blocklayered.php pour la ligne :

$result = array_slice($this->products, (((int) $this->page - 1) * $n), $n);

Une idée ?

Link to comment
Share on other sites

Par contre je n'arrive pas à mettre la modification en override, j'ai ce warning : "Undefined property: BlockLayeredOverride::$page in .local\override\modules\blocklayered\blocklayered.php pour la ligne :

$result = array_slice($this->products, (((int) $this->page - 1) * $n), $n);

Une idée ?

 

À priori ça viendrait des variables 

private $products;
    private $nbr_products;
    private $page = 1;

En les passant en public l'override fonctionne... Quand je les déclare dans mon override ça ne marche plus...

Est-ce qu'il y a une solution afin d'utiliser ces variables dans mon override ?

Merci

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...