Archives de mai, 2015

Magento : email queue non envoyée

J’ai rencontré récemment un problème avec l’envoi des emails de confirmation de commande sur magento version 1.9.0.1.
Contrairement à de plus anciennes versions de magento (et c’est mieux ainsi 🙂 ), les emails ne sont plus envoyés directement après le passage d’une commande.

Ils sont stockés dans la table core_email_queue .

Puis il sont envoyés 100 par 100 via la tâche cron core_email_queue_send_all toutes les minutes.

Sur le serveur hébergeant le site Magento ( dans un environnement chrooté) , cette tâche cron ne fonctionnait pas et le fichier exception.log était remplis de messages de ce type :

exception 'Zend_Mail_Transport_Exception' with message 'Unable to send mail. ' in /www/lib/Zend/Mail/Transport/Sendmail.php:137
Stack trace:
#0 /www/lib/Zend/Mail/Transport/Abstract.php(348): Zend_Mail_Transport_Sendmail->_sendMail()
#1 /www/lib/Zend/Mail.php(1194): Zend_Mail_Transport_Abstract->send(Object(Zend_Mail))
#2 /www/app/code/core/Mage/Core/Model/Email/Queue.php(241): Zend_Mail->send()
#3 [internal function]: Mage_Core_Model_Email_Queue->send(Object(Mage_Cron_Model_Schedule))
#4 /www/app/code/core/Mage/Cron/Model/Observer.php(325): call_user_func_array(Array, Array)
#5 /www/app/code/core/Mage/Cron/Model/Observer.php(72): Mage_Cron_Model_Observer->_processJob(Object(Mage_Cron_Model_Schedule), Object(Mage_Core_Model_Config_Element))
#6 /www/app/code/core/Mage/Core/Model/App.php(1338): Mage_Cron_Model_Observer->dispatch(Object(Varien_Event_Observer))
#7 /www/app/code/core/Mage/Core/Model/App.php(1317): Mage_Core_Model_App->_callObserverMethod(Object(Mage_Cron_Model_Observer), 'dispatch', Object(Varien_Event_Observer))
#8 /www/app/Mage.php(448): Mage_Core_Model_App->dispatchEvent('default', Array)
#9 /www/cron.php(77): Mage::dispatchEvent('default')
#10 {main}
Pas de commentaires

Déplacer les fichiers mysql vers un nouvel emplacement

Par défaut sur les serveurs kimsufi livré par ovh, la partition “/” allouée au système est relativement réduite. ( 20 Go  dans mon cas )
Sur mon serveur cette partition était quasiment pleine, et une grande partie de l’espace était occupée par les fichiers des bases de données.
( dossier /var/lib/mysql/)

Voici donc comment procéder pour déplacer ces fichiers et libérer de l’espace pour votre système.

Nous allons déplacer les fichiers de /var/lib/mysql/ vers /home/mysql/

Pour commencer il faut arrêter mysql

sudo service mysql stop

Nous pouvons ensuite déplacer les fichiers vers le nouvel emplacement ( Cette opération peut être assez longue en fonction du volume de données à transférer)

sudo mv /var/lib/mysql/ /home/mysql/

Puis mettre un lien symbolique de /home/mysql/ vers /var/lib/mysql/

sudo ln -s /home/mysql /var/lib/mysql

Il faut ensuite attribuer les droits du dossier à l’utilisateur mysql

sudo chown mysql:mysql /home/mysql

Il ne vous reste plus qu’a redémarrer msyql

sudo service mysql start

Les fichiers de mysql sont à présent à l’emplacement “home/mysql” et votre partition système retrouve de la place !…

Pas de commentaires

Prestashop : Mettre en place un captcha sur le formulaire “envoyer à un ami”

La nouvelle version de mon module de captcha eicaptcha ( version 0.4.2 ) apporte une nouvelle possibilité.

Vous pouvez désormais utiliser un captcha sur le formulaire “Envoyer à un ami” situé sur la fiche produit.

