Jump to content

[resolu] comment changer la date création produits?(pour nouveau)


Recommended Posts

Bonjour,

pour préparer les produits futur de ma boutique je créer mes produits a l'avance, puisque je marche par saison!!

Le souci est que quand j'active mes produits ils ne sont pas forcément dans le module nouveauté !!

Y a t'il un moyen de changer la date de création du produit ( à la date de l'activation) sans passer par phpadmin?

merci de vos infos
eric

Link to comment
Share on other sites

Bonjour,

Peut-être une solution plus simple mais aussi plus limite:
Dans le BO/Préférences/Produits, changer la valeur des jours dans :Nombre de jours durant lesquels un produit est considéré comme "nouveau"

Cordialement.

Domido8

Link to comment
Share on other sites

Alors date_add c'est la date à laquelle tu as ajouté le produit et date_upd c'est la date de la dernière modification de ton produit (mise à jour de la description, changement d'une photo, etc...)
La date à changer est date_add puisque c'est cette date qui est prise en compte pour les nouveautés.

Link to comment
Share on other sites

Salut,

J'ai une autre proposition pour réafficher des produits déjà créés dans la partie "nouveaux produits".

En fait, les nouveaux produits sont sélectionnés d'après la date de création "dat_add". Il faudrait simplement qu'ils soient sélectionnés d'après la date de mise à jour "date_upd".
Pour se faire, ouvrer le fichier : classes/Product.php

Environ aux alentours de la ligne 1020 (dans la partie " Get new products"), modifiez :

WHERE p.`active` = 1
AND DATEDIFF(p.`date_add`, DATE_SUB(NOW(), INTERVAL '.(Validate::isUnsignedInt(Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) ? Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20).' DAY)) > 0
AND (cg.`id_customer` = '.intval($cookie->id_customer).' OR ctg.`id_group` = 1)


Par :

WHERE p.`active` = 1
AND DATEDIFF(p.`date_upd`, DATE_SUB(NOW(), INTERVAL '.(Validate::isUnsignedInt(Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) ? Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20).' DAY)) > 0
AND (cg.`id_customer` = '.intval($cookie->id_customer).' OR ctg.`id_group` = 1)



Il ne reste plus qu'à réactualiser 1 par 1 les produits que vous voudrez réaffecter en tant que "nouveau produit", dans le backoffice.

J'espère que ça aide ...

Link to comment
Share on other sites

Bonjour manuphi,

effectivement c'est très intéressant, mais pour que cela soit valable
il faudrait que quand on enlève une déclinaison le produit ne soit pas considéré comme nouveau!!

je m'explique, je vends des chaussure, si j'enlève une pointure qui n'est plus dispo,

la date de mise à jour change-elle? si oui ta solution n'est pas intéressante!!
Par contre si la date de mise a jour ne change que si je modifie le texte de description, là oui c'est très intéressant!!

si quelqu'un à la réponse?

Link to comment
Share on other sites

Tout à fait raison Eric69, si tu changes le moindre truc dans la fiche produit, la date de mise à jour change et donc, avec ma solution, le produit passe dans les nouveautés.

Ma solution n'est pas la panacée, je m'en rends compte, mais ça évite au moins d'aller trifouiller la base de données à chaque fois qu'on souhaite passer un produit en nouveauté.

Il est évident que le mieux serait d'avoir genre une case à cocher "nouveau produit" dans la fiche produit. Pour cela, il faut demander à l'équipe prestashop ... ;-)

Link to comment
Share on other sites

  • 4 months later...

Bonjour,

Vous pouvez modifier AdminProducts.php en back office autour de la ligne 1440 en fonction des versions. Répercussion qu'il faut re implémenter après une mise à jour.

';
                   /* Modif coeur + date_add */
                   echo'
'.$this->l('Date add:').'

                           <input size="22" type="text" id="date_add" name="date_add" type="text" value="'.htmlentities($this->getFieldValue($obj, 'date_add'), ENT_COMPAT, 'UTF-8').'"



Cordialement,

Link to comment
Share on other sites

  • 4 months later...
  • 1 month later...
  • 2 weeks later...
Bonjour,

Vous pouvez modifier AdminProducts.php en back office autour de la ligne 1440 en fonction des versions. Répercussion qu'il faut re implémenter après une mise à jour.

';
                   /* Modif coeur + date_add */
                   echo'
'.$this->l('Date add:').'

                           <input size="22" type="text" id="date_add" name="date_add" type="text" value="'.htmlentities($this->getFieldValue($obj, 'date_add'), ENT_COMPAT, 'UTF-8').'"



Cordialement,



Tu peux expliquer plus stp ?
Link to comment
Share on other sites

  • 2 years later...

Encore un post déterré !

Je vous propose ici ma solution pour afficher et modifier la date d'ajout d'un produit (pour gérer les nouveautés) sur un PS 1.5.4

