THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

Rejoignez la communauté sur le Discord Thelia : https://discord.gg/YgwpYEE3y3

Offline

#1 Caracteristique des Produits

(22-02-2017 12:06:29)


Bonjour,

Dans mon controler je dois recuperer les carateristiques d'une liste de produit
je ne comprends pas comment faire ma requete
j'ai les id des produits

$caract_products = ProductQuery::create()
->joinWithI18n($locale)
-> ??
.....

Merci

Offline


Il faut que tu ailles dans le fichier ProductQuery et normalement tu devrais trouver la méthode findbyId qui devrait t'aider à réaliser ta requête smile

Offline


en fait je me suis trompe
je voulais ecrire

$caractProduct = FeatureQuery::create()
                    ->joinWithI18n($locale)
                    .....

Offline


Que veux tu récupérer exactement ?

Les caractéristiques associées à un ensemble de produits ou les valeurs des caractéristiques pour une série de produits ?


OpenStudio Toulouse

Offline


roadster31 wrote:

Que veux tu récupérer exactement ?

Les caractéristiques associées à un ensemble de produits ou les valeurs des caractéristiques pour une série de produits ?

j'ai besoin de récupérer les caractéristiques (titre + valeur) pour une série de produits
je dois les trier et les exporter dans un fichier texte

j'ai essayé

                $caractProduct = ProductQuery::create()
                    ->leftJoinProductI18n()
                    ->leftJoinFeatureProduct()
                    ->joinWithI18n($locale)
                    ->findById($list_id);

mais le résultat ne me va pas

Last edited by zzuutt (22-02-2017 13:45:22)

Offline


L'association Produit <-> Caractéristique (= Feature) <-> Valeur de caractéristique (= FeatureAv) se trouve dans la table FeatureProduct. C'est donc cette table que tu dois requêter.

Pour chacune des valeurs de caractéristiques associées à un produit, tu vas trouver dans cette table un triplet (productId, featureId, featureAvId).

Une valeur de caractéristique peut être soit numérique (cas d'une caractéristique qui propose une liste de valeurs (= une liste de FeatureAv) possibles), soit libre, pour les caractéristiques dont il faut saisir la valeur dans la fiche produit.

Dans tous les cas, tu récupères le libellé de la valeur dans la colonne "title" de la table FeatureAvI18n. Attention a utiliser la locale adéquate.

Si tu tiens vraiment à tout récupérer avec une seule requête, inspire toi de la boucle Thelia\Core\Template\Loop\FeatureValue

D'ailleurs, pourquoi n'utilises-tu pas directement cette boucle pour générer ton fichier texte ?


OpenStudio Toulouse

Offline


roadster31 wrote:

L'association Produit <-> Caractéristique (= Feature) <-> Valeur de caractéristique (= FeatureAv) se trouve dans la table FeatureProduct. C'est donc cette table que tu dois requêter.

Pour chacune des valeurs de caractéristiques associées à un produit, tu vas trouver dans cette table un triplet (productId, featureId, featureAvId).

Une valeur de caractéristique peut être soit numérique (cas d'une caractéristique qui propose une liste de valeurs (= une liste de FeatureAv) possibles), soit libre, pour les caractéristiques dont il faut saisir la valeur dans la fiche produit.

Dans tous les cas, tu récupères le libellé de la valeur dans la colonne "title" de la table FeatureAvI18n. Attention a utiliser la locale adéquate.

Si tu tiens vraiment à tout récupérer avec une seule requête, inspire toi de la boucle Thelia\Core\Template\Loop\FeatureValue

D'ailleurs, pourquoi n'utilises-tu pas directement cette boucle pour générer ton fichier texte ?


Merci Roadster31

ok
je vais essayer de faire en plusieurs etapes
Comment je peux utiliser la boucle Thelia\Core\Template\Loop\FeatureValue dans mon controler pour generer mon txt  ?

Offline


Comment je peux utiliser la boucle Thelia\Core\Template\Loop\FeatureValue dans mon controler pour generer mon txt  ?

Je pensais plutôt que ton contrôleur appellerait un template dans lequel tu utiliserais la boucle feature_value pour générer la réponse, histoire de ne pas réinventer la roue.


OpenStudio Toulouse

Offline


Ok merci
Je vais de ce cote

Grand Merci Roadster31
ça marche nickel ! je n'y avais pas pense !
ça me simplifie énormément le travail

Last edited by zzuutt (22-02-2017 16:55:34)

Offline


N'est-ce pas ? smile


OpenStudio Toulouse

Offline


Bonjour,

Je rebondis sur la question précédemment posée... après avoir parcouru le forum sans trouver de réponse adéquate.
Je cherche à créer un module pour ajouter une dropdown permettant de lister les caractéristiques des produits et d'amener sur une page affichant les produits selon la caractéristique sélectionnée (cf. la dropdown Supports visible ici)
Je cherche donc a lister les valeurs d'une caractéristique (Supports, 15 valeurs distinctes) via la boucle feature_value mais je me retrouve avec une liste énorme répétant les caractéristiques pour chacun des produits... Aussi y-a-t'il une fonction "DISTINCT" ou un équivalent pour ne présenter QUE les 15 valeurs distinctes ?
Et, pour la suite, quel est le moyen le plus simple pour afficher la liste des produits ayant la caractéristique sélectionnée (une URL particulière ou nécessité de faire une nouvelle page ou...) ?
Merci par avance pour toute aide !

Code du module actuel, basé sur celui de HookLang

<ul class="nav navbar-nav navbar-support navbar-left">
    <li class="dropdown">
        <a href="{url path="/support"}" class="language-label dropdown-toggle" data-toggle="dropdown">Supports</a>
        <ul class="dropdown-menu">
            {loop type="feature_value" name="support_available" feature="3" order="alpha"  }
            <li><a href="{$URL}">{$TITLE}</a></li>
            {/loop}
        </ul>
    </li>
</ul>

Offline


Il te faut utiliser une boucle feature (cf. la doc de cette boucle http://doc.thelia.net/en/documentation/ … ture.html) pour lister les caractéristiques (ex. couleur, taille). La boucle feature_value permet de lister les valeurs de caractéristiques (ex. rouge, vert, xs, xxs).

Si tu veux lister les features attachées à un produit donné, utilise le paramètre "product".


OpenStudio Toulouse

Offline


Merci pour ta réactivité ! Bien que ça s'améliore, je tâtonne encore avec certaines fonctions de Thelia...

En fait, je ne veux pas lister toutes les caractéristiques mais uniquement les valeurs d'une seule caractéristique.
> Caractéristique = Support
> Valeurs de la caractéristique (15 valeurs) = Cartes postales, Marques postales, Timbres,...

... mais en utilisant feature_value j'ai ma boucle qui m'affiche un nombre incalculable de "Cartes postales" alors que je souhaite juste la liste de ces 15 valeurs, (cf screenshot)

screenshot

Ce que je cherche à réaliser ensuite, c'est sélectionner une des 15 valeurs dans la dropdown pour montrer une page n'affichant que les produits ayant cette valeur de caractéristique. Ci-dessous le code de mon module, je cale sur l'URL à passer...

        <a href="{url path="/support"}" class="language-label dropdown-toggle" data-toggle="dropdown">Supports</a>
        <ul class="dropdown-menu">
            {loop type="feature_value" name="support_available" feature="3" order="alpha"  }
            <li><a href="{$URL}">{$TITLE}</a></li>
            {/loop}
        </ul>