En visitant ce site, vous acceptez l'utilisation de cookies afin de vous proposer les meilleurs services possibles.

    [Résolu] trier par fournisseur

    Plus d'informations
    il y a 11 ans 6 mois #1 par ablaye90
    trier par fournisseur a été créé par ablaye90
    j'ai trouvé ce hack mais depuis lors trier pas fournisseur ne marche plus dans les catégories principales
    voici le hack

    After the setKeyWord function in \administrator\components\com_virtuemart\models\product.php place:

    Code: [Select]

    function untreeCat($vm_catid, &$ccont){
    $db = JFactory::getDBO();
    $query = 'SELECT `category_child_id` FROM `#__virtuemart_category_categories` WHERE `category_parent_id`="'.$vm_catid.'"';
    $db->setQuery($query);
    $db->query();

    $rows = $db->loadRowList();
    if (empty($rows)) {
    return;
    } else {
    foreach($rows as $row) {
    array_push($ccont, $row[0]);
    $kat = $row[0];
    $this->untreeCat($kat, $ccont);
    }
    }
    }


    Then search for this:

    Code: [Select]

    if ($virtuemart_category_id > 0) {
    $joinCategory = TRUE;
    $where[] = ' `pc`.`virtuemart_category_id` = ' . $virtuemart_category_id;
    }


    ... and replace it with following:

    Code: [Select]

    if ($virtuemart_category_id > 0){
    $joinCategory = TRUE ;
    $catscont = array();
    $this->untreeCat($virtuemart_category_id, $catscont);
    $qkat = ' `pc`.`virtuemart_category_id` IN('.$virtuemart_category_id;
    foreach ($catscont as &$kat){
    $qkat .= ', '.$kat;
    }
    $qkat .= ')';
    $where[] = $qkat;
    }

    Connexion ou Créer un compte pour participer à la conversation.

    • studio42
    • Portrait de studio42
    • Hors Ligne
    • Modérateur
    • Modérateur
    • Dev Joomla & Virtuemart
    Plus d'informations
    il y a 11 ans 6 mois - il y a 11 ans 6 mois #2 par studio42
    Réponse de studio42 sur le sujet trier par fournisseur
    Il y a déja une chose "étrange".
    Pourquoi loadRowList pour une seule colonne ?
    alors que cela est plus simple et plus clair :
    function untreeCat($vm_catid, &$ccont){
    	$db = JFactory::getDBO();
    	$query = 'SELECT `category_child_id` FROM `#__virtuemart_category_categories` WHERE `category_parent_id`="'.$vm_catid.'"';
    	$db->setQuery($query);
    	$db->query();
    
    	if ($rows = $db->loadColumn()) {
    		foreach($rows as $row) {
    			$ccont[] = $row;
    			$this->untreeCat($row, $ccont);
    		}
    	}
    }
    Le mieux serais même de faire une requete IN pour les sous catégorie car là, vous avez une requte pour chaque enfant.


    le code
    foreach ($catscont as &$kat){
    $qkat .= ', '.$kat;
    }
    mieux :
    $qkat .= ','.implode(',',$catscont );

    Pour le problême du tri par fournisseur, avez vous une page blanche, une erreur ou le tri n'est pas bon ?

    www.st42.fr Truc et astuce Joomla et virtuemart
    shop.st42.fr téléchargement Joomla et extension pour virtuemart
    Gratuit ! Nettoyage des medias : shop.st42.fr/fr/produits/virtuemart-netoyage-des-medias.htm Nouveau!
    Dernière édition: il y a 11 ans 6 mois par studio42.

    Connexion ou Créer un compte pour participer à la conversation.

    Plus d'informations
    il y a 11 ans 6 mois #3 par ablaye90
    Réponse de ablaye90 sur le sujet trier par fournisseur
    cette modification à pour but de montrer les produits des catégories enfants au niveau de la catégorie principale.
    apres cette modification la liste de défilement trier par marque ne fonction pas

    mossane.com/fr/maquillage/teint.html

    THX

    Connexion ou Créer un compte pour participer à la conversation.

    • studio42
    • Portrait de studio42
    • Hors Ligne
    • Modérateur
    • Modérateur
    • Dev Joomla & Virtuemart
    Plus d'informations
    il y a 11 ans 6 mois #4 par studio42
    Réponse de studio42 sur le sujet trier par fournisseur
    Le problème est que selon le type de requête et la version de Virtuemart, la requête diffère.

    Pouvez vous fournir votre version actuelle de virtuemart que je puisse vérifier?

    www.st42.fr Truc et astuce Joomla et virtuemart
    shop.st42.fr téléchargement Joomla et extension pour virtuemart
    Gratuit ! Nettoyage des medias : shop.st42.fr/fr/produits/virtuemart-netoyage-des-medias.htm Nouveau!

    Connexion ou Créer un compte pour participer à la conversation.

    Plus d'informations
    il y a 11 ans 6 mois #5 par ablaye90
    Réponse de ablaye90 sur le sujet trier par fournisseur
    vm 2.6.6

    merci

    Connexion ou Créer un compte pour participer à la conversation.

    • studio42
    • Portrait de studio42
    • Hors Ligne
    • Modérateur
    • Modérateur
    • Dev Joomla & Virtuemart
    Plus d'informations
    il y a 11 ans 6 mois - il y a 11 ans 6 mois #6 par studio42
    Réponse de studio42 sur le sujet trier par fournisseur
    Bonjour,
    Voici une solution qui devrait fonctionner :

    Ajouter la fonction(ou modifier dans votre cas) :
    function untreeCat($catids){
    	$this->subcat_ids+=$catids;
    	$db = JFactory::getDBO();
    	$query = 'SELECT `category_child_id` FROM `#__virtuemart_category_categories` WHERE `category_parent_id` in ('.implode(',',$catids ).')';
    	$db->setQuery($query);
    	$db->query();
     
    	if ($rows = $db->loadColumn()) {
    		$this->untreeCat($rows);
    	}
    }

    remplacez
    if ($virtuemart_category_id > 0) {
    				$joinCategory = TRUE;
    				$where[] = ' `pc`.`virtuemart_category_id` = ' . $virtuemart_category_id;
    			}
    par
    if ($virtuemart_category_id > 0) {
    				$joinCategory = TRUE ;
    				$this->subcat_ids = array();
    				$this->untreeCat(array($virtuemart_category_id));
    				$where[] = ' `pc`.`virtuemart_category_id` IN ('.implode(',',$this->subcat_ids).')';
    			}

    remplacez dans la fonction getOrderByList (environ ligne 2154):
    if ($virtuemart_category_id) {
    				$query .= ' AND c.`virtuemart_category_id` =' . (int)$virtuemart_category_id;
    			}
    par
    if ($virtuemart_category_id) {
    		$where[] = 'AND  `c`.`virtuemart_category_id` IN ('.implode(',',$this->subcat_ids).')';
    	}

    Déja ce code divise par 10 les requêtes en BDD. Donc le temps d’exécution et le faite d'utiliser $this->subcat_ids, vous n'avez pas besoin de refaire la requête pour les fabricants.

    Attention je n'ai pas tout vérifier. Mais a 95% cela doit fonctionner, je vais pas faire tout votre TAF ;)

    www.st42.fr Truc et astuce Joomla et virtuemart
    shop.st42.fr téléchargement Joomla et extension pour virtuemart
    Gratuit ! Nettoyage des medias : shop.st42.fr/fr/produits/virtuemart-netoyage-des-medias.htm Nouveau!
    Dernière édition: il y a 11 ans 6 mois par studio42. Raison: Double Typo
    Les utilisateur(s) suivant ont remercié: ablaye90

    Connexion ou Créer un compte pour participer à la conversation.