Il faut modifier le fichier suivant (et même l'overrider pour bien faire) :

VOTRE_DOSSIER_ADMIN\themes\default\template\controllers\products\informations.tpl

 

A partir de la ligne 155 (ca peut-être ailleurs) j'ai rajouté les lignes suivantes :

 

<tr>
<td class="col-left"><label>{$bullet_common_field} {l s='Date Nouveauté :'}</label></td>
<td style="padding-bottom:5px;">
<input size="55" maxlength="12" type="text" id="date_add" name="date_add" value="{$product->date_add|htmlentitiesUTF8|date_format:'%Y-%m-%d'}" style="width: 150px; margin-right: 5px;" class="updateCurrentText" />
</td>
</tr>

 

Et pour le côté friendly de la gestion de la date on rajoute le code suivant (gestion du datepicker) tout en haut de la page :

 

<script type="text/javascript">
{literal}
	$(function(){
			$('#date_add').datepicker({
				dateFormat:'yy-mm-dd'
			});
	});
{/literal}
</script>

 

Note : Pour plus de simplicité (et parce que je n'ai pas le temps de faire plus) j'ai laissé le format de la date comme il est configuré dans la base de données (datetime : yyyy-mm-dd mais sans les heures,minutes et secondes)

  • Like 4
Link to comment
Share on other sites

  • 1 month later...
  • 10 months later...
  • 2 months later...

Bonjour,

Je sais que ce topic est marqué résolu cependant j'avais tout de même une question.

 

La méthode de Chourak fonctionne aussi en 1.6.0.5, cela dit elle engendre un chargement très long dans le backoffice sur la page produit, quelqu'un a-t'il une idée d'ou ce ralentissement peut provenir ? j'ai essayé en enlevant le datepicker mais ça ne semble pas venir de la.

Link to comment
Share on other sites

  • 2 months later...

Voici ce que j'ai ajouté à mon  PrestaShop™ 1.6.0.9 - et la page de back-office est crée en  0.364s. Ça marche pour le moment.

 30 <!-- dirty date_add hack--> 31 <script type="text/javascript">
 32 {literal}
 33                 $(function(){
 34                                 $('#date_add').datepicker({
 35                                         dateFormat:'yy-mm-dd'
 36                                 });
 37                 });
 38 {/literal}
 39 </script>
 40 <!-- end  dirty date_add hack-->
 200 <!-- dirty date hack - -->201         <div class="form-group">
202                 <label class="control-label col-lg-3" for "date-creation">
203                         <span class="label-tooltip" data-toggle="tooltip"
204                                 title="{l s='Changement de date pour entrer dans la catégorie nouveautés.'}">
205                                 {$bullet_common_field} {l s='Date Nouveauté'}
206                         </span>
207                 </label>
208                 <div class="col-lg-3">
209                         <input  maxlength="12" type="text" id="date_add" name="date_add" value="{$product->date_add|htmlentitiesUTF8|date_format:'%Y-%m-%d'}" />
210                 </div>
211         </div>
212         <hr/>
213 <!-- end of dirty date hack -->
  • Like 1
Link to comment
Share on other sites

  • 1 month later...

Bonjour,

 

Je sais le topic est résolu mais pas pour PS 1.6.0.9.

 

Voici le code que j'ai copié dans classes/product.php

<!-- dirty date_add hack-->
<script type="text/javascript">
{literal}
               $(function(){
                                $('#date_add').datepicker({dateFormat:'yy-mm-dd'});
				});
{/literal}
</script>
<!-- end  dirty date_add hack-->

<!-- dirty date hack - -->

         <div class="form-group">
                 <label class="control-label col-lg-3" for "date-creation">
                         <span class="label-tooltip" data-toggle="tooltip"
                                 title="{l s='Changement de date pour entrer dans la catégorie nouveautés.'}">
                                 {$bullet_common_field} {l s='Date Nouveauté'}
                         </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/>
 <!-- end of dirty date hack -->

J'obtiens une page blanche!

Y'a t'il un endroit (haut, bas de page) ou copier ce code?

 

Merci

Link to comment
Share on other sites

Bonjour,

 

Je sais le topic est résolu mais pas pour PS 1.6.0.9.

 

Voici le code que j'ai copié dans classes/product.php

 

Salut Jean M.

 

Le code n'est pas à copier dans classes/product.php mais bien dans le fichier informations.tpl situé dans ce dossier :

 

TonDossierPrestaShop ▸ gestion_site ▸ themes ▸ default ▸ template ▸ controllers ▸ products

 

Je remet le code (fonctionnel pour la version 1.6.0.9) pour ceux qui comme moi, ont eu un peu de mal à retirer les numéros des lignes des codes cités précédemment :

	 <!-- dirty date hack - -->
	<div class="form-group">
		<label class="control-label col-lg-3" for "date-creation">
			<span class="label-tooltip" data-toggle="tooltip" title="{l s='Changement de date pour entrer dans la catégorie nouveautés.'}">
				{$bullet_common_field} {l s='Date Nouveauté'}
			</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>
	<!-- end of dirty date hack -->

<hr/>

Et, dans le haut du même fichier informations.tpl (à la suite de la balise <script type="text/javascript"> ligne 36 en ce qui me concerne), il est possible de rajouter une petite fonction Javascript qui permet d'afficher un calendrier dynamique convivial :

// dirty date_add hack
$(function(){
		$('#date_add').datepicker({
			dateFormat:'yy-mm-dd'
		});
});
// end dirty date_add hack

Ce hack a pour effet de rajouter, sur la page Informations d'un produit (dans le back-office), un champ texte dans lequel il est possible de modifier la date de création d'un produit (qui par défaut n'est pas accessible sans passer par la base).

 

Le contrôle de la date de publication est ce qui fait la force de Wordpress, et qui permet notamment de programmer des publications futures. C'est une fonctionnalité tellement essentielle qu'on ne comprend pas qu'elle ne figure pas dans la dernière version officielle de Prestashop ;)

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

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

Salut Jean M.

 

Le code n'est pas à copier dans classes/product.php mais bien dans le fichier informations.tpl situé dans ce dossier :

 

TonDossierPrestaShop ▸ gestion_site ▸ themes ▸ default ▸ template ▸ controllers ▸ products

 

Je remet le code (fonctionnel pour la version 1.6.0.9) pour ceux qui comme moi, ont eu un peu de mal à retirer les numéros des lignes des codes cités précédemment :

	 <!-- dirty date hack - -->
	<div class="form-group">
		<label class="control-label col-lg-3" for "date-creation">
			<span class="label-tooltip" data-toggle="tooltip" title="{l s='Changement de date pour entrer dans la catégorie nouveautés.'}">
				{$bullet_common_field} {l s='Date Nouveauté'}
			</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>
	<!-- end of dirty date hack -->

<hr/>

Et, dans le haut du même fichier informations.tpl (à la suite de la balise <script type="text/javascript"> ligne 36 en ce qui me concerne), il est possible de rajouter une petite fonction Javascript qui permet d'afficher un calendrier dynamique convivial :

// dirty date_add hack
$(function(){
		$('#date_add').datepicker({
			dateFormat:'yy-mm-dd'
		});
});
// end dirty date_add hack

Ce hack a pour effet de rajouter, sur la page Informations d'un produit (dans le back-office), un champ texte dans lequel il est possible de modifier la date de création d'un produit (qui par défaut n'est pas accessible sans passer par la base).

 

Le contrôle de la date de publication est ce qui fait la force de Wordpress, et qui permet notamment de programmer des publications futures. C'est une fonctionnalité tellement essentielle qu'on ne comprend pas qu'elle ne figure pas dans la dernière version officielle de Prestashop ;)

Merci Klemart3D, cela marche bien chez moi par contre j'ai le bandeau nouveau sur la photo mais le produit n'apparait pas dans le module nouveaus produits...

  • Like 1
Link to comment
Share on other sites

  • 2 months later...

Bonjour ... cela fonctionne effectivement sans souci sur la 1.6.0.9 ... mais une p'tite question cependant ... y aurait-il moyen d'importer cette date dans le .csv d'import ??... Je rentre mes produits par import en .csv donc si je pouvais spécifier la date dans ce fichier cela m'arrangerait bien ... merci à vous.

Link to comment
Share on other sites

  • 2 months later...
  • 1 month later...
  • 4 years later...
  • 1 year later...
On 10/14/2021 at 10:00 AM, Ric34 said:

Bonjour @BeComWeb,

J'ai acheté ton module qui fonctionne parfaitement. Cependant on ne peut y modifier que le jours de création des produits.

Serait-il possible proposer modifier également les heures de création du produit ? Je te remercie par avance :)

Bonjour

Il faut que je trouve du temps pour regarder si c'est possible.

Dans mes souvenirs les datetimepickers sont très mal gérés sur cette page. Ceux des prix spécifiques par exemple ne fonctionnent pas (on devrait pouvoir faire commencer/s'arrêter une promo à une certaine heure, comme c'était le cas en 1.6)

Link to comment
Share on other sites

Bonjour,

Effectivement je vous confirme que les datetimepickers sont très mal gérés, j'y ai passé quelques heures à essayer l'intégrer à votre module en vain...

J'ai trouvé une solution alternative (certes moins ergonomique) mais qui fonctionne. J'ai enlevé le datepicker initial, et ai modifié la ligne de votre .php qui contient 

Tools::substr($this->getProductCreationDate($product), 0, -9)

PAR

Tools::substr($this->getProductCreationDate($product), 0),

Ainsi les heures s'affichent et on peut les modifier.

Merci pour votre retour et si vous arrivez à intégrer un datetimepicker je suis tout de même preneur ^^ :)


 

  • Like 1
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...