Voici comment activer cette fonctionnalité, si vous utilisez le thème par défaut.

  • Télécharger la dernière version du module eicaptcha
  • ( Installer le module sur prestashop si ce n’est pas encore le cas :  module captcha Prestashop )
  • Extraire l’archive sur votre poste
  • Envoyer le fichier js/modules/sendtoafriend/sendtoafriend.js sur votre site via ftp
    dans le dossier themes/default-bootstrap/js/modules/sendtoafriend/ ( remplacer le fichier existant )
  • Envoyer le fichier views/templates/modules/sendtoafriend/sendtoafriend-extra.tpl sur votre site via ftp
    dans le dossier themes/default-bootstrap/modules/sendtoafriend/ ( remplacer le fichier existant )

 

Une fois ces changements en place, le captcha sera disponible sur le formulaire “Envoyer à un ami”

Ei Captcah send to a friend

 

Si vous utilisez un thème personnalisé, voici comment procéder.

  • Envoyer le fichier js/modules/sendtoafriend/sendtoafriend.js sur votre site via ftp
    dans le dossier themes/default-bootstrap/js/modules/sendtoafriend/ et adaptez le en fonction de votre design

Dans le fichier themes/default-bootstrap/modules/sendtoafriend/sendtoafriend-extra.tpl
Ajoutez le code suivant à l’endroit ou vous souhaitez que le captcha apparaisse :

<!-- Div d'affichage du captcha( Module EiCaptcha ) -->
<div id="recaptchaSendToAFriend"> </div>

 …

28 commentaires

Prestashop 1.5 : Requête ajax dans la configuration d’un module

J’ai perdu dernièrement pas mal de temps en tentant de mettre en place des appels ajax dans la configuration d’un module Prestashop version 1.5.
Les méthodologies qui fonctionnent très bien avec les dernières version de prestashop ne fonctionnaient pas du tout.

Après analyse du code, il s’avère que la gestion des requêtes ajax pour les modules prestashop telle que nous la connaissons n’est pas implémentée pour les versions inférieures à la version 1.6.0.3

Pour corriger cela, il est nécessaire de surcharger la fonction postProcess de la classe AdminController.

Pour faire cela proprement il faut donc créer un override dans le fichier :
override/classes/controller/AdminController.php

avec le contenu suivant :
( j’ai tout simplement repris celui des dernières version )

<?php 
class AdminController extends AdminControllerCore {
 
