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

Améliorer les catégories CMS et pages CMS de Prestashop

$
0
0

Dans Prestashop, il y a très souvent l’éditeur « TinyMCE » qui est disponible, pour faire l’intégration du texte ou la mise en forme d’images. Cela est bien pratique pour le texte, mais pas vraiment pour les images surtout dans les pages CMS.

Page CMS Prestashop

Les pauvres pages CMS

Est-ce que vous l’avez déjà remarqué ? Sur les sites Prestashop, les pages CMS sont assez souvent pauvres au niveau de la présentation… dans le 95% des cas on ne retrouve que du texte. Si on se penche sur la problématique des catégories CMS (groupement de plusieurs pages), une simple liste fade de lien s’affiche… on doit pouvoir faire mieux et donner envie au visiteur de consulter le contenu.

La création de contenu via page CMS reste assez fastidieux... inclure une image oui c'est possible, mais la mise en forme n'est pas pensée pour le responsive.

La création de contenu via page CMS reste assez fastidieux… inclure une image oui c’est possible, mais la mise en forme n’est pas pensée pour le responsive.

Améliorons les pages CMS

Pour faire un premier pas vers des pages plus optimisées, je propose que l’on injecte automatiquement une image en entête de page, qui pourra être variable pour chaque page CMS. Cela aura pour intérêt de proposer un visuel plus dynamique et 100% compatible responsive, sans se creuser la tête sur la génération du contenu HTML dans la page CMS.

Bon... au moins sur la page CMS on a un titre et des sous-titres, c'est déjà mieux que rien.

Bon… au moins sur la page CMS on a un titre et des sous-titres, c’est déjà mieux que rien.

1) Pour cela, ouvrez le fichier « cms.tpl » de votre thème et ajoutez après cette ligne (n° 40 env.) :

<div class="rte{if $content_only} content_only{/if}">

Le code suivant :

{* Webbax - 21.03.16 - bannière automatique *} 
<div class="container">
    <div class="row">
        <div class="col-sm-8 col-sm-offset-2">
            {assign var="img" value="img/cms/{$cms->id}.jpg"}
            {if file_exists($img)}
                <img src="{$base_dir}{$img}" />
            {/if}
        </div>
    </div>
</div>

2) Et dans le fichier « /themes/votretheme/css/cms.css » ajoutez à la fin du fichier le code suivant.

 
#cms .rte img{display:block;}

3) Enfin dans le dossier « /img/cms/ » déposez votre image en l’appelant par exemple « 9.jpg », le numéro 9 correspond à l’id de la page CMS. Celle-ci est indiquée dans votre back-office, il faudra respecter cette convention de nommage.

A présent si vous rechargez la page, vous devriez obtenir automatiquement une bannière en entête de page. Le template vérifie si l’image existe dans le dossier (pour la page CMS concernée), si oui il la chargera automatiquement.

A présent la page CMS charge automatiquement une image en entête, cela donne une meilleure impression.

A présent la page CMS charge automatiquement une image en entête, cela donne une meilleure impression.

Plus fort encore avec les catégories

Les catégories qui regroupent plusieurs pages CMS c’est bien pratique pour créer des sections de page sur une thématique de votre choix… mais visuellement, c’est vraiment très pauvre. Avec l’exemple ci-dessous, on a une catégorie de page CMS « Nos prestations » avec 4 pages… certes cela est lisible, mais c’est pas vraiment joli à l’oeil.

La visualisation des pages via catégories CMS est assez austère.

La visualisation des pages via catégories CMS est assez austère.

1) Modifiez à nouveau le fichier « cms.tpl » de votre thème, juste après la ligne ci-dessous :

{if isset($cms_pages) && !empty($cms_pages)}

Ajoutez le code suivant :

{* Webbax - 21.03.16 - mise en forme de la liste des pages *}
{foreach from=$cms_pages item=cmspages}
    <div id="list_pages" class="col-sm-6">
        <a href="{$link->getCMSLink($cmspages.id_cms, $cmspages.link_rewrite)|escape:'html':'UTF-8'}" class="title">{$cmspages.meta_title|escape:'html':'UTF-8'}</a>
        <a href="{$link->getCMSLink($cmspages.id_cms, $cmspages.link_rewrite)|escape:'html':'UTF-8'}" class="title">
            <img src="{$img_ps_dir}cms/{$cmspages.id_cms}.jpg">
        </a>
    </div>
{/foreach}

2) Et dans le fichier « /themes/votretheme/css/cms.css » ajoutez à la fin du fichier le code suivant :

#cms #list_pages{margin-top:20px;}
#cms #list_pages .title{font-size:20px;text-align:center;display:block;margin-bottom:10px;color:#006131;}
#cms #list_pages img{border: 1px solid #1eab65;margin: 10px 0;padding: 10px;}
#cms #list_pages img:hover{opacity: 0.8;filter: alpha(opacity=80);}

Le concept logique est toujours de s’appuyer sur des conventions, c’est-à-dire qu’on va chercher les bannières (images CMS du dossier /img/cms/) et les afficher déjà au niveau des catégories pour donner envie de cliquer à l’internaute. Si vous l’avez fait correctement les images devraient s’afficher comme l’exemple ci-dessous.

Difficile d'imaginer qu'il s'agit de la même page... et pourtant...  La modification est simple, mais change totalement l'approche visuelle, ça donne forcément envie de cliquer.

Difficile d’imaginer qu’il s’agit de la même page… et pourtant… La modification est simple, mais change totalement l’approche visuelle, ça donne forcément envie de cliquer.

Bilan

Le gros problème actuel c’est que les éditeurs de contenu ne sont pas pensés pour gérer du responsive, avec un code qui soit propre et fonctionnel. Il faudrait idéalement des champs prédéfinis, comme sur une fiche produit, cela simplifierait la mise en forme (plus limité certes, mais fonctionnel). En appliquant cette méthode chez ce client, celui-ci gagne en souplesse et peut créer lui-même un contenu visuellement plus attractif.

Cet article Améliorer les catégories CMS et pages CMS de Prestashop est apparu en premier sur Webbax | Expert E-commerce Prestashop.


Exportez vos clients Prestashop et leurs adresses

$
0
0

Régulièrement je constate que les clients ont besoin d’exporter des informations en provenance de leur boutique. Pour cela il existe des modules dédiés, mais en standard les exports sont limités.

Code avec Prestashop

Les exports natifs

Dans Prestashop 1.6, vous avez la possibilité d’exporter des fichiers CSV natifs, qui sont extraits directement de la visualisation des tableaux du back-office. Dans la plupart des cas, lorsque vous avez un tableau sous forme de liste, vous pouvez exporter les informations affichées. Ces données peuvent vous servir pour un « début » de base de travail, mais seront souvent incomplets.

Le bouton d'export s'affiche dans quasiment tous les listings proposés par Prestashop.

Le bouton d’export s’affiche dans quasiment tous les listings proposés par Prestashop.

C'est un bon début, mais le fichier client reste malgré tout assez incomplet... car il n'incorpore pas le détail.

C’est un bon début, mais le fichier client reste malgré tout assez incomplet… car il n’incorpore pas le détail.

Exportons les clients

Prestashop propose sous « Paramètres avancés », un outil qui s’appelle « Gestionnaire SQL », celui-ci sert principalement à préparer des requêtes à exécuter dans le but de visualiser des résultats, mais pas seulement, vous pouvez exporter les informations retournées par la requête.

Dans le cas présent vous pouvez créer une nouvelle requête qu’on va nommer « Export clients » avec le code suivant :

SELECT
pc.`id_customer`,
pc.`email`,
pa.`company`,
pc.`siret`,
pc.`id_gender`,
pa.`firstname`,
pa.`lastname`,
pa.`address1`,
pa.`address2`,
pa.`postcode`,
pa.`city`,
pa.`phone`,
pa.`phone_mobile`,
pc.`birthday`,
pc.`newsletter`,
pc.`active`
FROM ps_address pa
LEFT JOIN ps_customer pc ON pa.`id_customer`=pc.`id_customer`
WHERE
pa.`deleted`=0
AND pc.`email` != ''
AND pa.`id_supplier` = 0
AND pa.`id_manufacturer` = 0
GROUP BY pa.`address1`

Une fois que vous l’aurez créé vous pourrez l’exécuter afin de générer l’export du fichier CSV.

Le résultat est bien plus complet (adresse comprise), avec les champs de bases régulièrement utilisés.

Le résultat est bien plus complet (adresse comprise), avec les champs de bases régulièrement utilisés.

Du potentiel

Cette manière de réaliser des exports est sous-exploitées, car il serait possible d’avoir un très large choix de fichiers à générer via cet outil. Finalement, il faut « juste » coder les bonnes requêtes, régulièrement demandées par les clients (pour les commandes, les produits, catégories etc…).

On pourrait imaginer dans le futur :

  • Que Prestashop propose une série d’export déjà prédéfinis
  • Que la communauté Prestashop propose sur le forum un topic qui centralise des exemples SQL fréquents.
Une requête c'est déjà bien... mais avec une liste complète, cela pourrait devenir un outil incontournable du back-office.

Une requête c’est déjà bien… mais avec une liste complète, cela pourrait devenir un outil incontournable du back-office.

Bilan

Bon certes on ne peut pas proposer des options de critères de sélection… ou alors il faut faire des requêtes différentes ou ensuite procéder à des filtres une fois le fichier ouvert dans Excel. Sinon il existe des outils comme Custom Exporter que je déploie régulièrement chez des clients. Tout dépend des besoins forcément… mais je vous invite à expérimenter ce fameux Gestionnaire SQL et à coder vos propres requêtes.

Cet article Exportez vos clients Prestashop et leurs adresses est apparu en premier sur Webbax | Expert E-commerce Prestashop.

Gérer les colis encombrants dans Prestashop

$
0
0

Dans Prestashop la configuration des transporteurs est assez complète avec passablement d’options. Si à présent vous désirez gérer les articles du type encombrants, il va falloir faire preuve d’astuce.

Colis encombrant

La problématique

Prenons le cas de la Poste Suisse, qui va considérer un colis du type encombrant si celui-ci répond aux critères d’exigences suivants :

  • si la longueur du colis dépasse 100 cm
    ou si 2 des dimensions dépassent 60 cm
  • pourtour du colis 400 cm
    (2 x la hauteur + 2 x la largeur + le côté le plus long)
  • longueur maximale du colis 250 cm
  • poids du colis jusqu’à 30 Kg

Et là déjà rien que pour cumuler les 2 premiers critères dans sa tête et se dire… il est encombrant le colis ou pas ? …cela semble déjà compliqué. Mais pire encore, imaginez devoir mettre des règles automatisées dans Prestashop… avec ces critères ce n’est pas possible. Un des problèmes vient aussi du fait que dans Prestashop il n’y a pas de « taille minimale » pour le transporteur au niveau du colis.

Avant de proposer des colis encombrant avec la Poste Suisse, il est préférable de faire quelques cours math... Qui a dit que l'expédition de produits était simple ?

Avant de proposer des colis encombrant avec la Poste Suisse, il est préférable de faire quelques cours math… Qui a dit que l’expédition de produits était simple ?

Comment procéder sur Prestashop ?

Voici ci-dessous une des méthodes qui peut fonctionner si vous désirez gérer les produits encombrants.

Pour commencer, il faut créer un transporteur du style « Poste Suisse encombrant » avec une tranche de poids qui ira de 0 Kg à 30 Kg. Concernant le prix du transport, on le laisse à zéro.

Etape 1

Etape 1

Ensuite dans le colis encombrant sous l’onglet « Livraison », on laisse le poids à 0 Kg et on indique des frais de ports par unité de 27.78 CHF (ce qui correspondra ensuite à 30 CHF TTC). Dans les transporteurs en dessous on sélectionne « Poste Suisse – Encombrant ».

Etape 2

Etape 2

Enfin très important, les autres produits « classiques » qui ne sont « pas encombrants », il faudra aussi leur indiquer un transporteur spécifique. Par exemple ici sur mon produit « Robe » qui est un produit expédiable via un colis standard je force l’expédition sur « Poste Suisse – PostPac Economy ».

Etape 3

Etape 3

A présent je vais passer une commande pour ce produit encombrant, qui est dans mon cas une table et voici ce qu’on obtient dans le processus de commande.

Rien de particulier, ici on a 30 CHF pour l'expédition... ok cela concorde.

Rien de particulier, ici on a 30 CHF pour l’expédition… ok cela concorde.

Si j'achète 2 produits, les frais de ports se doublent et ça c'est un bon point.

Si j’achète 2 produits, les frais de ports se doublent et ça c’est un bon point.

Encore plus fort, si j'ajoute mon produit "classique" (basé au poids sur la tabelle officielle de la Poste) les 7 CHF de ports sont ajoutés en plus à la commande, chaque article dispose donc de ses propres frais d'expédition.

Encore plus fort, si j’ajoute mon produit « classique » (basé au poids sur la tabelle officielle de la Poste) les 7 CHF de ports sont ajoutés en plus à la commande, chaque article dispose donc de ses propres frais d’expédition.

A l'étape du transport, les deux transporteurs "Poste Suisse - PostPac Economy" et "Poste Suisse - Encombrant" ont été fusionnés ensemble, car on a ici une commande avec deux produits expédiés par deux transporteurs différents.

A l’étape du transport, les deux transporteurs « Poste Suisse – PostPac Economy » et « Poste Suisse – Encombrant » ont été fusionnés ensemble, car on a ici une commande avec deux produits expédiés par deux transporteurs différents.

