cms

Prestashop : Utiliser les pages cms comme des blocks

Vous souhaitez afficher des contenus éditables depuis l’administration un peu partout dans votre thème ?
C’est très facile à faire et nous allons voir comment. ( Pour un usage basique directement dans les fichiers smarty )
L’idée est d’utiliser les pages cms de Prestashop.
Pour les ranger, vous pouvez faire une catégorie cms désactivée « Blocs Cms » et mettre toutes les pages dedans.

Pour gérer l’affichage nous allons créer un module hhcmspagewidget
Et le contenu de la page de démo sera le suivant.

Fonctionnement basique

Pour un fonctionnement de base le code suivant sera suffisant

class Hhcmspagewidget extends Module implements WidgetInterface
{
 
    public function __construct()
    {
        $this->name = 'hhcmspagewidget';
        $this->tab = 'others';
        $this->version = '0.1.0';
        $this->author = 'hhennes';
        $this->bootstrap = true;
        parent::__construct();
 
        $this->displayName = $this->l('Hh Cms page widget');
        $this->description = $this->l('Allow to display cms page as block through a widget');
    }
 
 
    /**
     * [FRONT OFFICE] Widget utilisé pour afficher le bloc cms
     * @param string $hookName
     * @param array $configuration
     * @return string
     */
    public function renderWidget($hookName = null, array $configuration)
    {
        if ( isset($configuration['id_cms']) ){
            return $this->getWidgetVariables($hookName,$configuration);
        }
 
        return '';
    }
 
