Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
💥 Du 22 au 24 novembre : Accès 100% GRATUIT
à la Bibliothèque Numérique ENI. Je m'inscris !
  1. Livres et vidéos
  2. Développez avec PHP pour PrestaShop
  3. Personnalisation
Extrait - Développez avec PHP pour PrestaShop Architecture, personnalisation, thèmes et conception de modules
Extraits du livre
Développez avec PHP pour PrestaShop Architecture, personnalisation, thèmes et conception de modules
5 avis
Revenir à la page d'achat du livre

Personnalisation

Traductions

1. Introduction

Par défaut, sans nécessités d’activer un module natif ou complémentaire, PrestaShop permet de gérer du contenu internationalisé.

Afin de pouvoir appréhender le système de traduction au sein de PrestaShop, il est important de prendre en considération quelques concepts clés.

Tout d’abord, nous avons la phrase à traduire - usuellement écrite en anglais - que l’on nomme le message (wording).

À celle-ci est associé un domaine de traductions (Translation domain) afin de pouvoir organiser les traductions en fonction du contexte souhaité.

Le catalogue (Message catalogue) comprend quant à lui l’ensemble des éléments traduits. On dispose d’un catalogue par langue.

À ce catalogue est associée une ressource (Catalogue resource) déterminant le procédé avec lequel les données sont obtenues. Ce procédé peut être un fichier ou encore la base de données, par exemple.

Enfin, l’utilisation d’un service permettant de mettre le tout en relation est de mise, il s’agit du service de traduction (Translator).

Celui-ci s’appuie sur le service fourni par défaut dans Symfony.

a. Les différentes ressources de catalogue

Lors de son initialisation, le service de traduction charge plusieurs ressources permettant de traduire la phrase souhaitée en fonction du contexte :

  • Les traductions personnalisées encodées en base de données - dans la table translations.

  • Les traductions du thème actif - les fichiers XLF présents dans themes/yourtheme/translations.

  • Les traductions du cœur - les fichiers XLF présents dans app/Resources/translations.

  • Les traductions issues des modules actifs - les fichiers XLF présents dans modules/*/translations.

  • Les traductions issues des modules actifs selon la méthode legacy - les fichiers PHP présents dans modules/*/translations.

Le chargement des ressources est effectué par ordre de priorité. La première chargée prévaut sur les suivantes.

b. Le format XLIFF

Les fichiers représentant les ressources de catalogue sont au format XLF. Il s’agit de fichiers XLIFF (XML Localization Interchange File Format).

S’appuyant sur le format XML, il s’agit d’un langage de balisage créé pour standardiser les échanges liés à la localisation.

Ce format est celui utilisé par Symfony pour son système de traduction par défaut.

2. Traduction des messages issus du cœur

Lorsque vous souhaitez traduire les messages qui sont par défaut fournis dans PrestaShop et pour lesquels le pack de localisation permet une traduction automatique (a contrario des modules tiers, par exemple), vous devez vous rendre dans la traduction des thèmes et choisir le thème par défaut (nommé « Classic »).

Ceci est valable même si vous n’utilisez pas le thème par défaut.

3. Traduction d’un thème front-office

Ce point est vu plus amplement dans le chapitre Thèmes.

4. Domaines

Lors de l’utilisation du service de traduction, deux données sont passées à ce dernier :...

Fichiers PDF

1. Introduction

La génération des fichiers PDF (commandes, factures…) est réalisée par le biais de la classe PHP largement répandue, libre et open source qu’est TCPDF.

L’objectif visé par cette section n’est pas de maîtriser l’ensemble des méthodes liées à cette classe mais bien d’appréhender la modification et la conception de fichiers PDF utilisés au sein de PrestaShop.

Quant aux templates servant à la génération, ceux-ci sont réalisés sous Smarty. 

On peut retrouver les différents templates utilisés dans le répertoire PDF situé à la racine de l’application.

Les templates modifiés sont quant à eux présents dans le dossier PDF du thème actif en qualité de surcharges.

Bien que vous puissiez embarquer vos propres templates PDF au sein de votre module ou encore qu’il vous soit possible d’exploiter des hooks pour altérer ces derniers, vous ne pourrez pas surcharger un template PDF par le biais d’un module tiers.