Bilan

L’inconvénient de cette méthode ? Certainement le fait qu’il faut pour « chaque » produit spécifier le transporteur… même les produits qui n’ont rien à voir avec des produits encombrants. L’avenir est certainement dans le poids volumétrique où on enverrait la liste des tailles des produits présentes dans le panier + le poids, et la Poste nous retournerait le prix à payer.

Pour le moment je n’ai pas vraiment trouvé d’autres méthodes pour faire plus simple, mais cela a le mérite de fonctionner. Si vous avez une technique spéciale, n’hésitez pas à la partager dans les commentaires.

Cet article Gérer les colis encombrants dans Prestashop est apparu en premier sur Webbax | Expert E-commerce Prestashop.

Votre base clients Prestashop est-elle 100% valide ?

$
0
0

Depuis déjà un certain temps, je remarque que chez beaucoup de clients utilisant Prestashop, les données ne sont pas toujours 100% intègre. Cela signifie que dans la base de données certaines valeurs ne sont pas correctes.

Erreur sous Prestashop

Des erreurs invisibles

Un des cas rencontrés par exemple récemment, c’est un client d’une boutique qui ne pouvait plus se connecter sur sur la page d’identification. Celui-ci mentionne au marchand qu’il n’arrive pas à se connecter, car Prestashop affiche une erreur lors de la connexion. Plus tard en analysant la base de données du marchand, je constate que certaines valeurs dans la base de données ne sont pas approuvées par Prestashop et causent différents blocages.

Difficile de localiser une erreur dans la base de données, le plus souvent c'est à l'utilisation ou lorsqu'un client fait une remarque qu'on se doute qu'il doit y avoir un bug quelque part.

Difficile de localiser une erreur dans la base de données, le plus souvent c’est à l’utilisation ou lorsqu’un client fait une remarque qu’on se doute qu’il doit y avoir un bug quelque part.

Comment expliquer l’origine de ces problèmes

Ce qu’il faut comprendre, c’est que Prestashop utilise un modèle de validation des données, c’est-à-dire qu’au moment de sauver un enregistrement les données sont contrôlées pour être 100% valide selon leurs exigences. Malgré tout, ce contrôle peut-être outrepassé pour les raisons suivantes :

  • Migration d’une plateforme externe ex. OScommerce, Magento (etc…) vers Prestashop.
  • Mise à jour d’une ancienne version Prestashop vers une version courante.
  • Importation de données dans Prestashop (depuis le back-office ou via un outil tiers).
  • Utilisation de modules n’utilisant pas forcément les classes natives de Prestashop.
  • Opérations manuelles SQL sur la base de données.
Si toutes les règles affichées ici ne sont pas respectées pour le client à charger ou à sauver, Prestashop va provoquer une erreur fatale. L'erreur critique peut même se produire pour la lecture des données (pas seulement lors de la modification).

Si toutes les règles affichées ici ne sont pas respectées pour le client à charger ou à sauver, Prestashop va provoquer une erreur fatale. L’erreur critique peut même se produire pour la lecture des données (pas seulement lors de la modification).

Est-ce que j’ai des erreurs dans ma base ?

Nous allons faire le test pour vos clients, créez un fichier « customers.php » dans le dossier suivant « /modules/scripts » et ajoutez le contenu suivant dans le fichier.

/*
 * Webbax - contrôle validité des clients
 * 
 */
include(dirname(__FILE__).'/../../config/config.inc.php');
$customers = Db::getInstance()->ExecuteS('SELECT * FROM `'._DB_PREFIX_.'customer`');
foreach($customers as $c){
    $Customer = new Customer($c['id_customer']);
    if(!$Customer->validateFields(false)){
       $err = $Customer->validateFields(false,true);
       echo $err.'<br/>';
       p($Customer);
    }
}

if(!isset($err)){
    echo 'Aucune erreur dans votre base clients';
}

Ce code va lire vos enregistrements et afficher une erreur sur l’enregistrement client comportant l’erreur. Dans votre cas pour voir le résultat il suffit d’exécuter l’url suivante : http://votreshop.com/modules/scripts/customers.php.

Lors de l’exécution de l’url ci-dessus, vous obtiendrez une erreur si vous avez des problèmes dans vos enregistrements. Par exemple ici on nous mentionne « Customer->firstname is empty », il manque le prénom pour le client portant l’id numéro 1.

Même si cela peut sembler impossible, vous pouvez avoir des clients par exemple sans nom, ou avec une date d'anniversaire incorrecte ou hors tranche (cas fréquent).

Même si cela peut sembler impossible, vous pouvez avoir des clients par exemple sans nom, ou avec une date d’anniversaire incorrecte ou hors tranche (cas fréquent).

Dans la base de données sous PHPmyAdmin, le champ est effectivement vide, on va donc le remplir avec une valeur.

Dans la base de données sous PHPmyAdmin, le champ est effectivement vide, on va donc le remplir avec une valeur.

A présent si j'exécute à nouveau mon url, les clients sont tous considérés comme "valides".

A présent si j’exécute à nouveau mon url, les clients sont tous considérés comme « valides ».

Cela est valable pour tous les autres enregistrements

Dans le cas présent on a pris l’exemple des clients, mais il n’est pas rare d’avoir vu ce problème de cohérence par exemple sur les produits ou encore sur les commandes. Je l’ai aussi déjà constaté en exportant des informations depuis certaines boutiques, Prestashop refuse de le faire, car l’enregistrement n’est pas intègre. Si vous cherchez à creuser plus loin, vous pouvez utiliser la même logique de script pour contrôler d’autres tables.

Bilan

Il est toujours difficile d’expliquer l’origine de ces erreurs, mais il est important de les rectifier. Par exemple dans le cas d’un marchand, certains enregistrements empêchaient la relance du bon cadeau pour l’anniversaire du client. On se retrouve ensuite avec un module paralysé en permanence pour tous les autres clients, tout ça pour quelques enregistrements obsolètes.

Cet article Votre base clients Prestashop est-elle 100% valide ? est apparu en premier sur Webbax | Expert E-commerce Prestashop.

Améliorer Prestashop sur mobile sans être développeur

$
0
0

Actuellement je reste assez partagé sur les versions mobiles que l’on nous propose (en général). Pourquoi ? Parce qu’il ne suffit pas simplement d’adapter l’interface, il faut aussi adopter un comportement minimaliste.

Prestashop Mobile

Le responsive à l’arrache

Pour une bonne partie des clients, voici la méthode que l’on applique… on achète un thème responsive Prestashop, on le configure et on monte la boutique et toute la configuration qui va avec. Ensuite, on fait les tests sur mobiles / tablettes pour vérifier que ça s’affiche bien… En principe c’est pas trop mal, mais on pourrait faire beaucoup mieux en prenant le temps d’optimiser chaque page de la boutique.

Un thème Prestashop responsive ? Cela fait partie du standard, mais cela ne veut pas dire pour autant que la version mobile est agréable à utiliser.

Un thème Prestashop responsive ? Cela fait partie du standard, mais cela ne veut pas dire pour autant que la version mobile est agréable à utiliser.

Redimensionner le contenu n’est pas toujours la solution !

Il faut être honnête, je vois encore rarement des « bonnes » versions mobiles pour des boutiques e-commerce (hormis peut-être chez des grosses sociétés). Actuellement la stratégie du responsive c’est de créer une multitude de blocs sur mobiles, avec des pages extrêmement longues et des éléments qui s’enchaînent à perte de vue (on scroll encore et encore).

Bien souvent tous les éléments de la version « desktop » sont repris et re-dimensionnés… Il faudrait plutôt se poser la question : « A-t-on vraiment besoin de tout cela ? ». Combien de fois j’ai vu de sliders de page d’accueil illisibles sur mobile ? Et d’ailleurs faut-il un slider ? Combien de fois j’ai vu des blocs à n’en plus finir (colonnes gauches et droite) sur mobile on ne distingue presque plus le contenu central.

Oui c'est compatible mobile, mais est-ce que visuellement c'est pratique et ergonomique pour vos clients ? Niveau affichage, c'est quand même moins bien que la version classique ordinateur c'est certain.

Oui c’est compatible mobile, mais est-ce que visuellement c’est pratique et ergonomique pour vos clients ? Niveau affichage, c’est quand même moins bien que la version classique ordinateur c’est certain.

Améliorez l’expérience mobile en 2 clics

Ce qu’il faut savoir c’est que Prestashop propose une option pour chaque bloc / modules, qui permet d’être affiché ou non sur mobile. Même si la fonctionnalité semble évidente, vous pouvez très facilement désactiver des blocs sur mobiles uniquement ou voir même sur tablette.

Faites cet exercice tout simple, allez sur votre boutique avec votre smartphone et posez vous la question : « Est-ce que mon client a besoin de voir ça ? Est-ce indispensable ? ». Parfois certains éléments ne sont pas assez lisibles sur mobile (sans être retravaillé) et il faut mieux les désactiver qu’encombrer la page et la navigation.

L'option est facile d'accès, un non développeur pourra déjà alléger son Prestashop, en désactivant les modules / blocs superflus sur mobiles.

L’option est facile d’accès, un non développeur pourra déjà alléger son Prestashop, en désactivant les modules / blocs superflus sur mobiles.

L’avantage du thème mono-colone

Certains thèmes ne proposent pas une colonne gauche / droite, le contenu est directement centré avec un seul bloc principal. L’avantage du thème mono-colonne c’est que lorsque vous optimisez la boutique pour la version « classique », vous optimisez en même temps le site pour la version mobile.

Sur Prestashop Addons, vous pouvez filtrer sur les thèmes en fonction de leur nombre de colonnes. Avec une seule colonne on simplifie l’interface, on est donc gagnant forcément sur la partie optimisation mobile.

Tout dépend des  goûts, mais plus vous simplifiez, moins vous aurez de contraintes techniques à gérer.

Tout dépend des goûts, mais plus vous simplifiez, moins vous aurez de contraintes techniques à gérer.

Bilan

Pour faire une bonne version mobile, il faut la travailler… il faudrait passer du temps à étudier chaque page pour que ça soit pratique et ergonomique pour le visiteur. Actuellement on se contente du standard, mais pour ceux qui aimeraient vraiment « mieux vendre » sur mobile, je pense qu’il faut se réserver du temps pour optimiser et alléger l’interface. Et vous ? Avez-vous déjà pris du temps pour optimiser votre version mobile ?

Cet article Améliorer Prestashop sur mobile sans être développeur est apparu en premier sur Webbax | Expert E-commerce Prestashop.

Ajoutez Fancybox dans vos pages CMS Prestashop

$
0
0

Les pages CMS de Prestashop sont actuellement très simplistes… et il faut la plupart du temps passer par la case édition HTML. Profitons d’ajouter un zoom Fancybox pour dynamiser la page.

Prestashop Fancybox

Vous devez utiliser Boostrap

Ce que vous devez savoir c’est que Prestashop utilise un système de grille, valable aussi pour le responsive, mobile tablettes, smartphone. Actuellement le top du top lorsqu’on crée du contenu pour les pages CMS c’est d’utiliser les règles de codage proposées par Boostrap.

Vous pouvez bien sûr créer du contenu via l’éditeur de Prestashop, mais le code généré sera « sale » et inutilisable sur les autres support. L’éditeur fonctionne à condition que vous vous limitiez uniquement à des titres, du texte et des retours à la ligne.

Il faut maîtriser un minimum les conventions de codage HTML de boostrap pour que votre contenu puisse se positionner et s'afficher correctement.

Il faut maîtriser un minimum les conventions de codage HTML de Boostrap pour que votre contenu puisse se positionner et s’afficher correctement.

Créons une maquette de base

Dans le cas présent on va tenter quelque chose d’assez simple on va générer du code pour pouvoir faire afficher un bloc de texte, un titre, ainsi que 3 images sur le côté avec pour objectif que cela puisse fonctionner sur les différents supports. Pour cela vous pouvez ajouter le code suivant dans votre page CMS (ajoutez le bien via le code source / bouton édition html).

<div class="row">
	<div class="col-sm-6">
		<div class="col-sm-12">
			<img src="http://www.webbax.ch/downloads/blog/2016/22-07/bike.jpg" class="img-thumbnail" />
		</div>
		<div class="col-sm-6">
			<img src="http://www.webbax.ch/downloads/blog/2016/22-07/bike.jpg" class="img-thumbnail" />
		</div>
		<div class="col-sm-6">
			<img src="http://www.webbax.ch/downloads/blog/2016/22-07/bike.jpg" class="img-thumbnail" />
		</div>
	</div>
	<div class="col-sm-6">
		<h2>Lorem ipsu</h2>
		Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam malesuada mi ac faucibus elementum. Cras ornare neque non dignissim tincidunt. Quisque nec augue in mauris viverra consequat. Sed enim lorem, fringilla ut lorem sit amet, congue interdum diam. Proin pretium sagittis mattis. Integer maximus lectus quis fringilla lobortis. Duis non tortor lorem. Duis sit amet nisl quis justo viverra imperdiet. Cras vitae fermentum arcu, et consectetur ante. Sed nec lectus quis ipsum tempus vulputate. Vestibulum urna ex, efficitur a magna luctus, suscipit lacinia tellus. Curabitur eget ante enim. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur sed varius sem, sit amet varius magna. Praesent congue sodales rutrum.<br/>
		<br/>
		Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam malesuada mi ac faucibus elementum. Cras ornare neque non dignissim tincidunt. Quisque nec augue in mauris viverra consequat. Sed enim lorem, fringilla ut lorem sit amet, congue interdum diam. Proin pretium sagittis mattis. Integer maximus lectus quis fringilla lobortis. Duis non tortor lorem. Duis sit amet nisl quis justo viverra imperdiet. Cras vitae fermentum arcu, et consectetur ante. Sed nec lectus quis ipsum tempus vulputate. Vestibulum urna ex, efficitur a magna luctus, suscipit lacinia tellus. Curabitur eget ante enim. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur sed varius sem, sit amet varius magna. Praesent congue sodales rutrum.<br/> 
		<br/>
		Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam malesuada mi ac faucibus elementum. Cras ornare neque non dignissim tincidunt. Quisque nec augue in mauris viverra consequat. Sed enim lorem, fringilla ut lorem sit amet, congue interdum diam. Proin pretium sagittis mattis. Integer maximus lectus quis fringilla lobortis. Duis non tortor lorem. Duis sit amet nisl quis justo viverra imperdiet.
	</div>