    /**
     * [FRONT OFFICE] Widget utilisé pour récupérer les informations d'affichage
     * @param string $hookName
     * @param array $configuration
     * @return string
     */
    public function getWidgetVariables($hookName = null, array $configuration)
    {
        try {
 
            $idCms = (int)$configuration['id_cms'];
            $cms = new CMS($idCms,$this->context->language->id);
 
            //Exécution du hook pour appliquer le filtrage des contenus cms
            if ( false !=

Prestashop : Utiliser les pages cms comme des blocks Lire la suite »

Magento 2 : Ajouter des link alternate sur les pages cms

Sur magento 2 ( comme sur magento 1 ) , les contenus et notamment les pages cms sont accessibles via plusieurs url avec ou sans slash à la fin.

Vous pouvez le constater sur la page de la politique de confidentialité qui est à la fois disponible sous les urls :
http://magento2-demo.nexcess.net/privacy-policy-cookie-restriction-mode et http://magento2-demo.nexcess.net/privacy-policy-cookie-restriction-mode/

Au niveau Seo c’est assez moyen c’est pourquoi il est utile de préciser à Google quelle est la version à indexer.
Ceci peut être réalisé via l’ajout d’une balise link rel= »canonical ».

Nous allons voir ensemble comment réaliser cela pour magento 2 via un module qui s’appellera Hhennes/Cms
Ce module ajoutera automatiquement une balise canonical sur les pages cms, il est possible de configurer en back office quelle sera l’url à utiliser ( avec ou sans le slash )

Ce module sera dépendant du module Magento_Cms.

Je vais juste détailler le fonctionnement global, vous trouverez le lien vers github en fin d’article pour le télécharger. (sans la partie création initiale )

La logique est relativement simple , nous allons rajouter un block spécifique sur les pages cms dans le container « head.additional …

Magento 2 : Ajouter des link alternate sur les pages cms Lire la suite »

Prestashop 1.7 : Dynamisez vos contenus wysiwyg

La problématique n’est pas nouvelle sur Prestashop, et c’est un point qui me frustre assez souvent et pour lequel j’avais déjà fait un module en 2014 ( cf. https://www.h-hennes.fr/blog/2014/01/18/prestashop-liens-dynamiques-vers-les-pages-cms-dans-lediteur-tinymce/ )
Ce module n’est malheureusement plus fonctionnel sur Prestashop 1.7.

Dans les éditeurs de contenus, il n’est pas possible  des mettre des liens ou des contenus dynamiques.
La bonne nouvelle cependant c’est que la version 1.7 de Prestashop apporte de nouveaux hooks qui vont permettre de modifier ces contenus avant l’affichage des éléments, et donc sans surcharge  🙂

Les éléments dont les contenus sont modifiables sont les suivants :

  • Pages cms
  • Catégories cms
  • Contenu produit
  • Contenu catégorie
  • Contenu Fabriquants
  • Contenu fournisseurs

Pour l’exemple on va partir sur le besoin suivant :

Je souhaite afficher un élément de configuration  dans l’ensemble des contenus noté ci-dessous.
Ce sera la configuration PS_SHOP_EMAIL , qui correspond à l’émail par défaut de la boutique.

Pour afficher cette variable il faudra intégrer dans les zones de contenus le code suivant :

{{configuration name=PS_SHOP_EMAIL}}

Le but du module sera donc de remplacer cet élément par sa valeur de configuration.…

Prestashop 1.7 : Dynamisez vos contenus wysiwyg Lire la suite »

Magento 2 : Ajouter des balises canonical sur les pages cms

Par défaut avec Magento ( c’était déjà le cas pour magento 1 et ça l’est toujours pour Magento 2 ), les pages CMS sont accessibles via plusieurs urls

Ex : http://www.magento2.dev/privacy-policy-cookie-restriction-mode/ et http://www.magento2.dev/privacy-policy-cookie-restriction-mode

La seule différence étant la présence du « / » en fin de ligne.

Pour les moteurs de recherche le contenu est donc présent sur 2 pages différentes ce qui créé du duplicate content.
La solution pour corriger cette problématique est d’ajouter une balise « canonical » qui permettra de dire laquelle des urls on souhaite indexer.
De mon côté je part du postulat que c’est l’url avec un « / » à la fin.

Pour cela nous allons faire un module Hhennes_CMS avec l’arborescence suivante :

Magento Cms module structure

Voici les contenus des fichiers de déclaration du module

etc/module.xml

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
    <module name="Hhennes_Cms" setup_version="0.1.1">
        <sequence>
            <module name="Mage_Cms"/>
        </sequence>
    </module>
</config>

Magento 2 : Ajouter des balises canonical sur les pages cms Lire la suite »

EicmsLinks : nouvelles fonctionnalités.

Une nouvelle version de mon module prestashop « EicmsLinks » est disponible.
Pour rappel ce module rajoute des liens dynamiques dans l’éditeur de texte tinyMce pour les contenus cms ( pages cms, descriptions produits, descriptions catégories)

  • pages cms
  • catégories
  • produit ( lien produit, ou ajout au panier)

Pour la description complète vous pouvez lire la page suivante : https://www.h-hennes.fr/blog/prestashop-liens-dynamiques-dans-lediteur-tinymce/

Cette nouvelle version instaure une nouvelle notion de « widgets » qui peuvent également être inséré directement dans la page cms.

Pour l’instant les widgets implémentés sont les suivants :

formulaire de login : permets d’afficher le formulaire de login dans n’importe quelle page cms

Widget login

liste de produits : permets d’afficher une liste de produits dynamique

Widget produits

Plusieurs options sont disponibles pour ce widget :
-type (new|category|price_drop) : Type de produits à afficher
-nb_products : nombre de produits à afficher
-id_category : dans le cas d’un affichage de produit d’une catégorie, identifiant prestashop de la catégorie.

L’ajout de cette fonctionnalité a été réalisée de manière à pouvoir rajouter très facilement des nouveaux widgets.…

EicmsLinks : nouvelles fonctionnalités. Lire la suite »

Prestashop : Liens dynamiques vers les pages cms dans l’éditeur TinyMce

La gestion des liens entre les différentes pages cms est relativement peu aisée avec PrestaShop, il est nécessaire de saisir le lien complet à chaque fois.
Cette problématique est d’autant plus importante lorsqu’on est amené à travailler avec plusieurs urls ( serveur local, serveur de préproduction, serveur de production)

En partant de ce constat j’ai décidé de créer un nouveau module qui permettra de rendre ces liens « dynamiques »  (c’est à dire indépendant de l’url de base du site)

Ce module fonctionne uniquement à partir de Prestashop 1.5.

Son fonctionnement est inspiré du fonctionnement des liens cms sous magento ( et oui encore 😉 ).

Voici un aperçu du rendu final du module.

lien cms prestashop

Un nouvel icône apparait dans la barre d’outils de TinyMce.

pages-cms

Lorsqu’on clique dessus, le listing complet des pages cms existantes apparait et il vous suffit de cliquer sur l’élément que vous souhaitez ajouter pour insérer un lien.

Edit 2015-05-20 :

Pour récupérer la dernière version du module et consulter les instructions d’installation, vous pouvez vous rendre directement sur la page :
Prestashop : Liens dynamiques dans l’éditeur wysiwyg tinymce

 …

Prestashop : Liens dynamiques vers les pages cms dans l’éditeur TinyMce Lire la suite »

Magento : créer une sauvegarde des versions de pages cms

Un petit tip utile pour ce vendredi sur la plateforme Magento.
Par défaut, la version community ne comporte pas de sauvegarde des modifications des pages CMS.
Cette fonction peut cependant être très utile en cas d’une erreur ou d’une suppression intempestive d’un contenu.

Voici donc un petit tips pour remédier à tout cela rapidement ( sans interface d’administration pour l’instant…, juste une sauvegarde de la base de données).

Nous allons commencer par créer un module magento que nous allons nommer « CmsVersionning ».
Pour cet article celui-ci sera situé dans l’arborescence « app/local/Hhennes/CmsVersionning/ » (à adapter selon vos préférences)

Nous commençons par le fichier xml de configuration du module à placer dans app/etc/modules

 <?xml version="1.0"?>
<config>
    <modules>
        <Hhennes_CmsVersionning>
            <active>true</active>
            <codePool>local</codePool>
        </Hhennes_CmsVersionning>
    </modules>
</config>

Passons à présent au processus de création de ce module :

Pour commencer nous allons créer le fichier de configuration.…

Magento : créer une sauvegarde des versions de pages cms Lire la suite »