Jump to content

prestashop pour un site d'éditeur


Recommended Posts

Bonjour à tous,

Je souhaite utiliser prestashop pour un site d'éditeur de livre. Ma problématique est la suivante :

* des livres
* des auteurs du domaine francophone ou étranger
* des traducteurs

Sachant qu'un auteur peut également être traducteur. Un livre à donc un ou plusieurs auteurs et éventuellement un ou plusieurs traducteurs.

La navigation se fait principalement via les auteurs.

J'arrive > je cherche un auteur > j'ai la liste de ses ouvrages en tant qu'auteur ET en tant que traducteur > j'accède à son ouvrage

Est-ce que, d'après vous, il est possible d'utiliser prestashop pour ça ?

merci d'avance !

Link to comment
Share on other sites

J'ai exactement la même question. Et c'est la même chose pour tous les système d'eCommerce : ils sont tous prévus pour vendre de l'informatique, et aucun pour vendre des livres.
Alors c'est vrai qu'on peut utiliser le champ "fabricant" pour l'auteur, mais impossible d'en avoir plusieurs.
Sinon, y'a les tags, mais impossible d'avoir un texte de présentation lié au tag...
Edit : sinon, il y a la solution des sous-catégories, proposée dans
ce thread
Ca permet de gérer plusieurs auteur, mais pas de préciser leur rôle dans le livre...
Ce serait quand même bien de pouvoir préciser :
Auteur : untel
Traducteur : untel
Illustrateur : untel
etc.

Link to comment
Share on other sites

Bonjour,

Je n'ai pas trouvé de réponse simple à cette problématique de "rôle" de la personne. Surtout qu'une personne peut être auteur sur un ouvrage et traducteur sur un autre.

Si on part du principe d'ajouter plusieurs catégories à un ouvrage qui correspondent aux auteurs, traducteurs, illustrateurs... On se retrouve avec une liaison simple categorie <-> categorie_produit <-> produit alors qu'il faudrait que la liaison soit typée categorie <-> categorie_produit_auteur <-> produit + categorie <-> categorie_produit_traducteur <-> produit...

Ce que je vois, c'est modifier prestashop pour justement typer cette liaison. A voir la complexité de la modification...

Link to comment
Share on other sites

Bonjour :
Si vous utilisez les champs fabriquants (auteurs) et fournisseurs (traducteur) et si un livre a plusieurs auteurs un double auteur (genre paul et jacques) de meme si il a plusieurs traducteurs, enfin moi c'est comme cela que je procède en combinant les noms des auteurs... je sais pas si j'ai été tres clair!!!

Link to comment
Share on other sites

  • 5 months later...
Je remonte un peu ce sujet pour savoir si vous avez remarqué des nouveautés dans la 1.4 qui pourraient améliorer la gestion de ces cas de figure ?


Salut,
Je crois que le type de besoin abordé dans ce post est parfaitement résolvable à peu d'efforts.

L'outil adapté de prestashop est la gestion des caractéristiques et des valeurs.
Je m'explique : on y met vraiment ce qu'on y veut , par exemple on peut très bien avoir Auteur/Editeur/Traducteur/Co-Traducteur (si on peut en avoir deux) etc...

Une chose importante à savoir est que si vous prévoyez qu'un champ peut se répéter, il suffit d'en créér autant que nécessaire . Si je décide que je peux avoir deux auteurs , je crées deux champs Auteur ... etc.
Si un seul est rempli dans la fiche produit , alors ce sera le seul affiché.
Tout ceci est un comportement par défaut , rien donc de terrible.

J'insiste au passage sur le fait que toutes les demandes que je vois listées ici sont bel et bien des caractéristiques.

Ceci étant posé, dans cette approche, la seule chose manquante est un fichier type listing sur le modèle des autres listings , type manufacturer.php, prices-drop.php etc...

C'est relativement simple à coder, prestashop est conçu suffisament bien pour que l'on puisse développer un listing personnalisé à peu de frais. Pourquoi pas donc un listing selon les caractéristiques.

En ceci la 1.4 ne sera ni plus ni moins puissante que la 1.3 à mon sens, dès lors qu'il ne s'agit pas de modifier quoique ce soit , mais d'ajouter ... un listing pour la 1.3 , et son tpl associé, un nouveau controller pour la 1.4.

Ceci peut se développer sous forme de 2 fichiers à uploader, ou sous la forme d'un module installable (un peu plus de taf mais plus convivial et désinstallable/installable )

Il suffira ensuite d'avoir à l'(aux ) endroit(s) souhaité(s) un lien vers ledit listing.(eg : un menu).