</div>

Ensuite, vous pouvez vérifier, normalement à la visualisation vous devriez obtenir un résultat similaire à la capture ci-dessous.

Grâce à Boostrap on obtient une mise en page correcte rapidement.

Grâce à Boostrap on obtient une mise en page correcte rapidement.

Pourquoi je mets les images à gauche ? Parce que sur mobile, le bloc de gauche a la priorité. Le client verra donc en premier les images sur un mobile au lieu du pavé de texte. Notez que la mise en page s'est bien ajustée automatiquement.

Pourquoi je mets les images à gauche ? Parce que sur mobile, le bloc de gauche a la priorité. Le client verra donc en premier les images sur un mobile au lieu du pavé de texte. Notez que la mise en page s’est bien ajustée automatiquement.

Activer Fancybox

Le problème c’est qu’il faudrait pouvoir rendre les images cliquables et que ça puisse zoomer automatiquement, pour cela je vous propose une méthode toute simple d’intégration. Pour commencer, ajoutez au début du fichier « cms.tpl » de votre thème, le code ci-dessous (celui-ci va charger les librairies nécessaires).

<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/fancybox/2.1.5/jquery.fancybox.pack.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/fancybox/2.1.5/jquery.fancybox.min.css" type="text/css" media="screen" />
    <script>
        {literal}
            $(document).ready(function(){
                $(".fancybox").fancybox();
            });
    {/literal}
</script>

A présent il suffit de modifier vos images, le code initial

<img src="http://www.webbax.ch/downloads/blog/2016/22-07/bike.jpg" class="img-thumbnail" />

à remplacer par

<a href="http://www.webbax.ch/downloads/blog/2016/22-07/bike.jpg" class="fancybox"><img src="http://www.webbax.ch/downloads/blog/2016/22-07/bike.jpg" class="img-thumbnail" /></a>

Ensuite, vous rechargez à nouveau la page et cela devrait fonctionner, le clic devrait déclencher un zoom sur image. C’est le fait d’avoir indiqué « fancybox » dans l’attribut « class » sur le lien de votre image qui permet ce comportement.

Et voilà le résultat, la page est quand même bien plus sympa ainsi !

Et voilà le résultat, la page est quand même bien plus sympa ainsi !

Bilan

Les pages CMS de Prestashop ont déjà bien évoluées, on peut créer des catégories / sous-catégories, mais en terme d’agencement du contenu c’est plutôt limité. Il n’est pas très difficile de maîtriser la technologie Boostrap, à mon avis cela vaut la peine de vous y intéresser, car vous pourrez designer des mises en page plus abouties qu’en passant par l’éditeur Wysiwyg.

Cet article Ajoutez Fancybox dans vos pages CMS Prestashop est apparu en premier sur Webbax | Expert E-commerce Prestashop.

Dans Prestashop supprimez l’objet du formulaire de contact

$
0
0

Quand on démarre un Prestashop, je conseille toujours d’éviter de faire trop de changement dans les sources du thème, mais quand ça peut optimiser l’ergonomie côté acheteur pourquoi s’en priver.

Optimiser le formulaire de contact

Pensez « Simplicité »

Une partie des marchands veulent dans leur formulaire de contact, toutes les informations possibles et imaginables, parce qu’il faut absolument tout récupérer du client. Mais est-ce là une bonne stratégie ? Ne faudrait-il pas plutôt chercher la simplification ?

Une autre partie des marchands cherchent à simplifier le formulaire de contact de base, fourni par défaut par Prestashop. Par exemple le champ objet, beaucoup de marchands ne veulent pas l’avoir parce qu’il est bien souvent inutile vous comprendrez pourquoi à l’étape suivante.

Est-ce que le champ objet est aussi utile qu'il en a l'air ?

Est-ce que le champ objet est aussi utile qu’il en a l’air ?

Retirons ensemble le champ « Objet »

Bien souvent quand une boutique démarre, y’a pas 36 départements ou rubrique… tous les mails arrivent au même endroit et on est rarement assez gros pour demander au client précisément à qui il désire s’adresser… il veut contacter le shop c’est tout.

Le problème c’est que un’partie des marchands ont un, voir deux éléments dans cette liste (Service client & Webmaster) ce qui bien souvent totalement inutile, car l’email arrivera à la même destination. Le pire c’est que si le client qui valide le formulaire, oublie de faire sa sélection, cela génère une erreur… ce n’est pas dramatique en soit, mais cela encombre l’affichage et ralenti le client dans son processus.

Bien souvent les clients oublient de sélectionner le sujet lors de la validation, alors qu'en plus c'est une information qui ne nous intéresse pas.

Bien souvent les clients oublient de sélectionner le sujet lors de la validation, alors qu’en plus c’est une information qui ne nous intéresse pas.

Pour corriger le problème nous allons retirer ce champ du formulaire de contact et mettre un champ caché avec une valeur prédéfinie. Cela permettra que le formulaire puisse être validé sans sélection et qu’il puisse correspondre aux exigences de la base de données de Prestashop.

Dans le fichier « contact-form.tpl » de votre thème partir de la ligne 58 on met en commentaire le bloc suivant avec {* et *} :

{* Webbax - 02.09.16 - retrait du champ sujet
<div class="form-group selector1">
        <label for="id_contact">{l s='Subject Heading'}</label>
{if isset($customerThread.id_contact) && $customerThread.id_contact && $contacts|count}
                {assign var=flag value=true}
                {foreach from=$contacts item=contact}
                        {if $contact.id_contact == $customerThread.id_contact}
                                <input type="text" class="form-control" id="contact_name" name="contact_name" value="{$contact.name|escape:'html':'UTF-8'}" readonly="readonly" />
                                <input type="hidden" name="id_contact" value="{$contact.id_contact|intval}" />
                                {$flag=false}
                        {/if}
                {/foreach}
                {if $flag && isset($contacts.0.id_contact)}
                                <input type="text" class="form-control" id="contact_name" name="contact_name" value="{$contacts.0.name|escape:'html':'UTF-8'}" readonly="readonly" />
                                <input type="hidden" name="id_contact" value="{$contacts.0.id_contact|intval}" />
                {/if}
</div>
{else}
        <select id="id_contact" class="form-control" name="id_contact">
                <option value="0">{l s='-- Choose --'}</option>
                {foreach from=$contacts item=contact}
                        <option value="{$contact.id_contact|intval}"{if isset($smarty.request.id_contact) && $smarty.request.id_contact == $contact.id_contact} selected="selected"{/if}>{$contact.name|escape:'html':'UTF-8'}</option>
                {/foreach}
        </select>
</div>
        <p id="desc_contact0" class="desc_contact{if isset($smarty.request.id_contact)} unvisible{/if}">&nbsp;</p>
        {foreach from=$contacts item=contact}
                <p id="desc_contact{$contact.id_contact|intval}" class="desc_contact contact-title{if !isset($smarty.request.id_contact) || $smarty.request.id_contact|intval != $contact.id_contact|intval} unvisible{/if}">
                        <i class="icon-comment-alt"></i>{$contact.description|escape:'html':'UTF-8'}
                </p>
        {/foreach}
{/if}
*}

Puis ensuite juste après le bloc que vous venez de commenter vous ajoutez le code suivant :

{* Webbax - 02.09.16 - ajout champ caché *}
<input type="hidden" name="id_contact" value="{$contacts.0.id_contact|intval}" />

Et voilà c’est fini, maintenant il ne reste plus qu’à tester pour voir si le champ a bien disparu et si le formulaire passe correctement la validation.  Si vous n’avez pas compris comment modifier le fichier TPL, vous pouvez aussi télécharger le fichier directement modifié.

Tout ça pour ça ? Finalement c'est qu'un champ non ? Oui, c'est vrai, mais sachez que ce sont les détails qui feront la différence entre un bon et un mauvais site e-commerce. Chaque élément aura donc son importance !

Tout ça pour ça ? Finalement c’est qu’un champ non ? Oui, c’est vrai mais sachez que ce sont les détails qui feront la différence entre un bon et un mauvais site e-commerce. Chaque élément aura donc son importance !

Vous aimez les formulaires ?

Est-ce que vous avez déjà été sur un site où il faut remplir un formulaire qui ne fonctionne pas et qui fait surgir à chaque validation un nouveau message d’erreur (c’est diaboliquement énervant). Cela est encore plus vrai sur mobile où tablette, car la saisie est plus complexe et la frustration plus grande en cas de non-validation immédiate du formulaire.

Bilan

Dans le cas présent on se trouve au final avec seulement deux champs, l’adresse e-mail et le message moins que ça c’est difficile, car on demande là vraiment le strict minimum au client. On regrettera malgré tout le fait que dans Prestashop nativement, on ne peut pas avoir une série de champs complémentaires à dispositions qui soient manageables via back-office (actuellement obligé de passer via un module tiers ou développement sur mesure).

Cet article Dans Prestashop supprimez l’objet du formulaire de contact est apparu en premier sur Webbax | Expert E-commerce Prestashop.

Ne perdez pas vos mails sous Prestashop & WordPress

$
0
0

Que se passe-t-il quand vous rencontrez un problème avec vos boîtes e-mails ? Parfois il peut y avoir un soucis de relai ou des blocages de l’hébergeur, pensez à vous prémunir avant que le problème survienne.

Etrange, je reçois moins d’emails

Qui ne s’est pas posé cette question un jour… c’est calme sur le site ou je reçois moins de mails ? Et finalement vous faites quelques tests et vous constatez que tout simplement les mails envoyés depuis votre site ne sont pas ensuite remis.

Ce qui est problématique c’est que bien souvent si vous n’avez pas de copie de ces mails, ils seront perdus donc vous devez absolument stocker ces mails dans la base de données de votre hébergement pour ne pas perdre les demandes / questions de vos clients.

Sous Prestashop

Dans Prestashop tout est déjà prévu pour se prémunir de ce genre de problème, il suffit pour cela d’accéder à la rubrique « Clients -> Contact » et d’ouvrir chaque contact enregistré dans la liste. Vous avez ensuite une option pour enregistrer les message qu’il faudra mettre à oui.

Bien souvent dans le compte par défaut (le 1er) l’option est activée, mais pour les autres ce n’est pas toujours le cas. Il faut s’assurer que cette option est activée, elle vous sauvera la mise le jour fatidique.

Bien souvent dans le compte par défaut (le 1er) l’option est activé, mais pour les autre ce n’est pas toujours le cas. Il faut s’assurer que cette option est activée, elle vous sauvera la mise le jour fatidique.

La rubrique SAV de l'onglet clients, permet d'avoir une vue sur tous les messages transmis par la boutique Prestashop.

La rubrique SAV de l’onglet clients, permet d’avoir une vue sur tous les messages transmis par la boutique Prestashop.

Sous WordPress

Alors là par contre y’a pas d’option native, il faut installer un plugin additionnel, je recommande le plugin WordPress Flamingo qui est vraiment très simple d’accès et qui ne nécessite aucune configuration. Cette extension fonctionne aussi avec « Contact Form 7 » un module très populaire et utilisé dans beaucoup de thèmes.

Le plugin est capable de conserver une copie des mails ainsi que les autres informations soumises par l'utilisateur (aussi les commentaires du blog).

Le plugin est capable de conserver une copie des mails ainsi que les autres informations soumises par l’utilisateur (aussi les commentaires du blog).

On peut accéder au détail des valeurs de la soumission de chaque formulaire.

On peut accéder au détail des valeurs de la soumission de chaque formulaire.

Que faire quand l’envoi ne fonctionne pas

La première chose que je vous conseille c’est de demander à votre hébergeur si vous n’avez pas été bloqué pour tentative de SPAM ou suite à une faille de sécurité / hacking. Ensuite, il faut tester l’envoi sur votre site / boutique et assurez-vous de faire le test avec l’option MAIL() de PHP et SMTP pour voir si au moins l’une des deux alternatives fonctionne.

Bilan

Jusqu’à présent j’ai toujours eu mes mails qui ont bien fonctionné, mais je n’avais pas forcément anticipé cette problématique, maintenant Prestashop & WordPress sont couverts, si un blocage survient je vais pouvoir continuer à assurer le suivi des mails, même si la transmission est bloquée. Ces deux mises en places sont très rapides à faire, je vous invite à faire la mise en oeuvre, pendant que tout fonctionne encore correctement (anticiper c’est toujours préférable plutôt que d’être devant les faits accomplis).

