Jump to content

[Résolu] Création d'un module pour mes articles d'occasion


Recommended Posts

voilà je rebondis sur la remarque de jeckyl qui me disait qu'on ne voit pas assez du 1er coup d'oeil quels sont les produits d'occasion.

je me demande s'il serait possible de créer un module basé sur le même fonctionnement que les "nouveaux produits" et du coup d'y ajouter un macaron "occasion" directement sur la vignette.
seul petit souci peut être c'est qu'il faudrait presque ajouter un champ dans les pages produits pour pouvoir ajouter par exemple "occasion"

voilà je me demande si c'est faisable? si ca couterait cher etc...
merci

Link to comment
Share on other sites

Si tu n'utilises jamais les soldes, tu peux détourner le flag 'En solde'

En BO, tu coches 'en solde' si c'est un produit d'occasion
En FO, tu modifies les tpl pour rempalcer le macaron 'En soldes' par 'Occasion'

Link to comment
Share on other sites

J'adore cette solution.

Par contre bloquante pour les soldes.

On peut aussi utiliser une caractéristique que l'on défini à occasion ou neuf.
On peut alors la récupérer et la faire apparaitre de la forme que l'on souhaite sur la fiche produit.

Link to comment
Share on other sites

Ou sinon il suffit de créer une icone "promotion" en plus de l'icone "soldes" et appeler cette icone lorsqu'une réduction est appliquée au produit.

Cela permet de conserver l'icone "soldes" lorsque l'on coche la case "Affiche "en solde" en icone sur la page produit ainsi qu'en texte sur les pages catégories"

Link to comment
Share on other sites

  • 2 weeks later...

bonjour, en fait c'est pas aux réductions que je veux ajouter un macaron c'est à des produits d'occasion
ca implique de créer un champ Occasion ou n'importe (ca peut peut être être utilisé pour d'autres secteurs)
dans la fiche article et ensuite d'y appliquer la même chose que pour les soldes.

mais ca je ne sais pas le faire, sinon je ne demanderai pas.

Link to comment
Share on other sites

ok et juste dernière info ou est ce que je peux trouver le code pour le macaron? dans product.tpl ou peut être adminproduct, je ne sais pas du tout?

et ce code que tu m'as donné il faut que je le mette dans quel fichier? le même que la ou y a le code du macaron solde a mon avis non?

Link to comment
Share on other sites

Perso j'ai un client qui veut environ 70 déclinaisons de solde.

Il veut pouvoir mettre "-60%" , "-50%", "Solde d'été", etc

Aucun module n'est dispo pour faire ce genre de chose? (j'en ai pas vu encore en cherchant pas mal)

Link to comment
Share on other sites

Perso j'ai un client qui veut environ 70 déclinaisons de solde.

Il veut pouvoir mettre "-60%" , "-50%", "Solde d'été", etc

Aucun module n'est dispo pour faire ce genre de chose? (j'en ai pas vu encore en cherchant pas mal)


Bonjour,

Pour ce genre de chose c'est un simple développement qui sélectionne la bonne image en fonction de la réduction enregistrée.

Ainsi pour 60% de réduction cela ira chercher l'image 60.png.
Link to comment
Share on other sites

Oui, pour ça je suis d'accord... mais j'ai une liste qui donne des choses comme :

Soldes, soldes -20%, soldes -30%, soldes -40% soldes -50%, soldes -60%, -20%, -30%, -40%, -50%, -60% Fin de série, Prix lancement, Promotion, Série limitée, Nouveauté, Idée cadeau, Meilleures ventes, Fête des pères, Fête des mères, Fête des grand mère, 100% original


Du coup plus question de passé par le pourcentage de réduction.... il faut pouvoir spécifié le texte à un endroit...

Link to comment
Share on other sites

  • 2 weeks later...
euh pour en revenir à mon pb d'articles d'occase, je veux bien faire les modifs moi même mais je sais aps du tout ou trouver les données? est ce qu'une bonne ame peut m'indiquer un peu plus ou chercher?

merci


Tu devrais trouver les informations que tu cherches dans les *.tpl de ton thème.

Si c'est dans la liste des produits que tu souhaites ajouter ton "fanion" occasion, c'est surement product-list.tpl
Link to comment
Share on other sites

Bon j'ai trouvé ca dans product.tpl:

{if $product->on_sale}

{l s='On sale!'}


du coup je me suis dit que je pouvais tenter de recopier cela mais en changeant l'image et la condition j'ai donc ajouté cela:

{if $product->id_category == 2}

{l s='occasion!'}
{/if}


dans le div "pb-left column"

mais ca ne fonctionne pas, est ce qu'il faut changer qq chose ou ajouter autre chose dans un autre fichier?

merci d'avance de vos réponses.

Link to comment
Share on other sites

  • 2 weeks later...

Pour l'affichage d'un macaron occasion, il faut faire comme pour les soldes, la modification est à faire dans 4 fichiers

AdminProducts.php : rechercher toutes lignes de code parlant de on_sale
le block contenant la première ligne trouvée doit être remplacé par

$object->on_sale = (!isset($_POST['on_sale']) ? false : true);
$object->second_hand = (!isset($_POST['second_hand']) ? false : true);