Dernier aspect au sujet des caractéristiques ; Il concerne la recherche. Un petit rappel : il est possible de règler le poids des caractéristiques dans le BO pour l'indexation du moteur de recherches interne. Autrement dit lors d'une gestion par caractéristiques, ce poids sera avantageusement ajusté pour une recherche rapide plus cohérente.


Si j'ai du temps il n'est pas impossible que je me penche sur ce développement. (ce n'est pas non plus une promesse :s)
Link to comment
Share on other sites

Une chose qui est commune à toutes les librairies en ligne, c'est qu'en dessous du nom du livre, il y a les noms des différents auteurs, et si on clique dessus, ben ça affiche éventuellement une description de l'auteur en question, et en dessous, la liste de tous les livres auxquels il a participé.
Comme le fabricant dans prestashop. Mais ça ne marche pas avec les caractéristiques. Et j'ai l'impression que ça doit être un petit peu plus difficile à développer pour Prestashop qu'une simple page de liste, effectivement.
Et même la page de liste, elle ne doit pas être si simple que ça pour un auteur qui apparaît dans la caractéristiques "auteur" d'un livre, et dans la caractéristique "traducteur" d'un autre. J'imagine que ce petit addon facile à faire que tu décris, il va dans un premier temps afficher 2 fois le nom de cet auteur, avec un lien qui affichera tous ses livres en tant qu'auteur, et un autre tous ses livres en tant que traducteur. Il sera plus difficile de faire une page qui regroupe les deux, non ?
Et enfin, pas de solution simple pour avoir un petit texte de présentation par auteur, avec éventuellement une photo, si ?

En tous cas, merci de prendre la peine de répondre.

Link to comment
Share on other sites

Si cette approche est réalisée sous la forme d'un module , il est tout à fait possible d'avoir un lien vers une page spécifique à une valeur de caractéristique (nom de l'auteur par exemple). C'est clairement un peu plus de développement, car celà sous entends une admin adaptée et une table supplémentaire à gérer.

Mais je le répète , rien de véritablement compliqué (pour un développeur je précise).
Je suis surpris qu'aucun module de ce type n'existe.
Le seul obstacle est le temps. Pas la complexité.

Link to comment
Share on other sites

Oui, d'autant que j'ai regardé sur les autres systèmes, et ça n'existe pas non plus. Même Magento n'a pas de solution simple pour ça. Pourtant, les produits concernés sont légions : livres, disques, dvd... Mais comme ce sont des secteurs marchands squattés par des monstres, ça ne laisse pas de place à de "petits" sites, je suppose...

Link to comment
Share on other sites

Oui, d'autant que j'ai regardé sur les autres systèmes, et ça n'existe pas non plus. Même Magento n'a pas de solution simple pour ça. Pourtant, les produits concernés sont légions : livres, disques, dvd... Mais comme ce sont des secteurs marchands squattés par des monstres, ça ne laisse pas de place à de "petits" sites, je suppose...


Bah je serais pas aussi négatif en ce qui me concerne.
Lorsque l'architecture existe, il va de soi que même pour un logiciel gratuit , les fonctionnalités spécialisées sont le lot de modules supplémentaires.
La majeure partie des modules existant pour prestashop s'adressent justement aux 'petits sites' , pour te citer car je déteste les appeler comme ça : ils sont mon bifteack.
Malheureusement , les 'gros' des marchés que tu cites (dvd, livre etc...) , n'achètent pas de modules de ce type mais achètent des solutions intégrales, fournies de développements spécifiques qu'il appartient au prestataire de réaliser.
En d'autres termes, si ce type de module n'existe pas pour prestashop de manière publique, ils existent peut être en développement sur mesure sur des sites en place s'appuyant pourtant sur un prestashop hautement modifié.

Ce simple thread peut inciter des développeurs à combler le manque.
Il en résulterait un module probablement payant, mais accessible, couvrant des besoins de ce type.
C'est la raison pour laquelle d'ailleurs j'ai clairement exprimé l'approche logique d'un tel développement, pour aiguiller (si besoin est) d'éventuels développeurs intéressés.

Pour ma part je n'exclue pas un tel développement. Mais les modules que je publie sont généralement le résultat de d'une réponse à des besoins précis de mes propres clients, souvent liés au transport , entre autre, mais parmi eux aucun ne vend ce type de produit (livre..dvd ).
Ma priorité va donc logiquement aux besoins exprimés par mes propres clients.
En deuxième plan , je puise ici même sur ce forum l'inspiration pour de nouveaux modules qui combleraient des manques. Mon objectif étant toujours de ne pas réinventer la roue, et plutôt d'agir du côté ou 'ça pêche'. ;)
Link to comment
Share on other sites

Je pense qu'il y aurait de la clientèle pour un module comme ça. Pour avoir fureté un peu dans les forums, je suis loin d'être le seul à avoir ce besoin.


Héhé , je l'attendais ;) .
Si tu savais le nombre de personnes qui me contactent pour me dire que je devrais développer tel ou tel module...qu'il y aurait de la demande...
Je plaisante mais je souligne juste que toute demande de contribution mentionne ce type d'argument :D
Link to comment
Share on other sites

Ah ben ça , oui forcément!
Mais après , tout est question de prix et de quantité de travail.
Développer un module pour le plus grand nombre permet de le vendre moins cher.
Je considère au vu des nombreux sites de communautaires que j'ai pu visiter , que si on est prêt à mettre 40€ sur un menu, on peut en mettre 50 sur une fonctionnalité indispensable , non ?
Je parle dans le vide car le module n'existe pas. Mais c'est mon principe d'évaluation...très résumé.
Si je passe deux heures sur un module simple, il y a 99% des chances que je le propose gratuitement.
Si je ne compte plus les heures et que je sais que je serais innondé de questions à son sujet, et de demandes d'ajustement à tel ou tel cas particuliers, la vente s'impose.
En même temps il faut bien vivre.

Link to comment
Share on other sites

Broceliande, j'espère que tu as déjà commencé à t'y intéresser !
;-)
Je suis moi aussi très intéressé par un développement de ce type, et je suis parfaitement d'accord avec toi : il sera certainement payant et ce ne serait que juste rétribution de ton travail.