Cet article Ne perdez pas vos mails sous Prestashop & WordPress est apparu en premier sur Webbax | Expert E-commerce Prestashop.


Un antivirus gratuit pour WordPress & Prestashop

$
0
0

Il y’a quelques mois en arrière, j’ai été confronté à de gros problèmes de hacking sur WordPress et Prestashop. Difficile de savoir si les fichiers sur l’hébergement sont ensuite « clean » lorsqu’on a été piraté, faisons un test ensemble.

Des problèmes avec l’hébergeur

A un moment donné, le problème du hacking est tellement devenu critique, que mon hébergeur bloquait en permanence mon site et me fournissait un rapport des fichiers infectés. C’était sans fin, car une fois les fichiers corrigés d’un côté… le virus se propageait ailleurs et dans tous les répertoires.

Du coup, vous pouvez vous trouver avec un site complètement saturé par des mauvais scripts et cela continue de se propager. La faille a démarré à mon sens dans WordPress, puis s’est propagé sur la boutique Prestashop et au final beaucoup de fichiers ont été infectés.

Le virus en question peut prendre différente forme et être très vicieux, parfois il se loge en début ou fin de fichier et tiens parfois sur 1 ligne. Au premier coup d’oeil le fichier semble bon, mais plus loin on peut trouver du code malsain encodé.

Le code du virus s'étend sur plusieurs lignes, ici difficile de le rater. Mais quand vous avez des milliers de fichiers à vérifier... c'est délicat.
Le code du virus s’étend sur plusieurs lignes, ici difficile de le rater. Mais quand vous avez des milliers de fichiers à vérifier… c’est délicat.

Antivirus PHP

Mon but c’était de trouver un scanner facile à utiliser, qui puisse vérifier tout mon hébergement et localiser les potentielles grosses failles qui sont exploitées par la plupart des hackers. En PHP des failles peuvent être exploitées en modifiant un fichier et en lui faisant exécuter des commandes comme « eval » ou « base64 ». Je suis tombé sur ce topic qui traitait de cette problématique et qui proposait un script PHP.

De mon côté j’ai repris ce code et je l’ai légèrement adapté pour qu’il puisse fonctionner au mieux avec mes exigences. Le concept est tout simple, vous allez mettre un fichier « antivirus.php » à la racine de votre site ou de votre hébergement (avec le contenu ci-dessous). Sinon vous pouvez télécharger aussi directement le fichier Antivirus PHP au format compressé.

<?php

/* 
 * Webbax - Scanner Antivirus
 * Plugin revisité pour assurer un scan WP & Prestashop
 */

/*
Plugin Name: php Malicious Code Scanner
Plugin URI: http://www.mikestowe.com/phpmalcode
License: GPL-2
*/

define('SEND_EMAIL_ALERTS_TO','mail@gmail.com');

class phpMalCodeScan {
        
    public $infected_files = array();
    private $scanned_files = array();

    function __construct() {
        $this->scan(dirname(__FILE__));
        $this->sendalert();
    }

    function scan($dir){
        $this->scanned_files[] = $dir;
        $files = scandir($dir);
        if(!is_array($files)) {
            throw new Exception(utf8_decode('Impossible de vérifier le dossier').' '.$dir.' '.utf8_decode('Veuillez vérifier que vous avez bien les permissions nécessaires.'));
        }
        foreach($files as $file) {
            if(is_file($dir.'/'.$file) && !in_array($dir.'/'.$file,$this->scanned_files)) {
                $this->check(file_get_contents($dir.'/'.$file),$dir.'/'.$file);
            }elseif(is_dir($dir.'/'.$file) && substr($file,0,1) != '.') {
                $this->scan($dir.'/'.$file);
            }
        }
    }

    function check($contents,$file) {      
        $this->scanned_files[] = $file;      
        if(preg_match('/eval\((base64|eval|\$_|\$\$|\$[A-Za-z_0-9\{]*(\(|\{|\[))/i',$contents)) {
            $files_wishlist_found = false;
            $files_wishlist = $this->getFilesWishlist();
            foreach($files_wishlist as $file_wishlist){
                if(strpos($file,$file_wishlist)!==false){
                    $files_wishlist_found = true;
                    break;
                }
            }
            if(!$files_wishlist_found){
                $this->infected_files[] = $file; 
            }
        }
    }
    
    function sendalert() {  
        if(count($this->infected_files) != 0){
            $title = 'Virus potentiels trouvés';
            $message = '== '.$title.' =='."\n\n".'<br/>';
            $message .= 'Ces fichiers pourraient être infectés'." : \n".'<br/><br/>';
            foreach($this->infected_files as $inf) {
                $message .= " - $inf \n".'<br/>';
            }
        }else{
            $title = 'Aucun virus détecté sur l\'hébergement';
            $message = 'Félicitation, actuellement tout semble correct !';
        } 
        echo 
        '<!doctype html>
            <html lang="fr">
            <head>
              <meta charset="utf-8">
              <title>Scanner</title>
            </head>
            <body>'.
                $message.'<br/>
                Le scan est terminé !
            </body>
        </html>'; 
        $message = str_replace('<br/>','',$message);
        mail(SEND_EMAIL_ALERTS_TO,utf8_decode($title),utf8_decode($message),'FROM:');
    }

    /*
     * Fichiers autorisés
     * @param - 
     * @return array
     */
    function getFilesWishlist(){
        $wishlist = array();
        $wishlist[] = '/wp-content/plugins/popup-by-supsystic/classes/Twig/Test/IntegrationTestCase.php';
        $wishlist[] = '/administration/themes/default/js/jquery.iframe-transport.js';
        $wishlist[] = '/tools/smarty/sysplugins/smarty_internal_function_call_handler.php';
        return $wishlist;
    }
}

ini_set('memory_limit', '-1'); 
new phpMalCodeScan;

?>

Ce que vous devez modifier c’est la ligne du code ci-dessous en mettant votre adresse e-mail afin de recevoir une copie du résultat par email.

define('SEND_EMAIL_ALERTS_TO','votremail@gmail.com');

Comment l’utiliser ?

A présent il suffit simplement d’exécuter l’url vers le script ex : http://www.votresite.com/antivirus.php et le processus va commencer à se charger. Attention, cela peut prendre plusieurs minutes, tout dépendra du volume de fichiers à scanner sur votre site.

Pas de virus
Si vous avez de la chance vous obtiendrez ce message affiché à l’écran. Dans ce cas, il n’y a rien à faire sur votre hébergement.
Virus détecté
Si vous avez moins de chance, une liste de fichiers potentiellement infectés va s’afficher. Si c’est le cas, vous devez passer à l’étape suivante.

Nettoyer le virus

Si vous avez des erreurs affichées, voilà ce que je peux vous conseiller dans un premier temps :

  • Remplacez les fichiers infectés par les fichiers d’une source sûre ex. d’un backup. Sinon re-téléchargez une archive de votre WordPress ou Prestashop et remplacez les fichier infectés par les fichiers originaux fournis de base. Ensuite, relancez l’antivirus.
  • Si les fichiers sont toujours considérés comme infectés, il peut s’agit de faux positifs, dans ce cas, il faut ouvrir le fichier et chercher le code « eval » ou « base64 » pour voir si la manière de faire est bien correct (pour cela il faut des connaissances en développement). S’il s’agit d’un faux-positif, alors passez au point suivant (sinon il faudra retirer le fichier).
  • Dans le cas d’un faux positif, il faut ajouter le fichier à la liste des exclusions dans le script, pour cela il suffit d’ajouter de nouveaux éléments dans le tableau « $wishlist » à la ligne 96 du script php.
Exclusions virus
L’antivirus a une compréhension très limitée, il faut donc lui indiquer les faux positifs. Normalement, vous ne devriez pas en avoir beaucoup à citer.

Bloquer l’attaque

Une fois que vous avez un résultat positif, je conseille de laisser ainsi… par contre il se peut que vous soyez hacké à nouveau 1 jour plus tard. Si c’est le cas, vous pouvez faire ceci, remettez en place à nouveau les fichiers sains, puis mettez le/s dossiers ou fichiers impactés en CHMOD 555 sur votre hébergement (seulement ceux concernés).

Dans mon cas j’ai dû utiliser cette méthode, car la faille exacte n’a pas pu être identifiée, depuis cela fait un bon mois que le site n’a plus été gravement hacké, cela s’explique entre autre par cette restriction du CHMOD.

Le CHMOD 555 peut vous sauver dans certains cas graves.
Le CHMOD 555 peut vous sauver dans certains cas graves.

Bilan

C’est très pénible d’être victime de hacking, votre entreprise peut-être déstabilisée rapidement, ainsi que votre crédibilité. Actuellement j’ai mis en place une tâche planifiée qui exécute tous les jours ce script sur l’hébergement. Cela me permet d’être notifié chaque jour pour savoir si tout est ordre ou si je dois aller regarder un fichier suspect. Bien sûr il faut aussi prendre d’autres précautions (installez par ex. Wordfence ou WP Sécurity), mais dans ce billet je voulais surtout vous présente la problématique liée aux fichiers infectés.

Cet article Un antivirus gratuit pour WordPress & Prestashop est apparu en premier sur Webbax.

Intégrer Google Translate à son Prestashop

$
0
0

Bien souvent quand je discute avec des personnes du milieu du web, il en ressort que la traduction automatique c’est mauvais et que ça n’apporte rien de plus sur un e-commerce. Pourtant, pour le début… ça peut aider !

Traductions e-commerce

Difficile de bien réussir un shop multilingue

Il n’est pas rare d’avoir des demandes de clients, qui veulent un site en 4 langues… effectivement Prestashop est prévu pour et les traductions de base sont déjà intégrées. Le problème c’est surtout quand il faut traduire tous les produits, tous les menus… les catégories descriptions etc… sans faire appel à des professionnels c’est mission impossible.

L’intégration est longue, car il faut aussi que les modules gèrent ces traductions (ce qui n’est pas toujours le cas) et il faut aussi que les mails soient traduits et il faut faire vraiment un tour détaillé pour être certain que tout est au top. Pour être honnête, je vois rarement ce genre de site, car chaque boutique est dominante sur une langue et sur les langues étrangères, la traduction laisse assez souvent à désirer (sens / cohérence), même si cela est fait par des professionnels.

Utilisation de Google Translate

Google Translate, ne remplacera jamais une bonne traduction… mais permet de rendre plus accessible un site pour un visiteur étranger. L’option Google Translate peut-être intéressante afin d’avancer par palier. Plutôt que de penser à faire du multilingue immédiatement… commencez à bien peaufiner votre site en français et laissez-vous du temps pour optimiser le français en priorité tout en gardant Google Translate.

Ensuite, deux options s’offrent à vous :

  • Si vous avez plus de moyens, activez une langue et testez les pages de votre Prestashop, complétez les traductions dans tous les processus, puis désactivez Google Translate.
  • Si vous ne pensez pas investir « vraiment » du temps pour la traduction, contentez-vous de faire le shop en français uniquement et créez plus de contenu en français (tout en gardant l’option Google Translate).
Qui n'a jamais utilisé la traduction de page sur un site étranger ? Les termes sont parfois un peu hors sens, mais on s'y retrouve.
Qui n’a jamais utilisé la traduction de page sur un site étranger ? Les termes sont parfois un peu hors sens, mais on s’y retrouve.

Intégration à Prestashop

Pour intégrer Google Translate facilement à Prestashop, je vous conseille pour commencer de désactiver le bloc des langues (dans le back-office sous les modules).

Voici comment procéder pour l’intégration dans le thème par défaut, modifiez le fichier « \themes\default-bootstrap\modules\blockuserinfo\nav.tpl » en ajoutant tout au début du fichier le code suivant :

{* Webbax - 18.03.16 - Google Translate *}
<div class="header_user_info">
        <div id="google_translate_element" style="text-align:center;"></div><script type="text/javascript">
            {literal}
            function googleTranslateElementInit() {
                new google.translate.TranslateElement({pageLanguage: 'fr', layout: google.translate.TranslateElement.FloatPosition.TOP_RIGHT}, 'google_translate_element');
            }
            {/literal}
        </script>
        <script type="text/javascript" src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>
</div>

Et dans le fichier « \themes\default-bootstrap\css\global.css » ajoutez tout à la fin :

/* Webbax */
#google_translate_element .goog-te-gadget-icon{display:none;}
#google_translate_element a:hover{background-color:#fff;}

Une fois que vous avez procédé à ces changements, vous pouvez recharger votre page et normalement vous devriez obtenir l’intégration de la liste déroulante dans votre menu.

Et voilà vous obtenez un bloc de langues à un emplacement adapté.
Et voilà vous obtenez un bloc de langues à un emplacement adapté.
Avec une liste aussi complète, personne n'est oublié.
Avec une liste aussi complète, personne n’est oublié.
La traduction automatique ne déforme pas le shop ce qui est plutôt un bon point pour l'ergonomie.
La traduction automatique ne déforme pas le shop ce qui est plutôt un bon point pour l’ergonomie.
Même sur mobile le sélecteur de langues reste utilisable.
Même sur mobile le sélecteur de langues reste utilisable.

Bilan

La solution Google Translate n’est pas « incroyable » c’est vrai, mais elle n’est pas pire que des shop qui proposent plusieurs langues et où le contenu ne suis pas derrière… ou avec une traduction partielle seulement. Quand on fait du multilingue, soit on le fait bien… soit on se concentre sur la langue principale.

