Modifier le template d’un module Prestashop

Si vous avez déjà voulu modifier le template d’un module Prestashop vous avez peut être déjà rencontré ce commentaire « Do not edit or add to this file if you wish to upgrade PrestaShop ». Et oui, si vous modifié directement le template d’un module lors d’une mise à jour de votre boutique vous allez rencontrer pas mal de problème.

La solution est simple, il suffit de créer un dossier « modules/nomdemonmodule » dans votre dossier « themes », puis d’y copier les fichiers template du module. Vous pourrez alors les modifier à loisir sans craindre qu’ils soient écrasés lors de vos prochaines mise à jour.

Redirection 301 après migration d’une boutique Oscommerce vers Prestashop

Je travaille actuellement sur la migration vers Prestashop d’une boutique réalisée avec Oscommerce. Pour la migration aucun problème le module oscommerce to prestashop réalisé par Presto Changeo s’occupe de tout, en quelques minutes c’est fait. Par contre si vous désirez conserver le référencement de votre site c’est une autre histoire.

Continuer la lecture de « Redirection 301 après migration d’une boutique Oscommerce vers Prestashop »

Modifier le hook d’un module sous Prestashop

Déplacer des modules est particulièrement simple dans le back-office de Prestashop. Toute fois, il est possible que vous obtenniez le message d’erreur suivant: « Ce module ne peut être accroché à ce hook ».
Cela signifie que le module n’est pas prévu pour être positionné là où vous le demandez. Ce qui ne veux pas dire que c’est impossible. Voici comment faire.

Continuer la lecture de « Modifier le hook d’un module sous Prestashop »

Désactiver les accents dans les url sous prestashop 1.5

Vous avez sûrement constaté comme beaucoup d’autres que l’équipe de développeurs de Prestashop avait jugé bon  d’inclure les accents dans les urls. Cette idée plutôt étrange génère bien des problèmes (essayez de faire un copié collé de vos liens avec chrome par exemple). Voici la solution pour rendre les accents désactivable.

Continuer la lecture de « Désactiver les accents dans les url sous prestashop 1.5 »

Recevoir un email lorsqu’un commentaire est déposé sur la boutique

Si comme moi vous utilisez le module productComment livré par défaut avec prestashop vous avez sans doute constaté que rien n’était prévu pour être averti lorsqu’un commentaire était déposé sur la boutique. Je trouve cela particulièrement dommage car cela implique de venir régulièrement ouvrir le module pour vérifier si un nouveau commentaire a été posté.

Voici donc une solution pour faire en sorte qu’un email vous soit automatiquement envoyé lorsque l’un de vos clients dépose un commentaire.

Dans le fichier « modules/productcomments/controllers/front/defaut.php » repérez le code suivant (ligne 120 environ):


if (count(Tools::getValue('criterion')) >= 1)
				{
					$comment->grade = $grade_sum / count(Tools::getValue('criterion'));
					// Update Grade average of comment
					$comment->save();				
				}

Et ajoutez ceci à la suite:


//send mail
$donnees = array('{texte}' => "nouveau commentaire sur la boutique");
Mail::Send((int)Context::getContext()->language->id,
	'newcomment',
	'nouveau commentaire',
	$donnees,
	Configuration::get('PS_SHOP_EMAIL'),
	null,
	null,
	null,
	null,
	null,
	dirname(__FILE__).'/../../mails/');

Créez ensuite un dossier « modules/productcomments/mails/ » et ajoutez y un sous dossier par langue de votre boutique. Chaque dossier doit utiliser le code ISO de la langue c’est à dire « fr » pour « français », « en » pour « english », etc.
Créez ensuite les fichiers « newcomment.html » et « newcomment.txt », placez-les dans les dossier de langue que vous venez de créer et ajoutez y le code suivant (dans les deux fichiers html et txt):


{texte}

Voila désormais lorsqu’un utilisateur déposera un commentaire sur votre boutique vous en serez averti.

Ps: cette modification touche directement au fichier du module, cela signifie qu’éventuellement lors d’une mise à jour vos modifications seront écrasées.

Ps2: J’ai fait cette modification sur une version 1.5.4.1 de Prestashop.

La solution est alors de faire un override des fichiers php du module. Ceci n’est pour l’instant pas prévu par Prestashop il faut utiliser cette solution

/*** edit 09/07/13 ***/

Devnet m’a suggéré une petite amélioration via le forum de Prestashop.
Je vous la met donc ci-dessous:
Dans le fichier « defaut.php » remplacez le code suivant:


$donnees = array('{texte}' => "nouveau commentaire sur la boutique");

par :


$donnees = array(
    '{texte}' => $module_instance->l('New comment available'),
    '{content}' => $comment->content,
    '{id_product}' => $comment->id_product,
    '{id_customer}' => $comment->id_customer,
    '{customer_name}' => $comment->customer_name,
    '{title}' => $comment->title,
    '{grade}' => $comment->grade
   );

et dans les fichiers newcomment.html et newcomment.txt remplacez:


{texte}

par


{texte}
{content}
{id_product}
{id_customer}
{customer_name}
{title}
{grade}

Vous récupérerez ainsi le contenu du commentaire et des infos sur le client, merci Devnet !

*** EDIT 09/08/13 ***
Apparemment plsuieurs personnes n’arrivent pas à ajouter le code où il faut donc voici ce que cela donne une fois modifié:


if (count(Tools::getValue('criterion')) >= 1)
				{
					$comment->grade = $grade_sum / count(Tools::getValue('criterion'));
					// Update Grade average of comment
					$comment->save();
				}
				//send mail
				$donnees = array(
					'{texte}' => $module_instance->l('New comment available'),
					'{content}' => $comment->content,
					'{id_product}' => $comment->id_product,
					'{id_customer}' => $comment->id_customer,
					'{customer_name}' => $comment->customer_name,
					'{title}' => $comment->title,
					'{grade}' => $comment->grade
				);				
				Mail::Send((int)Context::getContext()->language->id,
						'newcomment',
						'nouveau commentaire',
						$donnees,
						Configuration::get('PS_SHOP_EMAIL'),
						null,
						null,
						null,
						null,
						null,
						dirname(__FILE__).'/../../mails/');
				
				$result = true;

Retrouvez deux autres améliorations pour ce module ci-dessous:
Alerte email lorsqu’un commentaire est déposé
5 Etoiles par défaut sur vos commentaires