Link to comment
Share on other sites

Bon, en tous cas, si tu t'y mets, regardes s'il est possible de plutôt permettre d'affecter plusieurs fabricants à un produit, en spécifiant leur rôle. C'est ce qui aurait la plus grande logique (un livre est effectivement "fabriqué" par plusieurs personnes), et qui permettrait à mon avis de mieux répondre aux besoins tout en tirant partie de la gestion déjà assez poussée des fabricants dans PS (lien dans la fiche produit, liste des fabricants, recherche, page de présentation...)
Mais par contre, je sais pas si c'est possible sans hack. Je ne connais pas bien PS, mais je pense que la seule solution est de créer une nouvelle table qui permette un lien N vers N entre les produits et les fabricants. Je suppose qu'actuellement, c'est un lien N vers 1.
De ce point de vue là, ta proposition d'utiliser plutôt les caractéristiques, bien que moins complète en terme de fonctionnalité, et peut-être plus simple à réaliser...
C'est marrant, parce que je suis allé voir les principaux site de vente de bouquin pour donner des exemples, et en fait, ni amazon, ni la fnac ni alapage ne le font de la façon que j'imagine. Alapage créé une fiche auteur avec les 2 noms, la fnac n'indique pas le rôle, et amazon indique le rôle, mais le remplit mal, donc tout le monde est "auteur".
C'est finalement sur allociné que c'est le mieux fait, où on peut savoir le rôle de chacun, et voir les réalisations de chacun éventuellement triées par métier.

Raah, purée, si j'avais 2s, je le ferai moi-même, ce plugin... ;)

Link to comment
Share on other sites

Broceliande, j'espère que tu as déjà commencé à t'y intéresser !
;-)
Je suis moi aussi très intéressé par un développement de ce type, et je suis parfaitement d'accord avec toi : il sera certainement payant et ce ne serait que juste rétribution de ton travail.


A vrai dire pas encore. J'ai des priorités à assurer.
La juste rétribution est l'affaire de chacun, j'entends par là que tout le monde n'a pas la même vision des choses à ce niveau ;-P .
Ce n'est pas le point crucial. Un développeur doit savoir rentabiliser un peu ses efforts lorsqu'ils sont conséquents, tout comme il doit savoir offrir à la communauté en juste retour de ce qu'il y trouve.
Ce qui doit être jaugé avant tout c'est la durabilité de l'effort ...
Un module "clés en main" qui fait la chose X et rien d'autre et n'a pas vocation à évoluer peut facilement être livré en libre.
A l'inverse, un module qui implique des sollicitations de suivi et de cas par cas, et voué à bouger doit au minimum payer les heures à venir , s'il ne paie pas les heures passées...

Je réfléchis toutefois à ce que pourrait ou devrait être un module tel que celui plus ou moins dépeint ici. Mais il faudra un peu de patience : il passe forcément au second plan sur ma Todo list, derrière l'alimentaire :P

La suite en réponse au post de Matthieu...
Link to comment
Share on other sites