Je comprends l’engouement des clients de faire en un shop en plusieurs langues, mais une bonne partie s’en rendent compte eux-mêmes… le travail est vraiment colossal, surtout quand on est une petite structure et qu’on a beaucoup de produits. Profitez donc du week-end pour méditer sur vos traductions 😉 !

Cet article Intégrer Google Translate à son Prestashop est apparu en premier sur Webbax.

Améliorer les catégories CMS et pages CMS de Prestashop

$
0
0

Dans Prestashop, il y a très souvent l’éditeur « TinyMCE » qui est disponible, pour faire l’intégration du texte ou la mise en forme d’images. Cela est bien pratique pour le texte, mais pas vraiment pour les images surtout dans les pages CMS.

Page CMS Prestashop

Les pauvres pages CMS

Est-ce que vous l’avez déjà remarqué ? Sur les sites Prestashop, les pages CMS sont assez souvent pauvres au niveau de la présentation… dans le 95% des cas on ne retrouve que du texte. Si on se penche sur la problématique des catégories CMS (groupement de plusieurs pages), une simple liste fade de lien s’affiche… on doit pouvoir faire mieux et donner envie au visiteur de consulter le contenu.

La création de contenu via page CMS reste assez fastidieux... inclure une image oui c'est possible, mais la mise en forme n'est pas pensée pour le responsive.
La création de contenu via page CMS reste assez fastidieux… inclure une image oui c’est possible, mais la mise en forme n’est pas pensée pour le responsive.

Améliorons les pages CMS

Pour faire un premier pas vers des pages plus optimisées, je propose que l’on injecte automatiquement une image en entête de page, qui pourra être variable pour chaque page CMS. Cela aura pour intérêt de proposer un visuel plus dynamique et 100% compatible responsive, sans se creuser la tête sur la génération du contenu HTML dans la page CMS.

Bon... au moins sur la page CMS on a un titre et des sous-titres, c'est déjà mieux que rien.
Bon… au moins sur la page CMS on a un titre et des sous-titres, c’est déjà mieux que rien.

1) Pour cela, ouvrez le fichier « cms.tpl » de votre thème et ajoutez après cette ligne (n° 40 env.) :

<div class="rte{if $content_only} content_only{/if}">

Le code suivant :

{* Webbax - 21.03.16 - bannière automatique *}
<div class="container">
    <div class="row">
        <div class="col-sm-8 col-sm-offset-2">
            {assign var="img" value="img/cms/{$cms->id}.jpg"}
            {if file_exists($img)}
                <img src="{$base_dir}{$img}" />
            {/if}
        </div>
    </div>
</div>

2) Et dans le fichier « /themes/votretheme/css/cms.css » ajoutez à la fin du fichier le code suivant.

#cms .rte img{display:block;}

3) Enfin dans le dossier « /img/cms/ » déposez votre image en l’appelant par exemple « 9.jpg », le numéro 9 correspond à l’id de la page CMS. Celle-ci est indiquée dans votre back-office, il faudra respecter cette convention de nommage.

A présent si vous rechargez la page, vous devriez obtenir automatiquement une bannière en entête de page. Le template vérifie si l’image existe dans le dossier (pour la page CMS concernée), si oui il la chargera automatiquement.

A présent la page CMS charge automatiquement une image en entête, cela donne une meilleure impression.
A présent la page CMS charge automatiquement une image en entête, cela donne une meilleure impression.

Plus fort encore avec les catégories

Les catégories qui regroupent plusieurs pages CMS c’est bien pratique pour créer des sections de page sur une thématique de votre choix… mais visuellement, c’est vraiment très pauvre. Avec l’exemple ci-dessous, on a une catégorie de page CMS « Nos prestations » avec 4 pages… certes cela est lisible, mais c’est pas vraiment joli à l’oeil.

La visualisation des pages via catégories CMS est assez austère.
La visualisation des pages via catégories CMS est assez austère.

1) Modifiez à nouveau le fichier « cms.tpl » de votre thème, juste après la ligne ci-dessous :

{if isset($cms_pages) && !empty($cms_pages)}

Ajoutez le code suivant :

{* Webbax - 21.03.16 - mise en forme de la liste des pages *}
{foreach from=$cms_pages item=cmspages}
    <div id="list_pages" class="col-sm-6">
        <a href="{$link->getCMSLink($cmspages.id_cms, $cmspages.link_rewrite)|escape:'html':'UTF-8'}" class="title">{$cmspages.meta_title|escape:'html':'UTF-8'}</a>
        <a href="{$link->getCMSLink($cmspages.id_cms, $cmspages.link_rewrite)|escape:'html':'UTF-8'}" class="title">
            <img src="{$img_ps_dir}cms/{$cmspages.id_cms}.jpg">
        </a>
    </div>
{/foreach}

2) Et dans le fichier « /themes/votretheme/css/cms.css » ajoutez à la fin du fichier le code suivant :

#cms #list_pages{margin-top:20px;}
#cms #list_pages .title{font-size:20px;text-align:center;display:block;margin-bottom:10px;color:#006131;}
#cms #list_pages img{border: 1px solid #1eab65;margin: 10px 0;padding: 10px;}
#cms #list_pages img:hover{opacity: 0.8;filter: alpha(opacity=80);}

Le concept logique est toujours de s’appuyer sur des conventions, c’est-à-dire qu’on va chercher les bannières (images CMS du dossier /img/cms/) et les afficher déjà au niveau des catégories pour donner envie de cliquer à l’internaute. Si vous l’avez fait correctement les images devraient s’afficher comme l’exemple ci-dessous.

Difficile d'imaginer qu'il s'agit de la même page... et pourtant...  La modification est simple, mais change totalement l'approche visuelle, ça donne forcément envie de cliquer.
Difficile d’imaginer qu’il s’agit de la même page… et pourtant… La modification est simple, mais change totalement l’approche visuelle, ça donne forcément envie de cliquer.

Bilan

Le gros problème actuel c’est que les éditeurs de contenu ne sont pas pensés pour gérer du responsive, avec un code qui soit propre et fonctionnel. Il faudrait idéalement des champs prédéfinis, comme sur une fiche produit, cela simplifierait la mise en forme (plus limité certes, mais fonctionnel). En appliquant cette méthode chez ce client, celui-ci gagne en souplesse et peut créer lui-même un contenu visuellement plus attractif.

Cet article Améliorer les catégories CMS et pages CMS de Prestashop est apparu en premier sur Webbax.

Exportez vos clients Prestashop et leurs adresses

$
0
0

Régulièrement je constate que les clients ont besoin d’exporter des informations en provenance de leur boutique. Pour cela il existe des modules dédiés, mais en standard les exports sont limités.

Code avec Prestashop

Les exports natifs

Dans Prestashop 1.6, vous avez la possibilité d’exporter des fichiers CSV natifs, qui sont extraits directement de la visualisation des tableaux du back-office. Dans la plupart des cas, lorsque vous avez un tableau sous forme de liste, vous pouvez exporter les informations affichées. Ces données peuvent vous servir pour un « début » de base de travail, mais seront souvent incomplets.

Le bouton d'export s'affiche dans quasiment tous les listings proposés par Prestashop.
Le bouton d’export s’affiche dans quasiment tous les listings proposés par Prestashop.
C'est un bon début, mais le fichier client reste malgré tout assez incomplet... car il n'incorpore pas le détail.
C’est un bon début, mais le fichier client reste malgré tout assez incomplet… car il n’incorpore pas le détail.

Exportons les clients

Prestashop propose sous « Paramètres avancés », un outil qui s’appelle « Gestionnaire SQL », celui-ci sert principalement à préparer des requêtes à exécuter dans le but de visualiser des résultats, mais pas seulement, vous pouvez exporter les informations retournées par la requête.

Dans le cas présent vous pouvez créer une nouvelle requête qu’on va nommer « Export clients » avec le code suivant :

SELECT
pc.`id_customer`,
pc.`email`,
pa.`company`,
pc.`siret`,
pc.`id_gender`,
pa.`firstname`,
pa.`lastname`,
pa.`address1`,
pa.`address2`,
pa.`postcode`,
pa.`city`,
pa.`phone`,
pa.`phone_mobile`,
pc.`birthday`,
pc.`newsletter`,
pc.`active`
FROM ps_address pa
LEFT JOIN ps_customer pc ON pa.`id_customer`=pc.`id_customer`
WHERE
pa.`deleted`=0
AND pc.`email` != ''
AND pa.`id_supplier` = 0
AND pa.`id_manufacturer` = 0
GROUP BY pa.`address1`

Une fois que vous l’aurez créé vous pourrez l’exécuter afin de générer l’export du fichier CSV.

Le résultat est bien plus complet (adresse comprise), avec les champs de bases régulièrement utilisés.
Le résultat est bien plus complet (adresse comprise), avec les champs de bases régulièrement utilisés.

Du potentiel

Cette manière de réaliser des exports est sous-exploitées, car il serait possible d’avoir un très large choix de fichiers à générer via cet outil. Finalement, il faut « juste » coder les bonnes requêtes, régulièrement demandées par les clients (pour les commandes, les produits, catégories etc…).

On pourrait imaginer dans le futur :

  • Que Prestashop propose une série d’export déjà prédéfinis
  • Que la communauté Prestashop propose sur le forum un topic qui centralise des exemples SQL fréquents.
Une requête c'est déjà bien... mais avec une liste complète, cela pourrait devenir un outil incontournable du back-office.
Une requête c’est déjà bien… mais avec une liste complète, cela pourrait devenir un outil incontournable du back-office.

Bilan

Bon certes on ne peut pas proposer des options de critères de sélection… ou alors il faut faire des requêtes différentes ou ensuite procéder à des filtres une fois le fichier ouvert dans Excel. Sinon il existe des outils comme Custom Exporter que je déploie régulièrement chez des clients. Tout dépend des besoins forcément… mais je vous invite à expérimenter ce fameux Gestionnaire SQL et à coder vos propres requêtes.

Cet article Exportez vos clients Prestashop et leurs adresses est apparu en premier sur Webbax.

Gérer les colis encombrants dans Prestashop

$
0
0

Dans Prestashop la configuration des transporteurs est assez complète avec passablement d’options. Si à présent vous désirez gérer les articles du type encombrants, il va falloir faire preuve d’astuce.

Colis encombrant

La problématique

Prenons le cas de la Poste Suisse, qui va considérer un colis du type encombrant si celui-ci répond aux critères d’exigences suivants :

  • si la longueur du colis dépasse 100 cm
    ou si 2 des dimensions dépassent 60 cm
  • pourtour du colis 400 cm
    (2 x la hauteur + 2 x la largeur + le côté le plus long)
  • longueur maximale du colis 250 cm
  • poids du colis jusqu’à 30 Kg

Et là déjà rien que pour cumuler les 2 premiers critères dans sa tête et se dire… il est encombrant le colis ou pas ? …cela semble déjà compliqué. Mais pire encore, imaginez devoir mettre des règles automatisées dans Prestashop… avec ces critères ce n’est pas possible. Un des problèmes vient aussi du fait que dans Prestashop il n’y a pas de « taille minimale » pour le transporteur au niveau du colis.

Avant de proposer des colis encombrant avec la Poste Suisse, il est préférable de faire quelques cours math... Qui a dit que l'expédition de produits était simple ?
Avant de proposer des colis encombrant avec la Poste Suisse, il est préférable de faire quelques cours math… Qui a dit que l’expédition de produits était simple ?

Comment procéder sur Prestashop ?

Voici ci-dessous une des méthodes qui peut fonctionner si vous désirez gérer les produits encombrants.

Pour commencer, il faut créer un transporteur du style « Poste Suisse encombrant » avec une tranche de poids qui ira de 0 Kg à 30 Kg. Concernant le prix du transport, on le laisse à zéro.

Etape 1
Etape 1

Ensuite dans le colis encombrant sous l’onglet « Livraison », on laisse le poids à 0 Kg et on indique des frais de ports par unité de 27.78 CHF (ce qui correspondra ensuite à 30 CHF TTC). Dans les transporteurs en dessous on sélectionne « Poste Suisse – Encombrant ».

Etape 2
Etape 2

Enfin très important, les autres produits « classiques » qui ne sont « pas encombrants », il faudra aussi leur indiquer un transporteur spécifique. Par exemple ici sur mon produit « Robe » qui est un produit expédiable via un colis standard je force l’expédition sur « Poste Suisse – PostPac Economy ».

Etape 3
Etape 3

A présent je vais passer une commande pour ce produit encombrant, qui est dans mon cas une table et voici ce qu’on obtient dans le processus de commande.

Rien de particulier, ici on a 30 CHF pour l'expédition... ok cela concorde.
Rien de particulier, ici on a 30 CHF pour l’expédition… ok cela concorde.
Si j'achète 2 produits, les frais de ports se doublent et ça c'est un bon point.
Si j’achète 2 produits, les frais de ports se doublent et ça c’est un bon point.
Encore plus fort, si j'ajoute mon produit "classique" (basé au poids sur la tabelle officielle de la Poste) les 7 CHF de ports sont ajoutés en plus à la commande, chaque article dispose donc de ses propres frais d'expédition.
Encore plus fort, si j’ajoute mon produit « classique » (basé au poids sur la tabelle officielle de la Poste) les 7 CHF de ports sont ajoutés en plus à la commande, chaque article dispose donc de ses propres frais d’expédition.
A l'étape du transport, les deux transporteurs "Poste Suisse - PostPac Economy" et "Poste Suisse - Encombrant" ont été fusionnés ensemble, car on a ici une commande avec deux produits expédiés par deux transporteurs différents.
A l’étape du transport, les deux transporteurs « Poste Suisse – PostPac Economy » et « Poste Suisse – Encombrant » ont été fusionnés ensemble, car on a ici une commande avec deux produits expédiés par deux transporteurs différents.

