Jump to content

[MOD V.0.04] Compte à rebours promotions sur page produit (product.tpl)


Recommended Posts

MOD Version : V.0.0.3 / Compatible 1.5RC

MOD Version : V.0.0.4 / Fix erreur dans l'attribution du mois.

 

Bonjour à tous,

 

Après quelques heures de travail et de recherche je suis heureux de vous faire profiter des fruits de mes résultats :)

LES ETAPES

  • Modification du mois serveur Français (ou autre) en anglais. (comme ci dessous exemple pour un seul mois). Ceçi est à l'origine de l'erreur NaN.


{if ($product->specificPrice.to|date_format:'%B') == 'janvier' or ($product->specificPrice.to|date_format:'%B') == 'januar'}
{assign var="month_counter" value="january"}
{/if}

  • Vérification que la promotion est toujours en cours à la seconde prête. Entre l'heure de paramétrage et l'heure serveur.

{if ($product->specificPrice.reduction) AND ($product->specificPrice.to|date_format:'%Y-%m-%d %H:%M:%S' >= $smarty.now|date_format:'%Y-%m-%d %H:%M:%S')}
........
{/if}

  • Paramétrage de l'affichage en correspondance avec la langue ISO utilisée par l'utilisateur lors de sa navigation.

{if $lang_iso == 'en'}
<script type="text/javascript" src="{$base_dir}js/jquery/jquery.countdown.js"></script>
{else}
<script type="text/javascript" src="{$base_dir}js/jquery/jquery.countdown.js"></script>
<script type="text/javascript" src="{$base_dir}js/jquery/jquery.countdown-{$lang_iso}.js"></script>
{/if}

 