Bon, en tous cas, si tu t'y mets, regardes s'il est possible de plutôt permettre d'affecter plusieurs fabricants à un produit, en spécifiant leur rôle. C'est ce qui aurait la plus grande logique (un livre est effectivement "fabriqué" par plusieurs personnes), et qui permettrait à mon avis de mieux répondre aux besoins tout en tirant partie de la gestion déjà assez poussée des fabricants dans PS (lien dans la fiche produit, liste des fabricants, recherche, page de présentation...)
Mais par contre, je sais pas si c'est possible sans hack. Je ne connais pas bien PS, mais je pense que la seule solution est de créer une nouvelle table qui permette un lien N vers N entre les produits et les fabricants. Je suppose qu'actuellement, c'est un lien N vers 1.
De ce point de vue là, ta proposition d'utiliser plutôt les caractéristiques, bien que moins complète en terme de fonctionnalité, et peut-être plus simple à réaliser...
C'est marrant, parce que je suis allé voir les principaux site de vente de bouquin pour donner des exemples, et en fait, ni amazon, ni la fnac ni alapage ne le font de la façon que j'imagine. Alapage créé une fiche auteur avec les 2 noms, la fnac n'indique pas le rôle, et amazon indique le rôle, mais le remplit mal, donc tout le monde est "auteur".
C'est finalement sur allociné que c'est le mieux fait, où on peut savoir le rôle de chacun, et voir les réalisations de chacun éventuellement triées par métier.

Raah, purée, si j'avais 2s, je le ferai moi-même, ce plugin... ;)


Lol mais alors j'ai peut être pas besoin de chercher à me caler quelques heures , tu trouveras plus facilement deux secondes !
Rassure toi j'ai pigé la plaisanterie ;-)

Ce qui te semble logique dans ton approche 'métier' peut perdre tout sens en développement.
Il faut parvenir à répondre précisément à un besoin en construisant proprement avec la base logicielle sur laquelle on s'appuie : j'ai cité Prestashop .

Il y a une approche que je me refuse systématiquement , c'est celle du hack pur et dur, d'air plus facile au premier abord, misère au second ...

Un autre approche est donc d'utiliser l'existant , c'est ce dont je parlais : les caractéristiques

La dernière et meilleure approche , c'est de créer une table adaptée qui ouvre les portes, de nouveaux 'objets' , et un module qui en assure le rendu visuel en FO , tout comme l'administration en BO .
C'est de loin la meilleure, mais aussi la plus longue à mettre en oeuvre.
Et pour en rajouter une couche , il faut avoir bien pensé la structure du module pour le rendre utilisable par la plus grande majorité.
Link to comment
Share on other sites

yep, je te rejoins totalement dans ton analyse. En fait, mon envie de gérer ça via les fabricants est plutôt une "feature request" pour la team PS. Parce qu'à partir du moment où c'est intégré au core, c'est sans doute plus rapide à développer que de créer un module totalement nouveau à côté. Ils ont déjà mis la possibilité de sélectionner plusieurs catégories pour un objet, le fait de pouvoir sélectionner plusieurs fabricants en serait la suite logique, tout en reprenant certains de ses mécanismes. En outre, ça permettrait d'y intégrer le fournisseur, qui pour le moment dispose de moins de richesse fonctionnelle que le fabricant...

Mais en même temps, à bien y réfléchir, est-ce que ma solution nécessiterait un hack ? Comme tu as l'air de penser qu'ajouter une table n'est pas un hack, que dirait-tu d'ajouter une table Produit_X_Fabricant, avec les champs suivants :
id (int)
id_produit (int)
id_fabricant (int)
role (fixed)

Ensuite, je suppose qu'ajouter un module dans la fiche produit qui affiche ces relations ne doit pas être le plus compliqué...
Le module de sélection dans le backoffice est certainement moins évident. Enfin, ça dépend de ce qu'offre le framework comme outils...
Mais là où je suppose que ça se complique, c'est l'affichage des produits liés sur la page fabricant... là, difficile de faire sans hack, effectivement... A moins de recréer un module dédié à cet affichage... raah, c'est plus 2s qu'il me faudrait, c'est au moins 3 !!! ;)

Link to comment
Share on other sites

Je vois bien ce que tu veux dire Matthieu, et je dois dire qu'associer simplement autant de fabricants que l'on souhaite dans une table annexe semble en effet plus simple... si ce que l'on cherche à faire implique nécéssairement des fabricants.

Dans ton approche, très sensée , qui correspond à tes propres besoins, il est clair que l'intéret est d'avoir sous la main une classe Manufacturer toute faite et de pouvoir récupérer les liens vers les fiches fabricant, elles même déja toute gérées par presta..
Un bémol : ceci ne suffira pas à ce qu'un produit soit affiché dans un listing par fabricant.
Autre bémol, j'ai lu ici des demandes concernant des types différents d'intervenants dans la fabrication produit (auteur/editeur ....) . Or Prestashop n'autorise qu'une seule et unique traduction pour le terme manufacturer :-S
Du coup on se retrouvera avec Fabricant: nom de l'auteur/Fabricant: nom du co-auteur/Fabricant :editeur... à moins que l'on ne décide de mettre le terme dans le nom et ne pas afficher le terme générique...
Ca devient déja un peu plus bidouille à l'usage non ?