Bilan

L’inconvénient de cette méthode ? Certainement le fait qu’il faut pour « chaque » produit spécifier le transporteur… même les produits qui n’ont rien à voir avec des produits encombrants. L’avenir est certainement dans le poids volumétrique où on enverrait la liste des tailles des produits présentes dans le panier + le poids, et la Poste nous retournerait le prix à payer.

Pour le moment je n’ai pas vraiment trouvé d’autres méthodes pour faire plus simple, mais cela a le mérite de fonctionner. Si vous avez une technique spéciale, n’hésitez pas à la partager dans les commentaires.

Cet article Gérer les colis encombrants dans Prestashop est apparu en premier sur Webbax.

Votre base clients Prestashop est-elle 100% valide ?

$
0
0

Depuis déjà un certain temps, je remarque que chez beaucoup de clients utilisant Prestashop, les données ne sont pas toujours 100% intègre. Cela signifie que dans la base de données certaines valeurs ne sont pas correctes.

Erreur sous Prestashop

Des erreurs invisibles

Un des cas rencontrés par exemple récemment, c’est un client d’une boutique qui ne pouvait plus se connecter sur sur la page d’identification. Celui-ci mentionne au marchand qu’il n’arrive pas à se connecter, car Prestashop affiche une erreur lors de la connexion. Plus tard en analysant la base de données du marchand, je constate que certaines valeurs dans la base de données ne sont pas approuvées par Prestashop et causent différents blocages.

Difficile de localiser une erreur dans la base de données, le plus souvent c'est à l'utilisation ou lorsqu'un client fait une remarque qu'on se doute qu'il doit y avoir un bug quelque part.
Difficile de localiser une erreur dans la base de données, le plus souvent c’est à l’utilisation ou lorsqu’un client fait une remarque qu’on se doute qu’il doit y avoir un bug quelque part.

Comment expliquer l’origine de ces problèmes

Ce qu’il faut comprendre, c’est que Prestashop utilise un modèle de validation des données, c’est-à-dire qu’au moment de sauver un enregistrement les données sont contrôlées pour être 100% valide selon leurs exigences. Malgré tout, ce contrôle peut-être outrepassé pour les raisons suivantes :

  • Migration d’une plateforme externe ex. OScommerce, Magento (etc…) vers Prestashop.
  • Mise à jour d’une ancienne version Prestashop vers une version courante.
  • Importation de données dans Prestashop (depuis le back-office ou via un outil tiers).
  • Utilisation de modules n’utilisant pas forcément les classes natives de Prestashop.
  • Opérations manuelles SQL sur la base de données.
Si toutes les règles affichées ici ne sont pas respectées pour le client à charger ou à sauver, Prestashop va provoquer une erreur fatale. L'erreur critique peut même se produire pour la lecture des données (pas seulement lors de la modification).
Si toutes les règles affichées ici ne sont pas respectées pour le client à charger ou à sauver, Prestashop va provoquer une erreur fatale. L’erreur critique peut même se produire pour la lecture des données (pas seulement lors de la modification).

Est-ce que j’ai des erreurs dans ma base ?

Nous allons faire le test pour vos clients, créez un fichier « customers.php » dans le dossier suivant « /modules/scripts » et ajoutez le contenu suivant dans le fichier.

/*
 * Webbax - contrôle validité des clients
 *
 */
include(dirname(__FILE__).'/../../config/config.inc.php');
$customers = Db::getInstance()->ExecuteS('SELECT * FROM `'._DB_PREFIX_.'customer`');
foreach($customers as $c){
    $Customer = new Customer($c['id_customer']);
    if(!$Customer->validateFields(false)){
       $err = $Customer->validateFields(false,true);
       echo $err.'<br/>';
       p($Customer);
    }
}

if(!isset($err)){
    echo 'Aucune erreur dans votre base clients';
}

Ce code va lire vos enregistrements et afficher une erreur sur l’enregistrement client comportant l’erreur. Dans votre cas pour voir le résultat il suffit d’exécuter l’url suivante : http://votreshop.com/modules/scripts/customers.php.

Lors de l’exécution de l’url ci-dessus, vous obtiendrez une erreur si vous avez des problèmes dans vos enregistrements. Par exemple ici on nous mentionne « Customer->firstname is empty », il manque le prénom pour le client portant l’id numéro 1.

Même si cela peut sembler impossible, vous pouvez avoir des clients par exemple sans nom, ou avec une date d'anniversaire incorrecte ou hors tranche (cas fréquent).
Même si cela peut sembler impossible, vous pouvez avoir des clients par exemple sans nom, ou avec une date d’anniversaire incorrecte ou hors tranche (cas fréquent).
Dans la base de données sous PHPmyAdmin, le champ est effectivement vide, on va donc le remplir avec une valeur.
Dans la base de données sous PHPmyAdmin, le champ est effectivement vide, on va donc le remplir avec une valeur.
A présent si j'exécute à nouveau mon url, les clients sont tous considérés comme "valides".
A présent si j’exécute à nouveau mon url, les clients sont tous considérés comme « valides ».

Cela est valable pour tous les autres enregistrements

Dans le cas présent on a pris l’exemple des clients, mais il n’est pas rare d’avoir vu ce problème de cohérence par exemple sur les produits ou encore sur les commandes. Je l’ai aussi déjà constaté en exportant des informations depuis certaines boutiques, Prestashop refuse de le faire, car l’enregistrement n’est pas intègre. Si vous cherchez à creuser plus loin, vous pouvez utiliser la même logique de script pour contrôler d’autres tables.

Bilan

Il est toujours difficile d’expliquer l’origine de ces erreurs, mais il est important de les rectifier. Par exemple dans le cas d’un marchand, certains enregistrements empêchaient la relance du bon cadeau pour l’anniversaire du client. On se retrouve ensuite avec un module paralysé en permanence pour tous les autres clients, tout ça pour quelques enregistrements obsolètes.

Cet article Votre base clients Prestashop est-elle 100% valide ? est apparu en premier sur Webbax.

Améliorer Prestashop sur mobile sans être développeur

$
0
0

Actuellement je reste assez partagé sur les versions mobiles que l’on nous propose (en général). Pourquoi ? Parce qu’il ne suffit pas simplement d’adapter l’interface, il faut aussi adopter un comportement minimaliste.

Prestashop Mobile

Le responsive à l’arrache

Pour une bonne partie des clients, voici la méthode que l’on applique… on achète un thème responsive Prestashop, on le configure et on monte la boutique et toute la configuration qui va avec. Ensuite, on fait les tests sur mobiles / tablettes pour vérifier que ça s’affiche bien… En principe c’est pas trop mal, mais on pourrait faire beaucoup mieux en prenant le temps d’optimiser chaque page de la boutique.

Un thème Prestashop responsive ? Cela fait partie du standard, mais cela ne veut pas dire pour autant que la version mobile est agréable à utiliser.
Un thème Prestashop responsive ? Cela fait partie du standard, mais cela ne veut pas dire pour autant que la version mobile est agréable à utiliser.

Redimensionner le contenu n’est pas toujours la solution !

Il faut être honnête, je vois encore rarement des « bonnes » versions mobiles pour des boutiques e-commerce (hormis peut-être chez des grosses sociétés). Actuellement la stratégie du responsive c’est de créer une multitude de blocs sur mobiles, avec des pages extrêmement longues et des éléments qui s’enchaînent à perte de vue (on scroll encore et encore).

Bien souvent tous les éléments de la version « desktop » sont repris et re-dimensionnés… Il faudrait plutôt se poser la question : « A-t-on vraiment besoin de tout cela ? ». Combien de fois j’ai vu de sliders de page d’accueil illisibles sur mobile ? Et d’ailleurs faut-il un slider ? Combien de fois j’ai vu des blocs à n’en plus finir (colonnes gauches et droite) sur mobile on ne distingue presque plus le contenu central.

Oui c'est compatible mobile, mais est-ce que visuellement c'est pratique et ergonomique pour vos clients ? Niveau affichage, c'est quand même moins bien que la version classique ordinateur c'est certain.
Oui c’est compatible mobile, mais est-ce que visuellement c’est pratique et ergonomique pour vos clients ? Niveau affichage, c’est quand même moins bien que la version classique ordinateur c’est certain.

Améliorez l’expérience mobile en 2 clics

Ce qu’il faut savoir c’est que Prestashop propose une option pour chaque bloc / modules, qui permet d’être affiché ou non sur mobile. Même si la fonctionnalité semble évidente, vous pouvez très facilement désactiver des blocs sur mobiles uniquement ou voir même sur tablette.

Faites cet exercice tout simple, allez sur votre boutique avec votre smartphone et posez vous la question : « Est-ce que mon client a besoin de voir ça ? Est-ce indispensable ? ». Parfois certains éléments ne sont pas assez lisibles sur mobile (sans être retravaillé) et il faut mieux les désactiver qu’encombrer la page et la navigation.

L'option est facile d'accès, un non développeur pourra déjà alléger son Prestashop, en désactivant les modules / blocs superflus sur mobiles.
L’option est facile d’accès, un non développeur pourra déjà alléger son Prestashop, en désactivant les modules / blocs superflus sur mobiles.

L’avantage du thème mono-colone

Certains thèmes ne proposent pas une colonne gauche / droite, le contenu est directement centré avec un seul bloc principal. L’avantage du thème mono-colonne c’est que lorsque vous optimisez la boutique pour la version « classique », vous optimisez en même temps le site pour la version mobile.

Sur Prestashop Addons, vous pouvez filtrer sur les thèmes en fonction de leur nombre de colonnes. Avec une seule colonne on simplifie l’interface, on est donc gagnant forcément sur la partie optimisation mobile.

Tout dépend des  goûts, mais plus vous simplifiez, moins vous aurez de contraintes techniques à gérer.
Tout dépend des goûts, mais plus vous simplifiez, moins vous aurez de contraintes techniques à gérer.

Bilan

Pour faire une bonne version mobile, il faut la travailler… il faudrait passer du temps à étudier chaque page pour que ça soit pratique et ergonomique pour le visiteur. Actuellement on se contente du standard, mais pour ceux qui aimeraient vraiment « mieux vendre » sur mobile, je pense qu’il faut se réserver du temps pour optimiser et alléger l’interface. Et vous ? Avez-vous déjà pris du temps pour optimiser votre version mobile ?

Cet article Améliorer Prestashop sur mobile sans être développeur est apparu en premier sur Webbax.


Ajoutez Fancybox dans vos pages CMS Prestashop

$
0
0

Les pages CMS de Prestashop sont actuellement très simplistes… et il faut la plupart du temps passer par la case édition HTML. Profitons d’ajouter un zoom Fancybox pour dynamiser la page.

Prestashop Fancybox

Vous devez utiliser Boostrap

Ce que vous devez savoir c’est que Prestashop utilise un système de grille, valable aussi pour le responsive, mobile tablettes, smartphone. Actuellement le top du top lorsqu’on crée du contenu pour les pages CMS c’est d’utiliser les règles de codage proposées par Boostrap.

Vous pouvez bien sûr créer du contenu via l’éditeur de Prestashop, mais le code généré sera « sale » et inutilisable sur les autres support. L’éditeur fonctionne à condition que vous vous limitiez uniquement à des titres, du texte et des retours à la ligne.

Il faut maîtriser un minimum les conventions de codage HTML de boostrap pour que votre contenu puisse se positionner et s'afficher correctement.
Il faut maîtriser un minimum les conventions de codage HTML de Boostrap pour que votre contenu puisse se positionner et s’afficher correctement.

Créons une maquette de base

Dans le cas présent on va tenter quelque chose d’assez simple on va générer du code pour pouvoir faire afficher un bloc de texte, un titre, ainsi que 3 images sur le côté avec pour objectif que cela puisse fonctionner sur les différents supports. Pour cela vous pouvez ajouter le code suivant dans votre page CMS (ajoutez le bien via le code source / bouton édition html).

<div class="row">
	<div class="col-sm-6">
		<div class="col-sm-12">
			<img src="https://www.webbax.ch/downloads/blog/2016/22-07/bike.jpg" class="img-thumbnail" />
		</div>
		<div class="col-sm-6">
			<img src="https://www.webbax.ch/downloads/blog/2016/22-07/bike.jpg" class="img-thumbnail" />
		</div>
		<div class="col-sm-6">
			<img src="https://www.webbax.ch/downloads/blog/2016/22-07/bike.jpg" class="img-thumbnail" />
		</div>
	</div>
	<div class="col-sm-6">
		<h2>Lorem ipsu</h2>
		Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam malesuada mi ac faucibus elementum. Cras ornare neque non dignissim tincidunt. Quisque nec augue in mauris viverra consequat. Sed enim lorem, fringilla ut lorem sit amet, congue interdum diam. Proin pretium sagittis mattis. Integer maximus lectus quis fringilla lobortis. Duis non tortor lorem. Duis sit amet nisl quis justo viverra imperdiet. Cras vitae fermentum arcu, et consectetur ante. Sed nec lectus quis ipsum tempus vulputate. Vestibulum urna ex, efficitur a magna luctus, suscipit lacinia tellus. Curabitur eget ante enim. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur sed varius sem, sit amet varius magna. Praesent congue sodales rutrum.<br/>
		<br/>
		Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam malesuada mi ac faucibus elementum. Cras ornare neque non dignissim tincidunt. Quisque nec augue in mauris viverra consequat. Sed enim lorem, fringilla ut lorem sit amet, congue interdum diam. Proin pretium sagittis mattis. Integer maximus lectus quis fringilla lobortis. Duis non tortor lorem. Duis sit amet nisl quis justo viverra imperdiet. Cras vitae fermentum arcu, et consectetur ante. Sed nec lectus quis ipsum tempus vulputate. Vestibulum urna ex, efficitur a magna luctus, suscipit lacinia tellus. Curabitur eget ante enim. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur sed varius sem, sit amet varius magna. Praesent congue sodales rutrum.<br/>
		<br/>
		Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam malesuada mi ac faucibus elementum. Cras ornare neque non dignissim tincidunt. Quisque nec augue in mauris viverra consequat. Sed enim lorem, fringilla ut lorem sit amet, congue interdum diam. Proin pretium sagittis mattis. Integer maximus lectus quis fringilla lobortis. Duis non tortor lorem. Duis sit amet nisl quis justo viverra imperdiet.
	</div>