le deuxième block doit être remplacé par :

 

       <input type="checkbox" name="on_sale" id="on_sale" style="padding-top: 5px;" '.($this->getFieldValue($obj, 'on_sale') ? 'checked="checked"' : '').'value="1" /> '.$this->l('Display "on sale" icon on product page and text on product listing').'



 

       <input type="checkbox" name="second_hand" id="second_hand" style="padding-top: 5px;" '.($this->getFieldValue($obj, 'second_hand') ? 'checked="checked"' : '').'value="1" /> '.$this->l('Display "second hand" icon on product page and text on product listing').'



Product.php
rechercher de même on_sale
et rempalcer le premier block trouvé par

/** @var boolean on_sale */
public         $on_sale = false;

/** @var boolean second_hand */
public         $second_hand = false;



la deuxième ligne trouvée doit être remplacée par

'on_sale' => 'isBool',
'second_hand' => 'isBool',



la troisième ligne trouvée :

$fields['on_sale'] = intval($this->on_sale);
$fields['second_hand'] = intval($this->second_hand);



product-list.tpl

après le block

{if $product.on_sale}
{l s='On sale!'}
{elseif ($product.reduction_price != 0 || $product.reduction_percent != 0) && ($product.reduction_from == $product.reduction_to OR ($smarty.now|date_format:'%Y-%m-%d' <= $product.reduction_to && $smarty.now|date_format:'%Y-%m-%d' >= $product.reduction_from))}
{l s='Price lowered!'}
{/if}


ajouter :

{if $product.second_hand}
{l s='Second hand!'}
{/if}



product.tpl

après le block

{if $product->on_sale}

{l s='On sale!'}
{elseif ($product->reduction_price != 0 || $product->reduction_percent != 0) && ($product->reduction_from == $product->reduction_to OR ($smarty.now|date_format:'%Y-%m-%d' <= $product->reduction_to && $smarty.now|date_format:'%Y-%m-%d' >= $product->reduction_from))}
{l s='Price lowered!'}
{/if}



ajouter le block

{if $product->second_hand}

{l s='Second hand!'}
{/if}




Il faut également ajouter un champ dans la table xx_product : second_hand tinyint(1) UNSIGNED default 0
En fait c'est une copie du champ on_sale de cette même table mais avec le nom second_hand !

après la seule chose qui reste à faire c'est de créer l'image Occasion au format png et la mettre sous le nom themes/prestashop/img/second_hand_fr.png mais ça je ne sais pas le faire !

Voilà! avec ça le comportement est identique au macaron "soldes" c'est à dire une case à cocher dans le produit lors de sa création ou sa modification.

Link to comment
Share on other sites

je viens de tester et ca fonctionne!! merci mille fois! :-)
juste une dernière question (oui je sais j'abuse) pour la trad vers le francais, je modifie ou?
j'ai regardé le fichier fr.php et j'ai trouvé ca:
$_LANG['product-list_800e90e940e7f1fb938b0fda5137f38c'] = 'En solde !';

j'imagine qu'il faut faire pareil mais il faudrait que je sache quoi mettre entre les crochets (après product-list...)
a quoi correspond ce code?

encore merci

Link to comment
Share on other sites

  • 1 month later...

Bonjour,

AdminProducts se trouve dans l'ancien répertoire admin (que vous avez du renommer apres l'install) dans le sous répertoire tabs
Product.php se trouve dans le répertoire classes à la racine du site
product.tpl et product-list.tpl se trouve dans themes/prestashop

Voilà !

Link to comment
Share on other sites

Le mieux est d'utiliser PHMyAdmin pour administrer ta base de données et accéder à la table xx_product (où xx est le préfixe que tu as indiqué lors de l'installation de ta base de données) mais si tu ne sais pas t'en servir je te conseille de ne rien faire ! ça évite de faire des bétises Ou alors fais plein de tests en te basant sur la doc de phpMyAdmin et en faisant ça sur une base de test dédiée.

Link to comment
Share on other sites

Ok merci pour l'info.
Et c'est vraiment si compliqué que ça ?
Car la il ne me manque que la dernière modif :/

Et du coup avec les autres réalisées, mais sans celle ci, je ne peux plus updater mes fiches produits ( je peux annuler les modifs déjà faites mais ça serait dommage)

désolé d'être insistant :/

merci d'avance

Link to comment
Share on other sites

En fait c'est juste que c'est pas facile à expliquer par écrit dans un forum: l'idée principale est d'ajouter une colonne second_hand à la table xx_product avec des attributs identiques à ceux de la colonne on_sale.

La façon de faire peut varier en fonction de ce qui est installé sur ton serveur mais moi j'utilise phpMyAdmin pour administrer mes bases de données MySQL.

Je ne peux guère t'aider plus, à toi de voir si tu te sens capable de modifier la structure de ta table. Si tu ne t'en sens pas capable je ne peux que t'enjoindre à ne pas le faire.

Link to comment
Share on other sites

Re
J'ai réussi à faire la modif qui marche sans problème.

Cependant, j'aimerai , sur le même modèle,

1: mettre le logo " à venir" comme cela se passe avec le logo "occasion".
2:ajouter le texte sur la page produit " possibilité de réserver le produit XXX par mail à [email protected]"

J'ai donc tenter de faire exactement les mêmes modif en copiant/ajoutant les morceaux de codes en remplaçant à chaque fois " second_hand" par "coming_soon"(+création du champ dans la table xx_product) mais cela ne marche pas.

(quand je colle les fichiers modifiés je n'ai plus accès à mon catalogue en BO et le site affiche page blanche en FO)

Quelqu'un pourrait-il m'indiquer où je fais fausse route ?
Ainsi que comment réaliser la modif 2 ?

Merci d'avance

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