Ca laisse à réfléchir , quoiqu'il en soit je garde à l'esprit ton idée, probablement plus rapide à coder , mais le résultat couvrira-t-il l'ensemble de la demande ?
Il y a une expression que j'adore dire : Qui peut le plus peut le moins : La réciproque est fausse

Link to comment
Share on other sites

c'est pour ça que dans la table intermédiaire, j'ai ajouté le champ "rôle", qui permet de préciser le rôle de chacun. Et bien sûr, dans ce cas là, on cesse d'utiliser le terme "fabricant". facile sur la page produit, plus difficile sur la page fabricant, à moins à nouveau de la refaire entièrement, via un plugin, pour éviter d'avoir à toucher à la page elle-même. En fait, le fonctionnement du paramètre fabricant reste le même. Si on en choisit un seul avec la méthode habituelle, il est affiché normalement sur la page produit, et pointe vers la page fabricant classique.
Mais si on utilise le plugin, on sélectionne les dits fabricants dans la backend via le plugin. Ca provoque l'affichage d'un autre bloc sur la page produit, expurgé du terme "fabricant", mais avec les rôles qui s'affichent. Et ça pointe vers une nouvelle page fabricant, qui au lieu de simplement chercher les produits qui ont l'id de ce fab dans leur fiche, cherchent via la table intermédiaire.
La seule chose qui est conservée, c'est la création de ces fabricants. Et un même fabricant peut être appelé soit par la manière normale, soit pas le nouveau plugin.
J'ai l'impression qu'avec un système comme ça, on couvre tous les cas de figures...

bon, cela dit, tu auras bien compris qu'il s'agit d'une lettre au père Noël. J'ai une bonne connaissance de la modélisation de bdd, mais je ne connais rien à PS...

Link to comment
Share on other sites

Si je peux me permettre un point sur les besoins, tels que je les cerne...

Un produit culturel (livre - que je connais mieux - ou DVD ou CD) me semble correspondre aux éléments suivants :
* 1 ou plusieurs genres
* 1 ou plusieurs auteurs (livre = auteurs / CD classique = compositeur / CD = interprète / DVD = réalisateur)
* 1 ou plusieurs "intermédiaires" (livre = traducteur, scénariste de BD / CD classique = interprète / DVD = scénariste)
* 1 ou plusieurs contributeurs (livre = illustrateur, photographe... / CD classique = orchestre / DVD = acteurs)
* 1 date de parution initiale (livre = 1er tirage / CD = année enregistrement / DVD = sortie du film)
* 1 ou plusieurs pays
* 1 fabricant (éditeur, producteur)
* 1 fournisseur (distributeur)

Il faut que tous ces éléments apparaissent sur la fiche produit, en étant chacun cliquables pour afficher une liste de produits correspondant au critère.
Pour les auteurs, intermédiaires, contributeurs, fabricant et fournisseur : il est important de pouvoir afficher en même temps que leur listing de produits, une présentation en HTML (bio...) avec une image associée (portrait, logo). Si possible, le tout sur une seule et même page.

Et puis toutes les autres petites choses sont déjà gérées ou gérables via les caractéristiques : poids, taille, ISBN, date de sortie...

Avec ça, on a déjà une bonne base.

Après, les demandes spécifiques de chacun (par ex. afficher la bio et la photo de l'auteur sur la fiche d'un livre, ainsi que les autres livres de ce même auteur) seraient selon moi secondaires du moment qu'on a une telle base.

Je ne sais pas si je fais avancer la réflexion avec ça... en tout cas, moi ça me permet d'avoir les idées plus claires sur mes besoins ;-)

Link to comment
Share on other sites

Pardon, je me rends compte que j'ai commis une erreur de formulation : il s'agirait d'une année de parution (et non pas une date complète).

L'intérêt d'une date de parution originale sous forme d'année serait de pouvoir afficher tous les produits parus cette même année.

Link to comment
Share on other sites

Bon, aller, je suis chaud, je vais essayer de faire avancer le shmi.. le chimili... le schmilbilili... enfin bref, le truc.
Voici donc un pas à pas pour réaliser ce plugin tel que je l'imagine (et qui répondrais aisément à tous les besoins de kazikaze). Alors, comme je ne connais pas du tout le fonctionnement interne de PS, je vais rester dans le conceptuel, avec simplement quelques requêtes sql. Selon la souplesse du framework PS, il y aura des choses faciles à faire, d'autres plus compliquées, et peut-être même certaines impossibles.
la table
Alors, d'abord, il nous faut une table. Je pars de la table qui permet de lier plusieurs catégories à un produit, et je rajoute le champ "role", qui va donc permettre de spécifier le type de chacun des fabricants (auteur, illustrateur, traducteur, année, etc.)