Nativement, on retrouve cinq types de PDF :

  • factures (invoice)

  • bons de livraison (delivery-slip)

  • retours (order-return)

  • bons de commande (order-slip)

  • commandes fournisseurs (supply-orders)

Chacun d’eux utilise un ensemble de templates dont le nom de fichier est préfixé par le nom du template global.

Pour l’exemple, le template invoice.shipping-tab.tpl est utilisé au sein du template invoice.tpl.

2. Modifier le style global des PDF

Chaque type de PDF dispose d’une série de styles prédéfinis que l’on retrouve dans le template nommé prefix.style-tab.tpl.

Nous avons donc l’ensemble des styles pour le PDF de facture au sein du template invoice.style-tab.tpl.

Dans ce dernier, nous pouvons retrouver des assignations de variables Smarty ainsi que des règles de styles CSS.

Dans le fichier themes/eni/pdf/delivery-slip.style-tab.tpl, nous pouvons modifier les valeurs souhaitées et modifier les styles comme suit :

{include file='../../../pdf/delivery-slip.style-tab.tpl'} 
 
{assign var=color_header value="#d7d7d7"} 
 
<style> 
    th.header { 
        background-color: {$color_header}; 
    } 
 
    th.header-right { 
        background-color: {$color_header}; 
    } 
 
    th.payment { 
        background-color: {$color_header}; 
    } 
 
    .grey { 
        background-color: {$color_header}; 
    } 
</style> 

Il est à noter que l’utilisation de include en lieu et place de extends est ici requise. En effet, le template de base n’utilisant pas de directive {block}, tout le contenu qui serait ajouté dans notre template surchargé ne serait pas pris en considération....

E-mails

1. Introduction

Une multitude d’e-mails de natures différentes sont envoyés par le biais de la boutique PrestaShop lorsqu’une commande est réalisée ou qu’un changement d’état lui est lié, par exemple.

Ils sont destinés à être transmis à un client qui, potentiellement, parle une autre langue que son prédécesseur. À cette fin, un e-mail se doit d’être envoyé avec la localisation du client.

De plus, si PrestaShop fournit un visuel par défaut, il est bien souvent nécessaire de rendre les e-mails visuellement semblables à la boutique ou encore d’y rajouter des informations particulières.

2. Concepts clés

Le système d’e-mails repose sur plusieurs concepts clés qu’il est nécessaire de distinguer en vue de prendre en main leur gestion de la genèse à la génération de l’e-mail lui-même.

Les templates

Il s’agit des fichiers au format HTML ou TXT qui ne contiennent aucune logique et qui se réfèrent à une seule localisation à la fois. Ce sont les e-mails traduits dans la langue concernée et qui sont envoyés tels quels aux clients.

Ces templates sont statiques. Toutefois, ils peuvent comporter des variables qui sont remplacées avant l’envoi effectif.

Les gabarits (layouts)

Afin d’éviter la transposition d’une modification au sein d’un template statique dans l’ensemble des templates existants, l’utilisation des gabarits permet de réaliser la modification à un seul et unique endroit et de générer les templates sur cette base.

De plus, lorsque le marchand procédera à l’ajout d’une nouvelle langue via son back-office, la génération des templates localisés respectant votre charte graphique sera plus aisée.

Ces gabarits sont au format Twig.

Ceux-ci peuvent comporter de la logique, étendre des layouts existants ou encore inclure des gabarits partiellement découpés.

Les thèmes d’e-mails

L’ensemble des gabarits utilisés pour la génération des templates statiques forment un thème d’e-mails.

Celui-ci est situé dans le dossier mails/themes.

Bien que plusieurs thèmes (tout comme le thème front-office, et pouvant être indépendants de celui-ci) puissent être installés sur la boutique, un seul thème peut être défini comme étant actif.

3. Thème d’e-mails

a. Architecture

L’idée de base des thèmes d’e-mails étant de fournir la possibilité de réaliser une modification graphique et de la répercuter sans le moindre effort, la structure du dossier apparenté au thème d’e-mail se veut le plus structuré possible.

On y retrouve ainsi deux dossiers obligatoires que sont les dossiers core et modules

Le dossier core embarque l’ensemble des e-mails nécessaires au fonctionnement de la boutique, tels que les e-mails account, contact ou encore order_conf. Ce sont les e-mails envoyés par le cœur de PrestaShop au fil de son utilisation.

Le dossier modules contient...