</div>

Ensuite, vous pouvez vérifier, normalement à la visualisation vous devriez obtenir un résultat similaire à la capture ci-dessous.

Grâce à Boostrap on obtient une mise en page correcte rapidement.
Grâce à Boostrap on obtient une mise en page correcte rapidement.
Pourquoi je mets les images à gauche ? Parce que sur mobile, le bloc de gauche a la priorité. Le client verra donc en premier les images sur un mobile au lieu du pavé de texte. Notez que la mise en page s'est bien ajustée automatiquement.
Pourquoi je mets les images à gauche ? Parce que sur mobile, le bloc de gauche a la priorité. Le client verra donc en premier les images sur un mobile au lieu du pavé de texte. Notez que la mise en page s’est bien ajustée automatiquement.

Activer Fancybox

Le problème c’est qu’il faudrait pouvoir rendre les images cliquables et que ça puisse zoomer automatiquement, pour cela je vous propose une méthode toute simple d’intégration. Pour commencer, ajoutez au début du fichier « cms.tpl » de votre thème, le code ci-dessous (celui-ci va charger les librairies nécessaires).

<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/fancybox/2.1.5/jquery.fancybox.pack.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/fancybox/2.1.5/jquery.fancybox.min.css" type="text/css" media="screen" />
    <script>
        {literal}
            $(document).ready(function(){
                $(".fancybox").fancybox();
            });
    {/literal}
</script>

A présent il suffit de modifier vos images, le code initial

<img src="https://www.webbax.ch/downloads/blog/2016/22-07/bike.jpg" class="img-thumbnail" />

à remplacer par

<a href="https://www.webbax.ch/downloads/blog/2016/22-07/bike.jpg" class="fancybox"><img src="https://www.webbax.ch/downloads/blog/2016/22-07/bike.jpg" class="img-thumbnail" /></a>

Ensuite, vous rechargez à nouveau la page et cela devrait fonctionner, le clic devrait déclencher un zoom sur image. C’est le fait d’avoir indiqué « fancybox » dans l’attribut « class » sur le lien de votre image qui permet ce comportement.

Et voilà le résultat, la page est quand même bien plus sympa ainsi !
Et voilà le résultat, la page est quand même bien plus sympa ainsi !

Bilan

Les pages CMS de Prestashop ont déjà bien évoluées, on peut créer des catégories / sous-catégories, mais en terme d’agencement du contenu c’est plutôt limité. Il n’est pas très difficile de maîtriser la technologie Boostrap, à mon avis cela vaut la peine de vous y intéresser, car vous pourrez designer des mises en page plus abouties qu’en passant par l’éditeur Wysiwyg.

Cet article Ajoutez Fancybox dans vos pages CMS Prestashop est apparu en premier sur Webbax.

Dans Prestashop supprimez l’objet du formulaire de contact

$
0
0

Quand on démarre un Prestashop, je conseille toujours d’éviter de faire trop de changement dans les sources du thème, mais quand ça peut optimiser l’ergonomie côté acheteur pourquoi s’en priver.

Optimiser le formulaire de contact

Pensez « Simplicité »

Une partie des marchands veulent dans leur formulaire de contact, toutes les informations possibles et imaginables, parce qu’il faut absolument tout récupérer du client. Mais est-ce là une bonne stratégie ? Ne faudrait-il pas plutôt chercher la simplification ?

Une autre partie des marchands cherchent à simplifier le formulaire de contact de base, fourni par défaut par Prestashop. Par exemple le champ objet, beaucoup de marchands ne veulent pas l’avoir parce qu’il est bien souvent inutile vous comprendrez pourquoi à l’étape suivante.

Est-ce que le champ objet est aussi utile qu'il en a l'air ?
Est-ce que le champ objet est aussi utile qu’il en a l’air ?

Retirons ensemble le champ « Objet »

Bien souvent quand une boutique démarre, y’a pas 36 départements ou rubrique… tous les mails arrivent au même endroit et on est rarement assez gros pour demander au client précisément à qui il désire s’adresser… il veut contacter le shop c’est tout.

Le problème c’est que un’partie des marchands ont un, voir deux éléments dans cette liste (Service client & Webmaster) ce qui bien souvent totalement inutile, car l’email arrivera à la même destination. Le pire c’est que si le client qui valide le formulaire, oublie de faire sa sélection, cela génère une erreur… ce n’est pas dramatique en soit, mais cela encombre l’affichage et ralenti le client dans son processus.

Bien souvent les clients oublient de sélectionner le sujet lors de la validation, alors qu'en plus c'est une information qui ne nous intéresse pas.
Bien souvent les clients oublient de sélectionner le sujet lors de la validation, alors qu’en plus c’est une information qui ne nous intéresse pas.

Pour corriger le problème nous allons retirer ce champ du formulaire de contact et mettre un champ caché avec une valeur prédéfinie. Cela permettra que le formulaire puisse être validé sans sélection et qu’il puisse correspondre aux exigences de la base de données de Prestashop.

Dans le fichier « contact-form.tpl » de votre thème partir de la ligne 58 on met en commentaire le bloc suivant avec {* et *} :

{* Webbax - 02.09.16 - retrait du champ sujet
<div class="form-group selector1">
        <label for="id_contact">{l s='Subject Heading'}</label>
{if isset($customerThread.id_contact) && $customerThread.id_contact && $contacts|count}
                {assign var=flag value=true}
                {foreach from=$contacts item=contact}
                        {if $contact.id_contact == $customerThread.id_contact}
                                <input type="text" class="form-control" id="contact_name" name="contact_name" value="{$contact.name|escape:'html':'UTF-8'}" readonly="readonly" />
                                <input type="hidden" name="id_contact" value="{$contact.id_contact|intval}" />
                                {$flag=false}
                        {/if}
                {/foreach}
                {if $flag && isset($contacts.0.id_contact)}
                                <input type="text" class="form-control" id="contact_name" name="contact_name" value="{$contacts.0.name|escape:'html':'UTF-8'}" readonly="readonly" />
                                <input type="hidden" name="id_contact" value="{$contacts.0.id_contact|intval}" />
                {/if}
</div>
{else}
        <select id="id_contact" class="form-control" name="id_contact">
                <option value="0">{l s='-- Choose --'}</option>
                {foreach from=$contacts item=contact}
                        <option value="{$contact.id_contact|intval}"{if isset($smarty.request.id_contact) && $smarty.request.id_contact == $contact.id_contact} selected="selected"{/if}>{$contact.name|escape:'html':'UTF-8'}</option>
                {/foreach}
        </select>
</div>
        <p id="desc_contact0" class="desc_contact{if isset($smarty.request.id_contact)} unvisible{/if}">&nbsp;</p>
        {foreach from=$contacts item=contact}
                <p id="desc_contact{$contact.id_contact|intval}" class="desc_contact contact-title{if !isset($smarty.request.id_contact) || $smarty.request.id_contact|intval != $contact.id_contact|intval} unvisible{/if}">
                        <i class="icon-comment-alt"></i>{$contact.description|escape:'html':'UTF-8'}
                </p>
        {/foreach}
{/if}
*}

Puis ensuite juste après le bloc que vous venez de commenter vous ajoutez le code suivant :

{* Webbax - 02.09.16 - ajout champ caché *}
<input type="hidden" name="id_contact" value="{$contacts.0.id_contact|intval}" />

Et voilà c’est fini, maintenant il ne reste plus qu’à tester pour voir si le champ a bien disparu et si le formulaire passe correctement la validation.  Si vous n’avez pas compris comment modifier le fichier TPL, vous pouvez aussi télécharger le fichier directement modifié.

Tout ça pour ça ? Finalement c'est qu'un champ non ? Oui, c'est vrai, mais sachez que ce sont les détails qui feront la différence entre un bon et un mauvais site e-commerce. Chaque élément aura donc son importance !
Tout ça pour ça ? Finalement c’est qu’un champ non ? Oui, c’est vrai mais sachez que ce sont les détails qui feront la différence entre un bon et un mauvais site e-commerce. Chaque élément aura donc son importance !

Vous aimez les formulaires ?

Est-ce que vous avez déjà été sur un site où il faut remplir un formulaire qui ne fonctionne pas et qui fait surgir à chaque validation un nouveau message d’erreur (c’est diaboliquement énervant). Cela est encore plus vrai sur mobile où tablette, car la saisie est plus complexe et la frustration plus grande en cas de non-validation immédiate du formulaire.

Bilan

Dans le cas présent on se trouve au final avec seulement deux champs, l’adresse e-mail et le message moins que ça c’est difficile, car on demande là vraiment le strict minimum au client. On regrettera malgré tout le fait que dans Prestashop nativement, on ne peut pas avoir une série de champs complémentaires à dispositions qui soient manageables via back-office (actuellement obligé de passer via un module tiers ou développement sur mesure).

Cet article Dans Prestashop supprimez l’objet du formulaire de contact est apparu en premier sur Webbax.

Ne perdez pas vos mails sous Prestashop & WordPress

$
0
0

Que se passe-t-il quand vous rencontrez un problème avec vos boîtes e-mails ? Parfois il peut y avoir un soucis de relai ou des blocages de l’hébergeur, pensez à vous prémunir avant que le problème survienne.

Etrange, je reçois moins d’emails

Qui ne s’est pas posé cette question un jour… c’est calme sur le site ou je reçois moins de mails ? Et finalement vous faites quelques tests et vous constatez que tout simplement les mails envoyés depuis votre site ne sont pas ensuite remis.

Ce qui est problématique c’est que bien souvent si vous n’avez pas de copie de ces mails, ils seront perdus donc vous devez absolument stocker ces mails dans la base de données de votre hébergement pour ne pas perdre les demandes / questions de vos clients.

Sous Prestashop

Dans Prestashop tout est déjà prévu pour se prémunir de ce genre de problème, il suffit pour cela d’accéder à la rubrique « Clients -> Contact » et d’ouvrir chaque contact enregistré dans la liste. Vous avez ensuite une option pour enregistrer les message qu’il faudra mettre à oui.

Bien souvent dans le compte par défaut (le 1er) l’option est activée, mais pour les autres ce n’est pas toujours le cas. Il faut s’assurer que cette option est activée, elle vous sauvera la mise le jour fatidique.
Bien souvent dans le compte par défaut (le 1er) l’option est activé, mais pour les autre ce n’est pas toujours le cas. Il faut s’assurer que cette option est activée, elle vous sauvera la mise le jour fatidique.
La rubrique SAV de l'onglet clients, permet d'avoir une vue sur tous les messages transmis par la boutique Prestashop.
La rubrique SAV de l’onglet clients, permet d’avoir une vue sur tous les messages transmis par la boutique Prestashop.

Sous WordPress

Alors là par contre y’a pas d’option native, il faut installer un plugin additionnel, je recommande le plugin WordPress Flamingo qui est vraiment très simple d’accès et qui ne nécessite aucune configuration. Cette extension fonctionne aussi avec « Contact Form 7 » un module très populaire et utilisé dans beaucoup de thèmes.

Le plugin est capable de conserver une copie des mails ainsi que les autres informations soumises par l'utilisateur (aussi les commentaires du blog).
Le plugin est capable de conserver une copie des mails ainsi que les autres informations soumises par l’utilisateur (aussi les commentaires du blog).
On peut accéder au détail des valeurs de la soumission de chaque formulaire.
On peut accéder au détail des valeurs de la soumission de chaque formulaire.

Que faire quand l’envoi ne fonctionne pas

La première chose que je vous conseille c’est de demander à votre hébergeur si vous n’avez pas été bloqué pour tentative de SPAM ou suite à une faille de sécurité / hacking. Ensuite, il faut tester l’envoi sur votre site / boutique et assurez-vous de faire le test avec l’option MAIL() de PHP et SMTP pour voir si au moins l’une des deux alternatives fonctionne.

Bilan

Jusqu’à présent j’ai toujours eu mes mails qui ont bien fonctionné, mais je n’avais pas forcément anticipé cette problématique, maintenant Prestashop & WordPress sont couverts, si un blocage survient je vais pouvoir continuer à assurer le suivi des mails, même si la transmission est bloquée. Ces deux mises en places sont très rapides à faire, je vous invite à faire la mise en oeuvre, pendant que tout fonctionne encore correctement (anticiper c’est toujours préférable plutôt que d’être devant les faits accomplis).

