Last active
December 21, 2021 16:28
-
-
Save rseon/7ab819ada6a3c4b57be0ab0d21338e5b to your computer and use it in GitHub Desktop.
Revisions
-
rseon revised this gist
Dec 21, 2021 . 1 changed file with 16 additions and 16 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,20 +1,20 @@ ## AdminPatterns Pour vous aider dans la conception de vos formulaires ou affichage de configuration de module, il existe un controller caché `AdminPatterns` qui vous donne tous les champs possibles. Il est accessible dans l'administration à l'adresse https://website.com/admin_xxxxxx/index.php?controller=AdminPatterns et le controller se trouve dans `/controllers/admin/AdminPatternsController.php` ## Astuce PDF Gagner du temps lors la personnalisation des fichiers pdf ( factures / livraisons … ) 👉 https://www.h-hennes.fr/blog/2020/07/13/prestashop-gagnez-du-temps-lors-la-personnalisation-des-fichiers-pdf-factures-livraisons/ (ce site est une mine d'or au passage) ## Bootstrap Bon à savoir : la version de Boostrap utilisée dans Prestashop est la v4-alpha.5, dont la doc est ici 👉 https://v4-alpha.getbootstrap.com/ ## Changer les templates des mails Après moultes recherches et tests, j'ai fini par trouver comment modifier **facilement** les templates des mails (sans avoir envie de se foutre en l'air donc). Il suffit de modifier les fichiers présents dans `/mails/themes/modern`. @@ -29,7 +29,7 @@ Cela génèrera les templates dans le dossier `/themes/[your-theme]/mails`. Vous pouvez ensuite les prévisualiser dans la page de l'admin encart **Thèmes d'e-mail** ## CSS et JS globaux Dans le cas où on souhaite ajouter des CSS et JS à notre thème : ```php // Fichier /override/classes/controller/FrontController.php @@ -51,7 +51,7 @@ class FrontController extends FrontControllerCore Resource : https://devdocs.prestashop.com/1.7/themes/getting-started/asset-management/ ## Détecter le device Dans un template Smarty il peut être utile de savoir sur quel type de device on se trouve : - Mobile : `{if Context::getContext()->isMobile() && !Context::getContext()->isTablet()}{/if}` ou `{if Context::getContext()->getDevice() == 4}{/if}` @@ -61,17 +61,17 @@ Dans un template Smarty il peut être utile de savoir sur quel type de device on Source : https://www.themebooster.com/prestashop-tutorials/prestashop-detect-mobile-devices/ ## Material Icons Bon à savoir : le front de Prestashop utilise les icones Material, que vous pouvez utiliser ainsi : `<span class="material-icons">done</span>` La doc 👉 https://material.io/resources/icons/?style=baseline ## Modifier le thème avec NodeJS 👉 https://www.prestasafe.com/modifier-theme-de-prestashop-1-7-nodejs ## Partager des données sur tout le site depuis un module Le hook `actionFrontControllerSetVariables` permet d'affecter des variables aux templates ainsi qu'en javascript via l'objet global `prestashop` à l'aide du namespace `modules.mon_module`. Donc par exemple : ```php /** @@ -89,11 +89,11 @@ public function hookActionFrontControllerSetVariables($params) - Depuis du JS : `prestashop.modules.mon_module.hello_text` ## PDF La doc relative aux PDF dans Prestashop 👉 https://devdocs.prestashop.com/1.7/modules/concepts/pdf/ ## Prix produits Plusieurs prix sont disponibles pour les calculs et de l'affichage dans le TPL de la fiche produit. *Valeurs brutes (nombres)* @@ -115,15 +115,15 @@ Plusieurs prix sont disponibles pour les calculs et de l'affichage dans le TPL d (liste non exhaustive et dépendant sûrement de la version de PS, vous pouvez faire `{$product|dump}` pour avoir la liste des clés du produit) ## Traductions - Quand on est dans un template du _thème_ : `{l s='Ma chaîne de caractère en français' d='Shop.Nomdutheme'}` - Quand on est dans un _module_ : `{l s='Ma chaîne de caractère en français' mod='mon_module'}` Puis dans l'admin, onglet **International > Traductions**, on choisit : - Traductions de thème > nomdutheme > English - Traductions des modules installés > Mon module > English ## Trick traductions introuvables Il faut savoir que seules les traductions des fichiers TPL remontent dans l'outil de traduction de l'admin. Si on veut en créer une en PHP (exemple : `$this->translator->trans('My string', [], 'Shop.Mytheme.Labels')`) il faut l'ajouter dans un TPL quelconque (pourvu qu'il soit affiché à l'écran) : `{l s='My string' d='Shop.Mytheme.Labels}`. @@ -135,7 +135,7 @@ Tadaaa ! Source : https://github.com/PrestaShop/PrestaShop/issues/15075#issuecomment-558578624 ## Understanding `getPriceStatic` La méthode `Product::getPriceStatic()` est très utile pour récupérer le prix d'un produit, on fonction des paramètres qu'on lui passe : - `Product::getPriceStatic($id_product, true, null, 6, null, false, true)` : prix TTC, réduction comprise (par défaut) @@ -148,13 +148,13 @@ La méthode `Product::getPriceStatic()` est très utile pour récupérer le prix _Note_ : si jamais il y a une erreur à l'appel de cette commande, il faut peut-être initialiser l'employé (me demandez pas pourquoi) en faisant `Context::getContext()->employee = 1;` avant l'appel à la méthode ## Variables Smarty Il est possible d'utiliser de nombreuses variables globales dans les templates Smarty, en voici une liste : https://www.team-ever.com/prestashop-1-7-liste-des-variables-smarty/ ## Widgets Prestashop 1.7 permet d'utiliser les _widgets_, utiles afin de placer les modules où on veut dans les templates. Doc : https://devdocs.prestashop.com/1.7/modules/concepts/widgets/ -
rseon revised this gist
Dec 7, 2021 . 1 changed file with 16 additions and 2 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,5 +1,6 @@ # AdminPatterns Pour vous aider dans la conception de vos formulaires ou affichage de configuration de module, il existe un controller caché `AdminPatterns` qui vous donne tous les champs possibles. Il est accessible dans l'administration à l'adresse https://website.com/admin_xxxxxx/index.php?controller=AdminPatterns et le controller se trouve dans `/controllers/admin/AdminPatternsController.php` @@ -15,13 +16,16 @@ Bon à savoir : la version de Boostrap utilisée dans Prestashop est la v4-alpha # Changer les templates des mails Après moultes recherches et tests, j'ai fini par trouver comment modifier **facilement** les templates des mails (sans avoir envie de se foutre en l'air donc). Il suffit de modifier les fichiers présents dans `/mails/themes/modern`. Une fois les modifications effectuées, rendez-vous dans l'admin, onglet **Apparance > Thème d'email**, puis dans l'encart **Générer des emails** : - Choisissez votre thème d'e-mail : `modern` - Choisissez votre langue : `Français (French)` - Sélectionnez le thème que vous voulez écraser : `classic` (ou le nom de notre thème) - Ecraser les templates : `Oui` Cela génèrera les templates dans le dossier `/themes/[your-theme]/mails`. Vous pouvez ensuite les prévisualiser dans la page de l'admin encart **Thèmes d'e-mail** @@ -59,6 +63,7 @@ Source : https://www.themebooster.com/prestashop-tutorials/prestashop-detect-mob # Material Icons Bon à savoir : le front de Prestashop utilise les icones Material, que vous pouvez utiliser ainsi : `<span class="material-icons">done</span>` La doc 👉 https://material.io/resources/icons/?style=baseline @@ -80,8 +85,8 @@ public function hookActionFrontControllerSetVariables($params) ]; } ``` - Depuis un template : `{$modules.mon_module.hello_text}` - Depuis du JS : `prestashop.modules.mon_module.hello_text` # PDF @@ -120,9 +125,13 @@ Puis dans l'admin, onglet **International > Traductions**, on choisit : # Trick traductions introuvables Il faut savoir que seules les traductions des fichiers TPL remontent dans l'outil de traduction de l'admin. Si on veut en créer une en PHP (exemple : `$this->translator->trans('My string', [], 'Shop.Mytheme.Labels')`) il faut l'ajouter dans un TPL quelconque (pourvu qu'il soit affiché à l'écran) : `{l s='My string' d='Shop.Mytheme.Labels}`. On recharge la page, et si tout va bien, notre string apparait dans le moteur de traduction. Il ne reste plus qu'à traduire et retirer la string du TPL. Tadaaa ! Source : https://github.com/PrestaShop/PrestaShop/issues/15075#issuecomment-558578624 @@ -141,14 +150,19 @@ _Note_ : si jamais il y a une erreur à l'appel de cette commande, il faut peut- # Variables Smarty Il est possible d'utiliser de nombreuses variables globales dans les templates Smarty, en voici une liste : https://www.team-ever.com/prestashop-1-7-liste-des-variables-smarty/ # Widgets Prestashop 1.7 permet d'utiliser les _widgets_, utiles afin de placer les modules où on veut dans les templates. Doc : https://devdocs.prestashop.com/1.7/modules/concepts/widgets/ Pour utiliser le widget d'un module, il faut au préalable vérifier que ce module le permet, et on le sait si la classe du module (fichier qui porte le même nom que son répertoire) implémente la classe `WidgetInterface`. C'est le cas par exemple du module Panier `ps_shoppingcart`. On peut l'afficher où on veut dans les TPL grâce au marqueur `{widget name='ps_shoppingcart'}`. L'inconvénient est qu'on outrepasse la partie Position de l'admin, puisque la position du module est fixée dans le template. Dans le cas où le module peut être accroché à plusieurs hooks, on peut le forcer ainsi : `{widget name='ps_shoppingcart' mod='displayTop'}` Dans le cas où le module n'a pas de widget, pas de panique ! On peut utiliser l'ancien marqueur de hook de cette façon : `{hook h='displayTop' mod='module_sans_widget'}` -
rseon revised this gist
Dec 7, 2021 . 1 changed file with 80 additions and 8 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,5 +1,19 @@ # AdminPatterns Pour vous aider dans la conception de vos formulaires ou affichage de configuration de module, il existe un controller caché `AdminPatterns` qui vous donne tous les champs possibles. Il est accessible dans l'administration à l'adresse https://website.com/admin_xxxxxx/index.php?controller=AdminPatterns et le controller se trouve dans `/controllers/admin/AdminPatternsController.php` # Astuce PDF Gagner du temps lors la personnalisation des fichiers pdf ( factures / livraisons … ) 👉 https://www.h-hennes.fr/blog/2020/07/13/prestashop-gagnez-du-temps-lors-la-personnalisation-des-fichiers-pdf-factures-livraisons/ (ce site est une mine d'or au passage) # Bootstrap Bon à savoir : la version de Boostrap utilisée dans Prestashop est la v4-alpha.5, dont la doc est ici 👉 https://v4-alpha.getbootstrap.com/ # Changer les templates des mails Après moultes recherches et tests, j'ai fini par trouver comment modifier **facilement** les templates des mails (sans avoir envie de se foutre en l'air donc). Il suffit de modifier les fichiers présents dans `/mails/themes/modern`. Une fois les modifications effectuées, rendez-vous dans l'admin, onglet **Apparance > Thème d'email**, puis dans l'encart **Générer des emails** : @@ -12,7 +26,6 @@ Vous pouvez ensuite les prévisualiser dans la page de l'admin encart **Thèmes # CSS et JS globaux Dans le cas où on souhaite ajouter des CSS et JS à notre thème : ```php // Fichier /override/classes/controller/FrontController.php @@ -35,7 +48,6 @@ Resource : https://devdocs.prestashop.com/1.7/themes/getting-started/asset-manag # Détecter le device Dans un template Smarty il peut être utile de savoir sur quel type de device on se trouve : - Mobile : `{if Context::getContext()->isMobile() && !Context::getContext()->isTablet()}{/if}` ou `{if Context::getContext()->getDevice() == 4}{/if}` @@ -45,8 +57,60 @@ Dans un template Smarty il peut être utile de savoir sur quel type de device on Source : https://www.themebooster.com/prestashop-tutorials/prestashop-detect-mobile-devices/ # Material Icons Bon à savoir : le front de Prestashop utilise les icones Material, que vous pouvez utiliser ainsi : `<span class="material-icons">done</span>` La doc 👉 https://material.io/resources/icons/?style=baseline # Modifier le thème avec NodeJS 👉 https://www.prestasafe.com/modifier-theme-de-prestashop-1-7-nodejs # Partager des données sur tout le site depuis un module Le hook `actionFrontControllerSetVariables` permet d'affecter des variables aux templates ainsi qu'en javascript via l'objet global `prestashop` à l'aide du namespace `modules.mon_module`. Donc par exemple : ```php /** * @params array('templateVars' => &(array)) * @return array */ public function hookActionFrontControllerSetVariables($params) { return [ 'hello_text' => 'Hello world', ]; } ``` Depuis un template : `{$modules.mon_module.hello_text}` Depuis du JS : `prestashop.modules.mon_module.hello_text` # PDF La doc relative aux PDF dans Prestashop 👉 https://devdocs.prestashop.com/1.7/modules/concepts/pdf/ # Prix produits Plusieurs prix sont disponibles pour les calculs et de l'affichage dans le TPL de la fiche produit. *Valeurs brutes (nombres)* - `price_amount` : prix TTC, réduction comprise - `price_tax_exc` : prix HT, réduction comprise - `price_without_reduction` : prix TTC, sans réduction - `price_without_reduction_without_tax` : prix HT, sans réduction - `reduction` : valeur de la réduction TTC - `reduction_without_tax` : valeur de la réduction HT - `rate` : taux de TVA - `rounded_display_price` : à l'air d'être identique à `price_amount` (avec arrondis ?) - `regular_price_amount` : prix TTC sans réduction *Valeurs formatées (avec le €)* - `price` : prix TTC, réduction comprise - `regular_price` : prix TTC, sans réduction - `discount_to_display` : valeur de la réduction TTC (liste non exhaustive et dépendant sûrement de la version de PS, vous pouvez faire `{$product|dump}` pour avoir la liste des clés du produit) # Traductions - Quand on est dans un template du _thème_ : `{l s='Ma chaîne de caractère en français' d='Shop.Nomdutheme'}` - Quand on est dans un _module_ : `{l s='Ma chaîne de caractère en français' mod='mon_module'}` @@ -55,24 +119,32 @@ Puis dans l'admin, onglet **International > Traductions**, on choisit : - Traductions des modules installés > Mon module > English # Trick traductions introuvables Il faut savoir que seules les traductions des fichiers TPL remontent dans l'outil de traduction de l'admin. Si on veut en créer une en PHP (exemple : `$this->translator->trans('My string', [], 'Shop.Mytheme.Labels')`) il faut l'ajouter dans un TPL quelconque (pourvu qu'il soit affiché à l'écran) : `{l s='My string' d='Shop.Mytheme.Labels}`. On recharge la page, et si tout va bien, notre string apparait dans le moteur de traduction. Il ne reste plus qu'à traduire et retirer la string du TPL. Tadaaa ! Source : https://github.com/PrestaShop/PrestaShop/issues/15075#issuecomment-558578624 # Understanding `getPriceStatic` La méthode `Product::getPriceStatic()` est très utile pour récupérer le prix d'un produit, on fonction des paramètres qu'on lui passe : - `Product::getPriceStatic($id_product, true, null, 6, null, false, true)` : prix TTC, réduction comprise (par défaut) - `Product::getPriceStatic($id_product, false, null, 6, null, false, true)` : prix HT, réduction comprise - `Product::getPriceStatic($id_product, true, null, 6, null, false, false)` : prix TTC, sans réduction - `Product::getPriceStatic($id_product, false, null, 6, null, false, false)` : prix HT, sans réduction - `Product::getPriceStatic($id_product, true, null, 6, null, true, false)` : valeur de la réduction TTC - `Product::getPriceStatic($id_product, false, null, 6, null, true, false)` : valeur de la réduction HT _Note_ : si jamais il y a une erreur à l'appel de cette commande, il faut peut-être initialiser l'employé (me demandez pas pourquoi) en faisant `Context::getContext()->employee = 1;` avant l'appel à la méthode # Variables Smarty Il est possible d'utiliser de nombreuses variables globales dans les templates Smarty, en voici une liste : https://www.team-ever.com/prestashop-1-7-liste-des-variables-smarty/ # Widgets Prestashop 1.7 permet d'utiliser les _widgets_, utiles afin de placer les modules où on veut dans les templates. Doc : https://devdocs.prestashop.com/1.7/modules/concepts/widgets/ Pour utiliser le widget d'un module, il faut au préalable vérifier que ce module le permet, et on le sait si la classe du module (fichier qui porte le même nom que son répertoire) implémente la classe `WidgetInterface`. C'est le cas par exemple du module Panier `ps_shoppingcart`. On peut l'afficher où on veut dans les TPL grâce au marqueur `{widget name='ps_shoppingcart'}`. -
rseon created this gist
Dec 7, 2021 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,82 @@ # Changer les templates des mails Après moultes recherches et tests, j'ai fini par trouver comment modifier **facilement** les templates des mails (sans avoir envie de se foutre en l'air donc). Il suffit de modifier les fichiers présents dans `/mails/themes/modern`. Une fois les modifications effectuées, rendez-vous dans l'admin, onglet **Apparance > Thème d'email**, puis dans l'encart **Générer des emails** : - Choisissez votre thème d'e-mail : `modern` - Choisissez votre langue : `Français (French)` - Sélectionnez le thème que vous voulez écraser : `classic` (ou le nom de notre thème) - Ecraser les templates : `Oui` Cela génèrera les templates dans le dossier `/themes/[your-theme]/mails`. Vous pouvez ensuite les prévisualiser dans la page de l'admin encart **Thèmes d'e-mail** # CSS et JS globaux Dans le cas où on souhaite ajouter des CSS et JS à notre thème : ```php // Fichier /override/classes/controller/FrontController.php <?php class FrontController extends FrontControllerCore { public function setMedia() { parent::setMedia(); $this->registerStylesheet('slick', '/assets/lib/slick/slick.min.css', ['media' => 'all', 'priority' => 100]); $this->registerJavascript('slick', '/assets/lib/slick/slick.min.js', ['position' => 'bottom', 'priority' => 100]); return true; } } ``` Resource : https://devdocs.prestashop.com/1.7/themes/getting-started/asset-management/ # Détecter le device Dans un template Smarty il peut être utile de savoir sur quel type de device on se trouve : - Mobile : `{if Context::getContext()->isMobile() && !Context::getContext()->isTablet()}{/if}` ou `{if Context::getContext()->getDevice() == 4}{/if}` - Tablette : `{if Context::getContext()->isTablet()}{/if}` ou `{if Context::getContext()->getDevice() == 2}{/if}` - Ordinateur : `{if !Context::getContext()->isMobile() && !Context::getContext()->isTablet()}{/if}` ou `{if Context::getContext()->getDevice() == 1}{/if}` Source : https://www.themebooster.com/prestashop-tutorials/prestashop-detect-mobile-devices/ # Traductions - Quand on est dans un template du _thème_ : `{l s='Ma chaîne de caractère en français' d='Shop.Nomdutheme'}` - Quand on est dans un _module_ : `{l s='Ma chaîne de caractère en français' mod='mon_module'}` Puis dans l'admin, onglet **International > Traductions**, on choisit : - Traductions de thème > nomdutheme > English - Traductions des modules installés > Mon module > English # Trick traductions introuvables Il faut savoir que seules les traductions des fichiers TPL remontent dans l'outil de traduction de l'admin. Si on veut en créer une en PHP (exemple : `$this->translator->trans('My string', [], 'Shop.Mytheme.Labels')`) il faut l'ajouter dans un TPL quelconque (pourvu qu'il soit affiché à l'écran) : `{l s='My string' d='Shop.Mytheme.Labels}`. On recharge la page, et si tout va bien, notre string apparait dans le moteur de traduction. Il ne reste plus qu'à traduire et retirer la string du TPL. Tadaaa ! Source : https://github.com/PrestaShop/PrestaShop/issues/15075#issuecomment-558578624 # Variables Smarty Il est possible d'utiliser de nombreuses variables globales dans les templates Smarty, en voici une liste : https://www.team-ever.com/prestashop-1-7-liste-des-variables-smarty/ # Widgets Prestashop 1.7 permet d'utiliser les _widgets_, utiles afin de placer les modules où on veut dans les templates. Doc : https://devdocs.prestashop.com/1.7/modules/concepts/widgets/ Pour utiliser le widget d'un module, il faut au préalable vérifier que ce module le permet, et on le sait si la classe du module (fichier qui porte le même nom que son répertoire) implémente la classe `WidgetInterface`. C'est le cas par exemple du module Panier `ps_shoppingcart`. On peut l'afficher où on veut dans les TPL grâce au marqueur `{widget name='ps_shoppingcart'}`. L'inconvénient est qu'on outrepasse la partie Position de l'admin, puisque la position du module est fixée dans le template. Dans le cas où le module peut être accroché à plusieurs hooks, on peut le forcer ainsi : `{widget name='ps_shoppingcart' mod='displayTop'}` Dans le cas où le module n'a pas de widget, pas de panique ! On peut utiliser l'ancien marqueur de hook de cette façon : `{hook h='displayTop' mod='module_sans_widget'}`