CREATE TABLE ps_manufacturer_product (
 id_manufacturer int(10) unsigned NOT NULL,
 id_product int(10) unsigned NOT NULL,
 position int(10) unsigned NOT NULL default '0',
 role varchar(250) NULL,
 KEY manufacturer_product_index (id_manufacturer,id_product),
 KEY id_product (id_product)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;



Le backend
Bon, maintenant, il faut donc pouvoir ajouter des enregistrements dans cette table via le backend. Je ne sais pas comment ça se passe avec PS, mais je suppose que via un plugin, il y a moyen d'ajouter des trucs dans le backend du produit.
Il faut donc faire un truc qui ressemble à la sélection des catégories, sauf qu'il n'y a pas de hiérarchie, et qu'il faut rajouter un champ texte pour saisir le rôle.
Il nous faut donc une requête SQL qui cherche la liste de tous les fabricants, et pour chacun d'eux, s'il est déjà associé avec le produit ou pas.
Ca donnerait ça :

SELECT m.id_manufacturer, m.name, mp.role 
  FROM `ps_manufacturer` m 
  LEFT JOIN ps_manufacturer_product mp 
     ON mp.id_manufacturer = m.id_manufacturer AND mp.id_product = $id_product



De cette manière, on récupère la liste de tous les Fabricants, avec le rôle qui leur a éventuellement été attribué pour ce produit. Le discriminant du produit est mis dans la clause AND et pas dans la clause WHERE, pour que la ligne du fabricant soit retournée même s'il n'y a pas d'enregistrement associé dans la table manufacturer_product
Donc il faut afficher ça sous la forme d'un petit tableau, avec une case à cocher dans la première colonne, le nom du fabricant dans la deuxième, et un input texte pour le rôle dans la troisième.

Ensuite, pour l'enregistrement, il faudrait voir comment PS fait pour les catégories, parce qu'il y a une astuce :
Il faut donc créer un enregistrement pour chaque fabricant coché. Ca, c'est facile. Un petit INSERT IGNORE, et on peut même se passer de vérifier si l'enregistrement existe déjà. Mais là où ça se complique, c'est qu'il faut aussi supprimer les fabricants qui ont été décochés (enfin c'est pas les fabricants qu'on supprime, mais l'enregistrement dans la table manufacturer_product). Et pour ça, 2 solutions : soit on commence par les supprimer tous sans se poser de questions, puis on recréé ceux qui sont cochés, mais je trouve pas ça très propre. Ca va faire des tonnes de requêtes inutiles à chaque fois qu'on va enregistrer la fiche produit. La solution que j'utilise, qui est un peu plus compliquée, mais plus élégante à mon goût, est d'au moment de générer le formulaire, rajouter, pour chaque fabricant, 2 input hidden. Un qui est simplement rempli avec l'id du fabricant, et l'autre qui est mis à 1 quand le fabricant est coché au moment de l'affichage. De cette manière, au moment d'enregistrer, on boucle sur le premier hidden (on a pris soin de le nommer de façon à ce qu'ils arrivent tous dans un sous-tableau de $_POST), et on vérifie si l'enregistrement était coché à l'origine. Si oui, et qu'il ne l'est plus, on supprime, si oui et qu'il l'est encore, on se contente de faire une mise à jour du rôle, et si non et qu'il l'est, on fait un insert.
Alors le formulaire, ça donnerait ça :

>
echo "</pre>
<table>";
   echo "<input type='hidden' name='id[" . $fabricant->id ."]' value='" . $fabricant->id ."'>";
   echo "<input type='hidden' name='dejaCoche[" . $fabricant->id ."]' value='".($fabricant->role =="NULL" ? 0 : 1)."'>";
   echo "<input type='checkbox' name='coche[" . $fabricant->id ."]' value='1'>";
   echo "";
   echo $fabricant->nom;
   echo "";
   echo "<input type='text' name='role[" . $fabricant->id ."]' value='" . $fabricant->role ."'>";
   echo "</table>"




Bon comme je suis en train d'arriver au max de caractère par post, j'arrête là, et j'en profite pour demander si ce blabla est d'une quelconque utilité avant que je ne continue à décrire l'aspect frontend.

Link to comment
Share on other sites

Ca me parait pas mal.
Demain je te code une base pour le backend et la structure du module.
Ce sera un admin tab (ou deux en fait : un pour le listing, un pour editer une fiche)
Je ferais qu'une base mais au moins tu auras ça en presta et on verra si on peut avancer avec ce qu'on a.

Link to comment
Share on other sites

Ok, cool.
mais je ne comprends pas quelle fiche tu veux éditer dans le backend... Pour moi la liste suffit, dans la mesure où on peut cocher/décocher, et saisir le role dans un champ texte... Ensuite, l'édition des fiches fabricant se fait via l'admin PS classique.


Non tu as raison , il n'y a qu'une table à éditer.
Je me suis remémoré un cas récent ou j'avais du utiliser deux classes , ayant deux table editables...
Link to comment
Share on other sites

au fait, dans la table, j'ai gardé le champ position de la table categorie_produit, en me disant que ça pouvait être pratique de décider dans quel ordre s'affiche les différents auteurs d'un produit... Mais en même temps, je ne vois pas du tout comment ce champ est utilisé dans le backend des produits : apparemment, on ne peut pas choisir dans quel ordre s'affiche les catégorie d'un produit... le champ doit plutôt servir à indiquer l'inverse : dans quel ordre s'affiche un produit dans une catégorie...
Mais dans notre cas, c'est bien l'ordre d'affichage des fabricants sur la page produit qui serait intéressant. Et c'est un peu moins évident à mettre en place dans l'interface, ça. PS utilise du glisser-déposer, mais je suis pas sûr que le code soit facilement réutilisable... Donc éventuellement, à mettre de côté pour le moment, tout en sachant que ce sera quand même embêtant si le traducteur apparaît avant l'auteur...

Une autre chose qui me venait à l'esprit, c'est que si effectivement ce système est utilisable pour tous les cas de figure, de l'auteur à l'année, en passant par l'imprimeur, on ne voudra pas forcément les afficher tous en liste au même endroit sur la fiche produit. L'auteur, pas de problème, on veut qu'il apparaissent sous le nom du produit, comme le fabricant. Mais l'année de parution, ou le nom de l'imprimeur, on voudra sans doute que ça apparaissent un peu plus bas sur la fiche.
Donc je ne sais pas si y'a moyen de pouvoir choisir une position d'affichage dans la fiche produit... A ce moment là, il faudrait rajouter, à côté du champ rôle, un champ, heu... bon, position, c'est déjà utilisé, disons "emplacement", qui afficherait une liste des différents emplacements possibles sur la page produit...

Link to comment
Share on other sites

J'avoue ne pas tout comprendre à ce qui est pour moi un très joli mélange de Javanais et de Chinois, mais merci beaucoup de vous y être mis !

Juste une réflexion : il faudra que l'on puisse lister sur une page tous les auteurs, sur une autre tous les traducteurs, sur une autre tous les illustrateurs, sur une autre tous les éditeurs, sur une autre toutes les années, etc.
Dans le brouillard de ce que je déchiffre difficilement de la proposition de Matthieu, je n'arrive pas à déceler si cela sera possible ou non.

Link to comment
Share on other sites

Oui oui, c'est tout à fait possible, avec une requête comme ça :

SELECT m.id_manufacturer, m.name 
  FROM ps_manufacturer m 
  LEFT JOIN ps_manufacturer_product mp 
     ON mp.manufacturer_id = m.manufacturer_id
WHERE mp.role = "auteur"
GROUP BY m.manufacturer_id


il faut éventuellement le faire précéder par une requête pour récupérer la liste des différents rôles, cette liste étant affichée dans un module de menu, par exemple (je suppose que ça doit être possible en PS...)

Link to comment
Share on other sites

  • 3 weeks later...
  • 1 month later...

Bonjour à tous, je me suis mis sérieusement sur le développement de ce module selon le cahier des charges de Matthieu Brunet.

J'ai créé 3 tables au total : ps_productsauthors, ps_authors, ps_authors_role.
Pour faire simple, dans la première table on stocke autant d'auteurs et rôles que l'on veut pour chaque produit (table de correspondance simple : id_produit, id_auteur, id_role).

J'ai donc commencé le développement sur cette base. J'ai créé l'interface pour gérer les auteurs (onglet dans l'onglet catalogue) et maintenant pour gérer l'association produit/auteur/role, j'aimerais le faire par une interface dans la page d'admin d'ajout de produit.
Quand on ajoute un produit, j'aimerais un onglet ou un bloc dans l'onglet "infos" pour gérer les propriétés propres à mon module.
J'ai retourné le forum et internet, et je ne trouve pas le moyen de modifier cette page sans "hack", uniquement par les templates et modules.

Avez-vous une solution pour ça ? Ou vais-je devoir me retourner vers un onglet supplémentaire pour gérer les associations ?

Merci de votre aide !

Link to comment
Share on other sites

  • 3 weeks later...
  • 1 month later...

Allez hop, voici le plugin.

Il ajoute un élément "auteurs" dans le sous-menu Catalogue, dans lequel on peut créer des auteurs, créer des rôles, et affecter ces derniers à chacun des produits, avec du bel ajax.

Il faut juste ajouter

{$aff_authors}

dans product.tpl à l'endroit où vous voulez afficher les auteurs sur la page produit. Pour modifier la présentation, ça se passe dans la fonction hookextraLeft de productsauthors.php

Pour que la recherche prenne en compte les noms des auteurs, on a cherché un peu, mais c'est visiblement difficile sans toucher au coeur. Donc la seule solution, c'est de dupliquer l'information dans les caractéristiques.

 

Ce module a été développé par Fitiwizz selon mon cahier des charges. Je l'ai payé en freelance pour le faire, mais entre-temps, il a trouvé un emploi à plein temps, il risque donc de pas avoir beaucoup de temps pour continuer le boulot. Donc à nous de continuer sur cette base. Mais si on a des questions sur ce qu'il a fait, je pense qu'il pourra y répondre sur ce fil.

Ah tiens, on peut pas ajouter de rar, dans ce forum ? Bon, tant pis, voici un lien :

module_auteurs.rar

post-30617-0-61316600-1314108416_thumb.png

Link to comment
Share on other sites

Bonjour,

 

ce module semble répondre à mes besoins cependant je n'ai pas le même résultat que vous en pièce jointe, cf ma pièce jointe.

testé sur 2 versions la 1.4.4.0 et 1.4.4.1

les ajouts ne se font pas pourtant les tables sont bien créées est ce que vous pouvez m'aider?

post-19614-0-60634100-1314469318_thumb.jpg

Link to comment
Share on other sites

  • 2 months later...

Bonjour,

 

Je n'avais pas suivi trop ce thread que j'avais initié... Donc, j'ai mis en production le site en question il y a quelques mois.

 

J'ai une catégorie pour chaque auteur/traducteur et j'ai du ajouter et modifier un peu de code dans prestashop pour que ça fonctionne correctement.

 

Voici le résultat : http://www.solitairesintempestifs.com/

 

Je ne pense pas que ça soit trop "modulisable" pour le moment

Link to comment
Share on other sites

Désolé, je ne sais pas pourquoi, je n'étais pas abonné à ce thread, du coup, je n'avais pas vu vos questions.

J'ai justement bossé sur le plugin aujourd'hui, et effectivement, il y avait un problème au niveau des images. Une partie du code va encore les chercher dans /authors/img, alors qu'une autre partie va dans /img/authors

J'ai commencé à faire les corrections, mais je l'ai pas encore packagé. Voici donc simplement le dossier du module compressé. A remplacer directement via ftp.

productsauthors.zip

Link to comment
Share on other sites

Bonjour à tous,

Merci pour vos réponse et pour avoir suivi ce thread. J'ai remplacé le dossier directment sur le ftp mais je ne parviens toujours pas à avoir d'images...

Je comprends mieux yveswecan... je commençais à me demander pourquoi je n'arrivais pas à avoir un résultat similaire au tien avec ce module !!!

Merci en tout cas

Link to comment
Share on other sites

après, pour le faire apparaître en FO, il faut modifier le thème. Le plus simple serait de simplement greffer le module dans le bon hook, mais il n'y a pas vraiment de hook approprié pour afficher le nom de l'auteur juste sous le titre.

Du coup, pour ça, j'utilise ce plugin smarty, qui permet d'appeler n'importe quel plugin n'importe où sans se soucier des hook. Très pratique !

 

http://www.michel-courtade.com/2011/09/12/prestashop-1-4-marre-des-hooks-essayez-un-plugin/

Après, dans product.tpl, juste en dessous du titre, je rajoute

<div id="auteurs">{plugin module="productsauthors" hook="extraLeft"}</div>

Et dans product-list.tpl :

<span class="produit_auteur">{plugin module='productsauthors' hook='productList' args=$product}</span>

sachant que le hook productList ne retourne que le premier auteur.

 

Mais bon, dans l'ensemble, il faut avouer que ce module est loin d'être fonctionnel "out of the box". Il faut rentrer un peu dans le code.

Link to comment
Share on other sites

  • 6 months later...

Argh, depuis le temps que je recherche quelquechose comme ça...

Question à 100 balles, c'est gérable avec un import CSV, genre catégories (x,y,z) ?

 

Autre chose : la page modules/productsauthors/author.php?id_author=xxx affiche bien la description de l'auteur, mais pas ces produits.

L'array $travaux reste vide, quelqu'un a rencontré ce problème ?

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

  • 5 months later...

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...