Cet article Ne perdez pas vos mails sous Prestashop & WordPress est apparu en premier sur Webbax.

Un antivirus gratuit pour WordPress & Prestashop

$
0
0

Il y’a quelques mois en arrière, j’ai été confronté à de gros problèmes de hacking sur WordPress et Prestashop. Difficile de savoir si les fichiers sur l’hébergement sont ensuite « clean » lorsqu’on a été piraté, faisons un test ensemble.

Des problèmes avec l’hébergeur

A un moment donné, le problème du hacking est tellement devenu critique, que mon hébergeur bloquait en permanence mon site et me fournissait un rapport des fichiers infectés. C’était sans fin, car une fois les fichiers corrigés d’un côté… le virus se propageait ailleurs et dans tous les répertoires.

Du coup, vous pouvez vous trouver avec un site complètement saturé par des mauvais scripts et cela continue de se propager. La faille a démarré à mon sens dans WordPress, puis s’est propagé sur la boutique Prestashop et au final beaucoup de fichiers ont été infectés.

Le virus en question peut prendre différente forme et être très vicieux, parfois il se loge en début ou fin de fichier et tiens parfois sur 1 ligne. Au premier coup d’oeil le fichier semble bon, mais plus loin on peut trouver du code malsain encodé.

Le code du virus s'étend sur plusieurs lignes, ici difficile de le rater. Mais quand vous avez des milliers de fichiers à vérifier... c'est délicat.
Le code du virus s’étend sur plusieurs lignes, ici difficile de le rater. Mais quand vous avez des milliers de fichiers à vérifier… c’est délicat.

Antivirus PHP

Mon but c’était de trouver un scanner facile à utiliser, qui puisse vérifier tout mon hébergement et localiser les potentielles grosses failles qui sont exploitées par la plupart des hackers. En PHP des failles peuvent être exploitées en modifiant un fichier et en lui faisant exécuter des commandes comme « eval » ou « base64 ». Je suis tombé sur ce topic qui traitait de cette problématique et qui proposait un script PHP.

De mon côté j’ai repris ce code et je l’ai légèrement adapté pour qu’il puisse fonctionner au mieux avec mes exigences. Le concept est tout simple, vous allez mettre un fichier « antivirus.php » à la racine de votre site ou de votre hébergement (avec le contenu ci-dessous). Sinon vous pouvez télécharger aussi directement le fichier Antivirus PHP au format compressé.

<?php

/*
 * Webbax - Scanner Antivirus
 * Plugin revisité pour assurer un scan WP & Prestashop
 */

/*
Plugin Name: php Malicious Code Scanner
Plugin URI: http://www.mikestowe.com/phpmalcode
License: GPL-2
*/

define('SEND_EMAIL_ALERTS_TO','mail@gmail.com');

class phpMalCodeScan {

    public $infected_files = array();
    private $scanned_files = array();

    function __construct() {
        $this->scan(dirname(__FILE__));
        $this->sendalert();
    }

    function scan($dir){
        $this->scanned_files[] = $dir;
        $files = scandir($dir);
        if(!is_array($files)) {
            throw new Exception(utf8_decode('Impossible de vérifier le dossier').' '.$dir.' '.utf8_decode('Veuillez vérifier que vous avez bien les permissions nécessaires.'));
        }
        foreach($files as $file) {
            if(is_file($dir.'/'.$file) && !in_array($dir.'/'.$file,$this->scanned_files)) {
                $this->check(file_get_contents($dir.'/'.$file),$dir.'/'.$file);
            }elseif(is_dir($dir.'/'.$file) && substr($file,0,1) != '.') {
                $this->scan($dir.'/'.$file);
            }
        }
    }

    function check($contents,$file) {
        $this->scanned_files[] = $file;
        if(preg_match('/eval\((base64|eval|\$_|\$\$|\$[A-Za-z_0-9\{]*(\(|\{|\[))/i',$contents)) {
            $files_wishlist_found = false;
            $files_wishlist = $this->getFilesWishlist();
            foreach($files_wishlist as $file_wishlist){
                if(strpos($file,$file_wishlist)!==false){
                    $files_wishlist_found = true;
                    break;
                }
            }
            if(!$files_wishlist_found){
                $this->infected_files[] = $file;
            }
        }
    }

    function sendalert() {
        if(count($this->infected_files) != 0){
            $title = 'Virus potentiels trouvés';
            $message = '== '.$title.' =='."\n\n".'<br/>';
            $message .= 'Ces fichiers pourraient être infectés'." : \n".'<br/><br/>';
            foreach($this->infected_files as $inf) {
                $message .= " - $inf \n".'<br/>';
            }
        }else{
            $title = 'Aucun virus détecté sur l\'hébergement';
            $message = 'Félicitation, actuellement tout semble correct !';
        }
        echo
        '<!doctype html>
            <html lang="fr">
            <head>
              <meta charset="utf-8">
              <title>Scanner</title>
            </head>
            <body>'.
                $message.'<br/>
                Le scan est terminé !
            </body>
        </html>';
        $message = str_replace('<br/>','',$message);
        mail(SEND_EMAIL_ALERTS_TO,utf8_decode($title),utf8_decode($message),'FROM:');
    }

    /*
     * Fichiers autorisés
     * @param -
     * @return array
     */
    function getFilesWishlist(){
        $wishlist = array();
        $wishlist[] = '/wp-content/plugins/popup-by-supsystic/classes/Twig/Test/IntegrationTestCase.php';
        $wishlist[] = '/administration/themes/default/js/jquery.iframe-transport.js';
        $wishlist[] = '/tools/smarty/sysplugins/smarty_internal_function_call_handler.php';
        return $wishlist;
    }
}

ini_set('memory_limit', '-1');
new phpMalCodeScan;

?>

Ce que vous devez modifier c’est la ligne du code ci-dessous en mettant votre adresse e-mail afin de recevoir une copie du résultat par email.

define('SEND_EMAIL_ALERTS_TO','votremail@gmail.com');

Comment l’utiliser ?

A présent il suffit simplement d’exécuter l’url vers le script ex : http://www.votresite.com/antivirus.php et le processus va commencer à se charger. Attention, cela peut prendre plusieurs minutes, tout dépendra du volume de fichiers à scanner sur votre site.

Pas de virus
Si vous avez de la chance vous obtiendrez ce message affiché à l’écran. Dans ce cas, il n’y a rien à faire sur votre hébergement.
Virus détecté
Si vous avez moins de chance, une liste de fichiers potentiellement infectés va s’afficher. Si c’est le cas, vous devez passer à l’étape suivante.

Nettoyer le virus

Si vous avez des erreurs affichées, voilà ce que je peux vous conseiller dans un premier temps :

  • Remplacez les fichiers infectés par les fichiers d’une source sûre ex. d’un backup. Sinon re-téléchargez une archive de votre WordPress ou Prestashop et remplacez les fichier infectés par les fichiers originaux fournis de base. Ensuite, relancez l’antivirus.
  • Si les fichiers sont toujours considérés comme infectés, il peut s’agit de faux positifs, dans ce cas, il faut ouvrir le fichier et chercher le code « eval » ou « base64 » pour voir si la manière de faire est bien correct (pour cela il faut des connaissances en développement). S’il s’agit d’un faux-positif, alors passez au point suivant (sinon il faudra retirer le fichier).
  • Dans le cas d’un faux positif, il faut ajouter le fichier à la liste des exclusions dans le script, pour cela il suffit d’ajouter de nouveaux éléments dans le tableau « $wishlist » à la ligne 96 du script php.
Exclusions virus
L’antivirus a une compréhension très limitée, il faut donc lui indiquer les faux positifs. Normalement, vous ne devriez pas en avoir beaucoup à citer.

Bloquer l’attaque

Une fois que vous avez un résultat positif, je conseille de laisser ainsi… par contre il se peut que vous soyez hacké à nouveau 1 jour plus tard. Si c’est le cas, vous pouvez faire ceci, remettez en place à nouveau les fichiers sains, puis mettez le/s dossiers ou fichiers impactés en CHMOD 555 sur votre hébergement (seulement ceux concernés).

Dans mon cas j’ai dû utiliser cette méthode, car la faille exacte n’a pas pu être identifiée, depuis cela fait un bon mois que le site n’a plus été gravement hacké, cela s’explique entre autre par cette restriction du CHMOD.

Le CHMOD 555 peut vous sauver dans certains cas graves.
Le CHMOD 555 peut vous sauver dans certains cas graves.

Bilan

C’est très pénible d’être victime de hacking, votre entreprise peut-être déstabilisée rapidement, ainsi que votre crédibilité. Actuellement j’ai mis en place une tâche planifiée qui exécute tous les jours ce script sur l’hébergement. Cela me permet d’être notifié chaque jour pour savoir si tout est ordre ou si je dois aller regarder un fichier suspect. Bien sûr il faut aussi prendre d’autres précautions (installez par ex. Wordfence ou WP Sécurity), mais dans ce billet je voulais surtout vous présente la problématique liée aux fichiers infectés.

Cet article Un antivirus gratuit pour WordPress & Prestashop est apparu en premier sur Webbax.

Vision globale sur vos produits dans Prestashop

$
0
0

Oui, je passe clairement le gros de ma journée sur Prestashop et pourtant je continue à découvrir des pages que j’avais pas forcément fait attention. Est-ce que votre catalogue est 100% clean ou y’a-t-il du déchet ?

Vous êtes habitué à votre boutique

Quand vous êtes e-commerçant, vous travaillez à longueur de journée sur votre boutique (si vous faites correctement votre travail) et bien souvent on ne voit plus certaines choses, car cela semble normal, on s’accoutume des problèmes du quotidien.

En donnant un cours à l’Ecole club Migros sur Prestashop, je suis tombé accidentellement sur la rubrique « Suivi » présent dans le menu « Catalogue » du back-office. Et quand j’ai vu la page, je me suis dit « Encore une page de statistiques pas très intéressante… », mais je me suis trompé.

Suivi du catalogue
Sincèrement, jouez le jeu, est-ce que vous savez ce qu’il y’a réellement derrière cet onglet ? Personnellement je l’utilise jamais… peut-être parce que je suis pas un e-commerçant.

Détecteur de zones mortes

Et oui cet onglet sert à détecter les zones mortes de votre boutique, c’est-à-dire les éléments qui nécessiteraient d’être revus, parce qu’ils n’ont pas forcément de contenu ou de stock. Par exemple prenons la première rubrique, on nous montre les catégories vides. Pourquoi c’est important ? Déjà pour savoir si vous utilisez ces catégories… si elles sont vides et activées, mieux vaut les retirer pour ne pas frustrer le visiteur.

Catégories vides
Avoir des catégories vides ça ne fait pas très vendeur, mais bien souvent c’est involontaire, car le marchand ne parcours pas son catalogue via les catégories (en front-office). Pensez-donc à les désactiver ou supprimer si elles sont vides & inutiles.

Les produits sans stock ? Vous savez ce que c’est, rien de plus pénible pour un acheteur lorsqu’il y’aperçoit qu’un produit est en rupture de stock. Bien sûr le e-commerçant, fait le maximum pour se réapprovisionner (commandes fournisseurs), mais encore faut-il être bien organisé et être sûr que tous les articles importants disposent de stock. Ce serait vraiment trop bête de manquer des ventes, à cause d’un manque de stock !

Etat du stock
Il faut voir l’état du stock comme une sensibilisation pour le e-commerçant. Peut-être que cela vous permettra de vérifier les stock à zéro (surtout si vous avez un gros volume de produits proposé à la vente). Si vous travaillez en flux tendu, cela ne causera pas de problème, par contre si les produits doivent être en stock pour générer des ventes, une réflexion s’impose (restreindre le catalogue / ou investir plus large).

Enfin la dernière rubrique qui concerne les produits désactivé, mais à quoi ça pourrait bien nous servir ? Déjà, cela permet de voir si tous ces produits désactivé justifient leur présence, si ce n’est pas le cas, alors il faudrait « purger » la base, c’est-à-dire les supprimer. Ce n’est pas tout, cela permet de vous assurer qu’il n’y a pas certains produits qui ont été désactivés par mégarde et qui concrètement devraient être actifs.

Produits désactivés
Il n’est pas rare de désactiver un produit et d’oublier de le remettre en vente. Avec cette vision, on peut rapidement faire le check, pensez à retirer les produits qui datent et qui ne seront plus remis en vente.

L’amélioration journalière de 1%

Cela peut sembler être un détail d’ajuster ces éléments, de nettoyer et de clarifier son catalogue. Pourtant, pour moi cela fait partie des opérations d’optimisation qui contribuent à l’avancement de votre business. A force d’optimiser de 1% à chaque niveau de votre boutique, vous pouvez mieux vous développer (catalogue moins « fouillis », base de donnés plus légère, ergonomie plus saine).

Bilan

Quand j’étais en train de donner mon cours à l’Ecole Club Migros, j’ai noté sur un coin de feuille de faire un billet sur cette fonctionnalité. Ce qui est toujours important, c’est de faire l’effort d’interpréter les valeurs qu’on nous montre pour s’améliorer. Je profite de rebondir sur le stock, il est très important pour les acheteurs que vous ayez du stock, car ils peuvent espérer une livraison rapide, rassurez les donc sur ce point. Pensez à afficher la quantité en stock sur vos fiches produits (si > 5 pièces), sinon préférez une mention simple « En stock ».

Cet article Vision globale sur vos produits dans Prestashop est apparu en premier sur Webbax.

Viewing all 45 articles
Browse latest View live