Bonsoir,
Le plus simple serait une rubrique produit, une rubrique recette avec la possibilité de lier une fiche produit avec une ou plusieurs recettes.
Ca me paraît également la meilleure option.
Il y a peut-être plus simple mais voici comment j’ai procédé sur un de mes projets:
›
Mise en place de la structure de ressources suivante:
- Recettes
-- Recette n°1
-- Recette n°2
-- Recette n°3
- Produits
-- Fiche Produit n°1
-- Fiche Produit n°2
-- Fiche Produit n°3
› Création d’un
modèle Produits associé aux fiches produits et un
modèle Recettes associées aux recettes.
› Création d’une
TV de type «Liste déroulante à choix multiples» nommée ChoixDesRecettes et affectée au modèle Produit. Celle-ci permettra de choisir les recettes que l’on associe à chacun des produits. Pour générer la liste des recettes à sélectionner, j’ai ajouté ce code dans le champ «Valeurs optionnelles d’entrée»:
@EVAL return $modx->runSnippet('ListingRecettes');
Celui-ci permet de lancer un
snippet nommé ListingRecettes qui génère la liste des recettes existantes. Voici le code de ce snippet:
<?php
$output = '';
$result = $modx->db->query("SELECT * FROM modx_site_content WHERE template='15' ORDER BY pagetitle");
while( $row = $modx->db->getRow( $result ) ) {
$output .= $row['pagetitle'].'=='.$row['id'].'||';
}
echo $output;
?>
Dans le requête SQL, l’identifiant du modèle (15 dans mon exemple) est à remplacer par celui du modèle Recettes créé précédemment.
› Pour afficher la liste des recettes sur la fiche produit, on ajoute un
appel Ditto dans le modèle Produits:
[!Ditto? &tpl=`ListeDesRecettes` &documents=`[*ChoixDesRecettes*]` &noResults=`Aucune recette n'a été proposée pour le moment.`!]
Le paramètre &documents permet de préciser les ressources que l’on souhaite afficher. C’est là où la variable ChoixDesRecettes trouve son utilité.
› Création du
chunk «ListeDesRecettes». Celui-ci correspond au template de l’appel Ditto et donc à l’affichage des recettes sur la fiche produit. Voici ce que ça pourrait donner:
<h3><a href="[~[+id+]~]">[+pagetitle+]</a></h3>
<p>[+introtext+]</p>
En l’occurrence, on affiche pour chacune des recettes son titre et son résumé. Un clic sur le titre permet d’accéder à la recette complète.
Avec cette solution, on a une indépendance complète entre la création de recettes et de produits, tout en permettant de lier facilement une ou plusieurs recettes à chacun des produits.
Si quelqu’un a une solution plus simple, je suis preneur.