Quantcast
Channel: Prestashop Trucs & Astuces
Viewing all articles
Browse latest Browse all 45

Remettre un produit en nouveauté dans Prestashop

$
0
0

Dans Prestashop le module nouveautés, affiché en homepage ou bien dans un bloc est très pratique… seulement le comportement automatique ne permet pas d’influencer si un produit est nouveau ou non.

Nouveautés sous Prestashop

Un problème récurrent

Dans le back-office de Prestashop sous la partie « Préférences -> Produits », il est possible de définir le nombre de jours qu’il faut considérer un produit comme « nouveau ». Le problème c’est que lorsque vous créez des produits à l’avance, ceux-ci ne seront peut-être plus tolérés comme « nouveau » lors de leur activation. On retrouve le même problème si on crée plusieurs produits similaires, dans les nouveautés, on se retrouve ensuite avec X fois le même produit sans pouvoir alterner l’affichage ce qui n’est pas très vendeur.

Cette option n'est pas suffisante, car il faudrait idéalement pouvoir modifier le champ date d'ajout du produit.

Cette option n’est pas suffisante, car il faudrait idéalement pouvoir modifier le champ date d’ajout du produit.

La solution

La première consiste à dupliquer le produit pour actualiser le champ « date_add », mais ce n’est pas très pratique comme solution et cela risque d’occasionner d’autres problèmes à la longue. L’idéal est donc d’ajouter un nouveau champ dans la fiche produit, afin de pouvoir administrer la date et pouvoir donc positionner le produit en fonction de la date donnée.

Pour cela modifiez le fichier « \admin\themes\default\template\controllers\products\informations.tpl » et juste avant le code ci-dessous (vers la ligne 189) :

<hr/>
{* status informations *}

Ajoutez le code suivant

 {* Webbax - 04.11.15 - date ajout produit *}
        <style>
            {literal}
                #ui-datepicker-div{z-index:1000!important;}
            {/literal}
        </style>
        <script type="text/javascript">
            {literal}
               $(function(){
                   $('#date_add').datepicker({dateFormat:'yy-mm-dd'});
               });
            {/literal}
        </script>
        <div class="form-group">
             <label class="control-label col-lg-3" for="date-creation">
                 <span class="label-tooltip" data-toggle="tooltip"
                         title="{l s="Date d\'ajout"}">
                         {$bullet_common_field} {l s="Date d\'ajout"}
                 </span>
             </label>
             <div class="col-lg-3">
                 <input maxlength="12" type="text" id="date_add" name="date_add" value="{$product->date_add|htmlentitiesUTF8|date_format:'%Y-%m-%d'}" />
             </div>
        </div>
        <hr/>
{* -- *}

Ensuite, si vous accédez à votre fiche produit, vous pourrez constater l’apparition d’un nouveau champ, avec la possibilité d’éditer la date.

Cela semble tellement évident d'avoir ce champ éditable en natif... peut-être dans une prochaine version de Prestashop ?

Cela semble tellement évident d’avoir ce champ éditable en natif… peut-être dans une prochaine version de Prestashop ?

Quelque chose m’échappe…

Vous remarquerez qu’on a édité seulement la partie « template » de l’administration et pourtant la mise à jour des données fonctionne, sans pour autant devoir modifier des requêtes ou les processus qui sauvent / éditent le produit. Pourquoi ? Parce qu’il y’a un comportement magique dans Prestashop, qui va récolter automatiquement les valeurs des champs portant le nom du « Modèle de données » on aurait donc pu faire cela aussi avec « date_add » par exemple.

La méthode CopyFromPost du fichier AdminController est l'explication du pourquoi ça fonctionne sans coder le "sauvegardage des données".

La méthode CopyFromPost du fichier AdminController est l’explication du pourquoi ça fonctionne sans coder le « sauvage des données ».

Bilan

Finalement, cette date d’ajout c’est un peu comme « une date de publication », il n’est pas rare d’avoir des clients qui veulent influencer l’affichage des nouveautés. On retrouve cette problématique par exemple pour les « meilleures ventes », on aimerait plutôt mettre des produits définis par « nos soins », plus pertinent en fonction du stock et de la tendance… que sur le contenu des commandes effectuées. Bonne intégration à tous !


Viewing all articles
Browse latest Browse all 45

Trending Articles