    /**
     * @todo uses redirectAdmin only if !$this->ajax
     */
    public function postProcess() {
        if ($this->ajax) {
 
            // from ajax-tab.php
            $action = Tools::getValue('action');
            // no need to use displayConf() here
            if (!
1 commentaire

Prestashop : liens dynamiques dans l’éditeur nouvelle version

Je viens de lancer une nouvelle version du module EicmsLinks, qui permets de mettre en place des liens dynamiques dans les pages cms de Prestashop. ( pour l’ancienne version vous pouvez consulter l’ancien article ici )

La version précédente permettait uniquement d’ajouter des liens vers des pages cms.
Cette nouvelle version permets d’ajouter de la même manière, des liens vers les catégories de produits, et les produits eux-mêmes.

Voici un aperçu des nouvelles fonctionnalités :

Insertion d’un lien vers une catégorie de produits :

Ei cms links Categories

Insertion d’un lien vers un produit :

Ei cms links product

 

L’ensemble des informations sur ce module sont désormais centralisées sur la page suivante :

Prestashop : Liens dynamiques dans l’éditeur wysiwyg tinymce

5 commentaires

Prestashop : installer la dernière version depuis github

Si vous souhaitez tester la dernière version de Prestashop sur votre serveur voici un script qui vous permettra de l’installer via la ligne de commandes depuis github.

Attention , j’insiste bien sur le mot tester, car la version sur github est la version de développement qui ne doit pas être mise en production.
Pour télécharger la dernière version stable rendez-vous sur la page suivante : https://www.prestashop.com/fr/telechargement

Ce script est configuré pour installer prestashop via l’url http://example.com/prestashop/nightly/
Il est basé sur l’article suivant : Installer une version de prestashop en ligne de commande

#chemin d'installation
dir="/home/user/public_html/prestashop/"
nightlyDir="nightly"
domaineName="example.com"
 
#Accès base de données ( Remplacer par les bonnes informations )
dbuser="user"
dbpassword="password"
dbname="prestashop_nigthly"
 
#Accès administration (Remplacer par les bonnes informations
contactEmail="[email protected]"
adminpass="mypassword123"
 
#On se place dans le dossier ou on veut installer le site
cd $dir
 
#Si le dossier existe deja on le supprime
if [ -d "$nightlyDir" ]; then
echo "Le dossier $nightlyDir existe deja suppression des fichiers existants"
rm -rf $nightlyDir
#exit
fi
echo "Creation du dossier $nightlyDir"
mkdir $nightlyDir
 
#On clone la dernière version de la solution
git clone --recursive https://github.com/PrestaShop/PrestaShop.git $nightlyDir/
 
#Suppression de l'ancienne base de données ( si elle existe )
mysql -u $dbuser -p$dbpassword -e "DROP DATABASE IF EXISTS $dbname "
 
#Creation de la nouvelle base de données
mysql -u $dbuser -p$dbpassword -e "CREATE DATABASE $dbname "
 
#Installation de la solution
cd $nightlyDir/install-dev/
php index_cli.php --domain="${domaineName}" --db_name=$dbname --db_user=$dbuser --db_password=$dbpassword --email=$contactEmail --password=$adminpass --newsletter=0 --send_email=0 --base_uri="prestashop/${nightlyDir}"
 
#Pour finir on renomme le dossier d'install et le dossier d'admin
cd ..
Pas de commentaires

Optimisation du design du blog pour les mobiles

Les visiteurs du blog naviguant depuis un téléphone portable étant de plus en plus nombreux, j’ai décidé d’optimiser le design pour améliorer leur expérience de navigation.
( La navigation sur tablette ne pose pas de problèmes particulier car le design de base du blog n’est pas très large )

Vous pouvez en profiter des à présent depuis votre mobile avec une résolution inférieure à 480 px.
Pour ceux qui visitent le site depuis un ordinateur voici un apperçu

hhennes mobile

Pour le côté technique c’était relativement simple à mettre en place à l’aide des media-queries.
Et Google Chrome dispose également de base d’une fonctionnalité très pratique d’émulation de l’affichage sur téléphones mobiles.

N’hésitez pas à donner votre avis sur cet optimisation ! 🙂…

Pas de commentaires

Prestashop : Utiliser la liste des catégories produits dans un module

Si vous souhaitez utiliser la liste des catégories de produits Prestashop dans votre module voici comment procéder.

Prestashop 1.5

$categoryTree = new Helper();
	/**
	 *
	 * @param array $root array with the name and ID of the tree root category, if null the Shop's root category will be used
	 * @param type $selected_cat array of selected categories
	 *					Format
	 *						Array
	 * 					(
	 *							 [0] => 1
	 *						 [1] => 2
	 *					)
	 * 					OR
	 *					Array
	 *					(
	 *						 [1] => Array
	 *							  (
	 *									[id_category] => 1
	 *									[name] => Home page
	 *							  )
	 *					)
	 * @param string $input_name name of input
	 * @param bool $use_radio use radio tree or checkbox tree
	 * @param bool $use_search display a find category search box
	 * @param array $disabled_categories
	 * @param bool $use_in_popup
	 * @param bool $use_shop_context
	 * @return string
	 */
echo $categoryTree->renderCategoryTree(null,array(),'id-category-for-insert');

Prestashop 1.6

$categoryTree = new HelperTreeCategories('categories-tree', $this->l('Check the category to display the link'));
echo $categoryTree->setAttribute()
->setInputName('id-category')
->render();

Par contre ces helpers ne fonctionnent malheureusement qu’en back office.…

Pas de commentaires


Compte Github