LE RESULTAT

  • Un compteur fonctionnel sur la dernière version de PRESTASHOP.
  • La gestion multilingue (serveur & user).
  • Un fonctionnement simple et automatique (pas de gestion d'un module tiers pour gérer les promotions, exploite les fonctionnalités natives de prestashop).

>> VOIR LA PIECE JOINTE (capture.jpg) <<

 

1. Les pré-requis :

2. Copie des fichiers Jquery sur le serveur www :

 

Copier les fichiers présents dans le package Jquery.Countdown comme ci dessous.

 

*.css dans /prestashop/css/

*.js dans /prestashop/js/jquery/

 

3. Edition du fichier product.tpl et ajout du MOD :

 

Editer le fichier /prestashop/theme/$$Votre_Theme$$/product.tpl

 

Rechercher la ligne :

 

<p class="prodAttr">{l s='Reduced price!'}</p>
			<br class="clear" />
  {/if}

 

et la ligne :

 

  {if $packItems|@count}
<p class="pack_price">{l s='instead of'} <span style="text-decoration: line-through;">{convertPrice price=$product->getNoPackPrice()}</span></p>
<br class="clear" />
  {/if}

 

Ajouter le code suivant entre :

 


{* ----------------------- MOD PROMOTION COUNTDOWN START ----------------------- *}
{* Author : Fabian Osmond - [email protected]                              *}
{* Date   : July 2nd 2012                                                        *}
{* Enjoy this MOD for your favorite e-commerce script                            *}
{* MOD Version : V.0.0.4                                                         *}
{* ----------------------------------------------------------------------------- *}
{* Download the Jquery.Countdown : http://keith-wood.name/countdown.html         *}
{* ----------------------------------------------------------------------------- *}
{* Tested on : PrestaShop V.1.4.8                                                *}
{* Inspired modified and enhaced from :                                          *}
{* http://www.prestashop.com/forums/topic/62399-mod-reduction-price-countdown    *}
{* ----------------------------------------------------------------------------- *}

{* 1 - Format local server time to english month. You can put additional language like spanish or italian etc.. *}

{if ($product->specificPrice.to|date_format:'%B') == 'janvier' or ($product->specificPrice.to|date_format:'%B') == 'januar'}
{assign var="month_counter" value="january"}
{elseif ($product->specificPrice.to|date_format:'%B') == 'fevrier' or ($product->specificPrice.to|date_format:'%B') == 'februar'}
{assign var="month_counter" value="february"}
{elseif ($product->specificPrice.to|date_format:'%B') == 'mars' or ($product->specificPrice.to|date_format:'%B') == 'marz'}
{assign var="month_counter" value="march"}
{elseif ($product->specificPrice.to|date_format:'%B') == 'avril'}
{assign var="month_counter" value="april"}
{elseif ($product->specificPrice.to|date_format:'%B') == 'mai'}
{assign var="month_counter" value="may"}
{elseif ($product->specificPrice.to|date_format:'%B') == 'juin' or ($product->specificPrice.to|date_format:'%B') == 'juni'}
{assign var="month_counter" value="june"}
{elseif ($product->specificPrice.to|date_format:'%B') == 'juillet' or ($product->specificPrice.to|date_format:'%B') == 'juli'}
{assign var="month_counter" value="july"}
{elseif ($product->specificPrice.to|date_format:'%B') == 'aout'}
{assign var="month_counter" value="august"}
{elseif ($product->specificPrice.to|date_format:'%B') == 'septembre'}
{assign var="month_counter" value="september"}
{elseif ($product->specificPrice.to|date_format:'%B') == 'octobre' or ($product->specificPrice.to|date_format:'%B') == 'oktober'}
{assign var="month_counter" value="october"}
{elseif ($product->specificPrice.to|date_format:'%B') == 'novembre'}
{assign var="month_counter" value="november"}
{elseif ($product->specificPrice.to|date_format:'%B') == 'decembre' or ($product->specificPrice.to|date_format:'%B') == 'dezember'}
{assign var="month_counter" value="december"}
{else}
{assign var="month_counter" value="{$product->specificPrice.to|date_format:'%B'}"}
{/if}

{* 2 - Check if product is right now in promotion *}

{if ($product->specificPrice.reduction) AND ($product->specificPrice.to|date_format:'%Y-%m-%d %H:%M:%S' > $smarty.now|date_format:'%Y-%m-%d %H:%M:%S')}

{* 3 - Call the CSS and main JS file *}

<link rel="stylesheet" type="text/css" href="{$base_dir}css/jquery.countdown.css" />

{* 4 - Apply the JS and the correct JS language file for the countdown *}

{if $lang_iso == 'en'}
<script type="text/javascript" src="{$base_dir}js/jquery/jquery.countdown.js"></script>
{else}
<script type="text/javascript" src="{$base_dir}js/jquery/jquery.countdown.js"></script>
<script type="text/javascript" src="{$base_dir}js/jquery/jquery.countdown-{$lang_iso}.js"></script>
{/if}

{* 5 - Display the counter in the frontoffice *}

<br><div align="left"><b>{l s='Discount price until'} :</b></div><br>
<div id="reductioncountdown" style="overflow:auto;"></div>
<script type="text/javascript">
$("#reductioncountdown").countdown({ldelim}until: new Date('{$month_counter}{$product->specificPrice.to|date_format:' %e, %Y %H:%M:%S'}'){rdelim});

{* 6 - End of the script *}

</script>
{/if}
{* ------------------------ MOD PROMOTION COUNTDOWN END ------------------------ *}

 

Enregistrez le document.

 

4. Traduction de langue :

 

Rendez vous dans l'administration / Outils / Traduction.

Dans "Traduction du Front Office"

Cliquez sur le drapeau de votre langue.

Traduisez les expression nécessaires (Famille: Product Expression).

 

5. Votre compteur est actif si dans l'administration du produit / prix vous opérer à un discount.

 

 

 

 

 

 

 

 

 

SPECIAL REQUEST

  • Je souhaite faire afficher le compteur dans product-list.tpl est ce que quelqu'un pourrait participer avec moi à cette evolution ?
  • Idem pour l'affichage du compteur dans le bloc Promotion.
  • Je recherche un module PAYBOX gratuit et sécurisé, votre aide sera la bienvenue en remerciement de ce petit MOD :wub:

En esperant que ce MOD vous apportera toute l'aide nécessaire.

 

Bonne continuation.

 

Fabian Osmond

post-13511-0-87032400-1341224797_thumb.jpg

Reduction_price_countdown_product.txt

Edited by FABIAN (see edit history)
  • Like 1
Link to comment
Share on other sites

  • 3 weeks later...

Bonjour Fabian,

 

Un grand merci pour ce travail bien sympa.

 

J'ai toutefois constaté un petit bug. Faisant des essais avec la date limite au mois d'août, ça ne fonctionnait pas...ce qui m'a fait cogiter un petit moment...jusqu'à ce que j'essaye avec les mois suivants. Et là miracle, ça fonctionne nickel !

 

donc le problème venait du mois d'août, qui s'écrit avec un accent circonflexe.

Il faut donc ajouter cet accent sur la ligne {elseif ($product->specificPrice.to|date_format:'%B')=='aout'}

 

Voilà pour ma petite contribution à cette super amélioration pour mon site

 

Note : je suis en version 1.4 de prestashop, donc pour ceux qui voudrait en profiter avec cette version, ça fonctionne

Link to comment
Share on other sites

  • 4 weeks later...

Bonjour,

 

Test sur la 1.5.0.15, fonctionne très bien. J'ai copié les fichiers jquery.countdown-*.js dans js/jquery.

 

Pour le module Paybox, à part celui que l'on peut trouver sur le forum, ici, rien en vue pour le moment.

 

Merci pour ce mod.

 

Cdlt,

Philippe

Link to comment
Share on other sites

  • 1 month later...

MOD Version : V.0.0.3 / Compatible 1.5RC

MOD Version : V.0.0.4 / Fix erreur dans l'attribution du mois.

 

Bonjour à tous,

 

Après quelques heures de travail et de recherche je suis heureux de vous faire profiter des fruits de mes résultats :)

LES ETAPES

  • Modification du mois serveur Français (ou autre) en anglais. (comme ci dessous exemple pour un seul mois). Ceçi est à l'origine de l'erreur NaN.

{if ($product->specificPrice.to|date_format:'%B') == 'janvier' or ($product->specificPrice.to|date_format:'%B') == 'januar'}
{assign var="month_counter" value="january"}
{/if}

  • Vérification que la promotion est toujours en cours à la seconde prête. Entre l'heure de paramétrage et l'heure serveur.

{if ($product->specificPrice.reduction) AND ($product->specificPrice.to|date_format:'%Y-%m-%d %H:%M:%S' >= $smarty.now|date_format:'%Y-%m-%d %H:%M:%S')}
........
{/if}

  • Paramétrage de l'affichage en correspondance avec la langue ISO utilisée par l'utilisateur lors de sa navigation.

{if $lang_iso == 'en'}
<script type="text/javascript" src="{$base_dir}js/jquery/jquery.countdown.js"></script>
{else}
<script type="text/javascript" src="{$base_dir}js/jquery/jquery.countdown.js"></script>
<script type="text/javascript" src="{$base_dir}js/jquery/jquery.countdown-{$lang_iso}.js"></script>
{/if}

 

LE RESULTAT

  • Un compteur fonctionnel sur la dernière version de PRESTASHOP.
  • La gestion multilingue (serveur & user).
  • Un fonctionnement simple et automatique (pas de gestion d'un module tiers pour gérer les promotions, exploite les fonctionnalités natives de prestashop).

>> VOIR LA PIECE JOINTE (capture.jpg) <<

 

1. Les pré-requis :

2. Copie des fichiers Jquery sur le serveur www :

 

Copier les fichiers présents dans le package Jquery.Countdown comme ci dessous.

 

*.css dans /prestashop/css/

*.js dans /prestashop/js/jquery/

 

3. Edition du fichier product.tpl et ajout du MOD :

 

Editer le fichier /prestashop/theme/$$Votre_Theme$$/product.tpl

 

Rechercher la ligne :

 

<p class="prodAttr">{l s='Reduced price!'}</p>
			<br class="clear" />
  {/if}

 

et la ligne :

 

  {if $packItems|@count}
<p class="pack_price">{l s='instead of'} <span style="text-decoration: line-through;">{convertPrice price=$product->getNoPackPrice()}</span></p>
<br class="clear" />
  {/if}

 

Ajouter le code suivant entre :

 


{* ----------------------- MOD PROMOTION COUNTDOWN START ----------------------- *}
{* Author : Fabian Osmond - [email protected]							  *}
{* Date   : July 2nd 2012														*}
{* Enjoy this MOD for your favorite e-commerce script							*}
{* MOD Version : V.0.0.4														 *}
{* ----------------------------------------------------------------------------- *}
{* Download the Jquery.Countdown : http://keith-wood.name/countdown.html		 *}
{* ----------------------------------------------------------------------------- *}
{* Tested on : PrestaShop V.1.4.8												*}
{* Inspired modified and enhaced from :										  *}
{* http://www.prestashop.com/forums/topic/62399-mod-reduction-price-countdown	*}
{* ----------------------------------------------------------------------------- *}

{* 1 - Format local server time to english month. You can put additional language like spanish or italian etc.. *}

{if ($product->specificPrice.to|date_format:'%B') == 'janvier' or ($product->specificPrice.to|date_format:'%B') == 'januar'}
{assign var="month_counter" value="january"}
{elseif ($product->specificPrice.to|date_format:'%B') == 'fevrier' or ($product->specificPrice.to|date_format:'%B') == 'februar'}
{assign var="month_counter" value="february"}
{elseif ($product->specificPrice.to|date_format:'%B') == 'mars' or ($product->specificPrice.to|date_format:'%B') == 'marz'}
{assign var="month_counter" value="march"}
{elseif ($product->specificPrice.to|date_format:'%B') == 'avril'}
{assign var="month_counter" value="april"}
{elseif ($product->specificPrice.to|date_format:'%B') == 'mai'}
{assign var="month_counter" value="may"}
{elseif ($product->specificPrice.to|date_format:'%B') == 'juin' or ($product->specificPrice.to|date_format:'%B') == 'juni'}
{assign var="month_counter" value="june"}
{elseif ($product->specificPrice.to|date_format:'%B') == 'juillet' or ($product->specificPrice.to|date_format:'%B') == 'juli'}
{assign var="month_counter" value="july"}
{elseif ($product->specificPrice.to|date_format:'%B') == 'aout'}
{assign var="month_counter" value="august"}
{elseif ($product->specificPrice.to|date_format:'%B') == 'septembre'}
{assign var="month_counter" value="september"}
{elseif ($product->specificPrice.to|date_format:'%B') == 'octobre' or ($product->specificPrice.to|date_format:'%B') == 'oktober'}
{assign var="month_counter" value="october"}
{elseif ($product->specificPrice.to|date_format:'%B') == 'novembre'}
{assign var="month_counter" value="november"}
{elseif ($product->specificPrice.to|date_format:'%B') == 'decembre' or ($product->specificPrice.to|date_format:'%B') == 'dezember'}
{assign var="month_counter" value="december"}
{else}
{assign var="month_counter" value="{$product->specificPrice.to|date_format:'%B'}"}
{/if}

{* 2 - Check if product is right now in promotion *}

{if ($product->specificPrice.reduction) AND ($product->specificPrice.to|date_format:'%Y-%m-%d %H:%M:%S' > $smarty.now|date_format:'%Y-%m-%d %H:%M:%S')}

{* 3 - Call the CSS and main JS file *}

<link rel="stylesheet" type="text/css" href="{$base_dir}css/jquery.countdown.css" />

{* 4 - Apply the JS and the correct JS language file for the countdown *}

{if $lang_iso == 'en'}
<script type="text/javascript" src="{$base_dir}js/jquery/jquery.countdown.js"></script>
{else}
<script type="text/javascript" src="{$base_dir}js/jquery/jquery.countdown.js"></script>
<script type="text/javascript" src="{$base_dir}js/jquery/jquery.countdown-{$lang_iso}.js"></script>
{/if}

{* 5 - Display the counter in the frontoffice *}

<br><div align="left"><b>{l s='Discount price until'} :</b></div><br>
<div id="reductioncountdown" style="overflow:auto;"></div>
<script type="text/javascript">
$("#reductioncountdown").countdown({ldelim}until: new Date('{$month_counter}{$product->specificPrice.to|date_format:' %e, %Y %H:%M:%S'}'){rdelim});

{* 6 - End of the script *}

</script>
{/if}
{* ------------------------ MOD PROMOTION COUNTDOWN END ------------------------ *}

 

Enregistrez le document.

 

4. Traduction de langue :

 

Rendez vous dans l'administration / Outils / Traduction.

Dans "Traduction du Front Office"

Cliquez sur le drapeau de votre langue.

Traduisez les expression nécessaires (Famille: Product Expression).

 

5. Votre compteur est actif si dans l'administration du produit / prix vous opérer à un discount.

 

 

 

 

 

 

 

 

 

 

SPECIAL REQUEST

  • Je souhaite faire afficher le compteur dans product-list.tpl est ce que quelqu'un pourrait participer avec moi à cette evolution ?
  • Idem pour l'affichage du compteur dans le bloc Promotion.
  • Je recherche un module PAYBOX gratuit et sécurisé, votre aide sera la bienvenue en remerciement de ce petit MOD :wub:

En esperant que ce MOD vous apportera toute l'aide nécessaire.

 

Bonne continuation.

 

Fabian Osmond

 

Hi, do you have the instruction in English? Sorry I can't read and understand France's language. Where can I download MOD V.0.0.4? Thank you!

Link to comment
Share on other sites

  • 1 month later...
  • 2 weeks later...

alors finalement ça marche pour moi, depuis novembre trankil sauf que là depuis decembre j'ai une erreur Nan

 

ça vien de cette ligne

 

{elseif ($product->specificPrice.to|date_format:'%B') == 'decembre' or ($product->specificPrice.to|date_format:'%B') == 'dezember'}

{assign var="month_counter" value="december"}

 

il trouve que la condition n'est pas correct

du coup quand je fait un {($product->specificPrice.to|date_format:'%B')} pour afficher le résultat il m'affiche décembre ce qui est logique j'ai donc modifié la condition

 

{elseif ($product->specificPrice.to|date_format:'%B') == 'décembre' or ($product->specificPrice.to|date_format:'%B') == 'dezember'}

{assign var="month_counter" value="december"}

 

mais toujour ça marche pas :s

 

du coup j'ai utilisé le systme D pour ce mois j'ai assigné cache la valeur decembre à la variable month_counter sans passer par les conditions

 

pour le moment ça marche mais une fois janvier est là faut que je remet tous comme avant

quelqu'un a une solution plus propore a ce problème?

{assign var="month_counter" value="december"}

  • Like 1
Link to comment
Share on other sites

Tu dis que c'est la ligne {elseif ($product->specificPrice.to|date_format:'%B') == 'decembre' or ($product->specificPrice.to|date_format:'%B') == 'dezember'}

{assign var="month_counter" value="december"}

qui est en erreur,

elle provient de quel fichier que je regarde de mon côté aussi, merci !

Link to comment
Share on other sites

Chez moi ça marche en mettant ce code:

 

{elseif ($product->specificPrice.to|date_format:'%B') == 'décembre' or ($product->specificPrice.to|date_format:'%B') == 'dezember'}

{assign var="month_counter" value="december"}

 

J'espere que ça sera de meme pour vous ;) et merci a vous tous pour cet entraide.

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

  • 1 month later...

coucou

 

j'ai résolu le problème en améliorant un module existant mais je déclare $month_counter dans le fichier php au lieu du tpl et je recupère le date format "%m" au lieu de date_format "%B"

 

ce qui me donne le numéro du mois 1/2/3/.../12 ce qui est plus pratique car Multilingue

 

apres j'assigne $month_counter suivant le numero 1=Jaunary 2=February etc... plus de problème avec les accents

 

le module est la :

 

http://www.prestasho...ost__p__1090423

 

@++

 

loulou66

Edited by loulou66 (see edit history)
  • Like 1
Link to comment
Share on other sites

  • 2 weeks later...
Guest
This topic is now closed to further replies.
×
×
  • Create New...