Success story : migration de Spip vers WordPress Cdurable.info

Le site Cdurable.info est un média d’informations, avec un historique important. Il constitue une référence dans le domaine du développement durable, avec un contenu très riche et très complet.
En 2024, Cyrille Souche décide de confier à Déménageur de site la migration de ce site vers un nouvel hébergeur, et le changement du CMS de SPIP vers WordPress. 
Une double opération qui n’était pas sans risques ni difficultés !

Capture d'écran du site WordPress Cdurable
Cyrille a accepté de répondre à quelques questions sur cette migration de site : découvrez son expérience !

Lire la suite ›

Publié dans Actualités, Déménageur, Web marketing / digital marketing

SWISSCOM va cesser son offre Hosting en juin 2024

Le célèbre opérateur suisse SWISSCOM va cesser son offre Hosting en juin 2024

Des centaines de sites historiques risquent de disparaître ! Avec parfois des contenus très originaux, sur des sujets très variés.

Vous êtes le propriétaire d’un de ces sites hébergé par SWISSCOM, et vous désirez maintenir votre site web  ? Nous pouvons vous aider à migrer votre site internet vers l’hébergeur de votre choix !

Ne tardez pas pour garder vos contenus en ligne

Publié dans Hébergeurs

Page perso d’Orange s’arrête, migrez votre site !

Service historique qui a permis à des milliers d’internautes de publier leurs premiers sites web, le service « Page perso » d’Orange, s’arrête.

Des centaines de sites historiques risquent de disparaître ! Avec parfois des contenus très originaux, issus des passions et compétences des internautes de la première heure.

Vous êtes éditeur d’un de ces sites, et vous désirez continuer la publication de ces pages ? Nous pouvons vous aider à migrer votre site internet Page Perso d’Orange vers l’hébergeur de votre choix !

Arrêt prévu du service le 5 septembre 2023, avec un accès ftp maintenu jusqu’au  9 janvier 2024.. Ne tardez pas pour préserver vos contenus !

Publié dans Actualités, Hébergeurs

Prestashop 1.7 : modifier la liste des clients du back-office

Il est difficile de trouver un exemple simple pour écrire un module Prestashop 1.7 qui permette de modifier la liste des clients dans le back office Prestashop

Voici un exemple d’un fichier,  pour la création d’un module qui ajoute le champ « groupe client » dans le listing des clients.

Ce n’est pas « parfait » (il manque notamment un select pour les filtres) mais ce petit bout de code vous fera peut-être gagner du temps  !

Bien penser à réinitialiser le module à chaque changement du code si vous mettez à jour le fichier via ftp par exemple.

Je me suis servi de ce tutoriel également

if (!defined('_PS_VERSION_')) {
    exit;
}
use PrestaShop\PrestaShop\Core\Grid\Column\Type\DataColumn;
use PrestaShop\PrestaShop\Core\Grid\Filter\Filter;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;


/* https://webkul.com/blog/adding-a-new-column-in-prestashop-new-symfony-admin-controller-grid-page-with-module */
/* bien penser à REINITIALISER le module à chaque changement du code ! */

class CustomerGroupColumn extends Module
{
    public function __construct()
    {
        $this->name = 'customergroupcolumn';
        $this->author = 'Your Name';
        $this->version = '1.0.0';
        $this->need_instance = 0;
        $this->ps_versions_compliancy = array('min' => '1.7', 'max' => _PS_VERSION_);
        $this->bootstrap = true;

        parent::__construct();

        $this->displayName = $this->l('Customer Group Column');
        $this->description = $this->l('Adds a "Customer Group" column to the customer list in the back-office.');

        $this->confirmUninstall = $this->l('Are you sure you want to uninstall?');
    }

    public function install()
    {
        return parent::install() &&
            $this->registerHook('ActionCustomerGridDefinitionModifier')  &&
            $this->registerHook('ActionCustomerGridQueryBuilderModifier') 
        ;
    }

    public function uninstall()
    {
        return parent::uninstall();
    }

    public function hookActionCustomerGridDefinitionModifier(array $params)
    {
        /** @var GridDefinitionInterface $definition */
        $definition = $params['definition'];
        $definition
            ->getColumns()
            ->addAfter(
                'lastname',
                (new DataColumn('groupe'))
                    ->setName("N°Groupe")
                    ->setOptions([
                        'field' => 'groupe',
                    ])
            )
        ;
        // For search filter
         // $definition->getFilters();
         // dump($definition);die();

        $definition->getFilters()->add(
            (new Filter('groupe', TextType::class))    //ChoiceType 
            ->setAssociatedColumn('groupe')
        );
         

    }

    /**
     * Hook allows to modify Customers query builder and add custom sql statements.
     *
     * @param array $params
     */
    public function hookActionCustomerGridQueryBuilderModifier(array $params)
    {
        /** @var QueryBuilder $searchQueryBuilder */
        $searchQueryBuilder = $params['search_query_builder'];
        /** @var CustomerFilters $searchCriteria */
        $searchCriteria = $params['search_criteria'];
        $searchQueryBuilder->addSelect(
            ' CONCAT( cg.id_group , "-",  cgl.name)  AS `groupe`'
        );

        // dump($searchQueryBuilder);die;
        $searchQueryBuilder->leftJoin(
            'c',
            '`' . pSQL(_DB_PREFIX_) . 'customer_group`',
            'cg',
            'cg.`id_customer` = c.`id_customer`'
        );
        
        $searchQueryBuilder->leftJoin(
            'cg',
            '`' . pSQL(_DB_PREFIX_) . 'group_lang`',
            'cgl',
            'cgl.`id_group` = cg.`id_group` and cgl.id_lang=1'
        );

        if ('groupe' === $searchCriteria->getOrderBy()) {
            $searchQueryBuilder->orderBy('cg.`id_group`', $searchCriteria->getOrderWay());
        }
        foreach ($searchCriteria->getFilters() as $filterName => $filterValue) {
            if ('groupe' === $filterName) {
                $searchQueryBuilder->andWhere('cg.`id_group` = :groupe');
                $searchQueryBuilder->setParameter('groupe', $filterValue);
                if (!$filterValue) {
                    $searchQueryBuilder->orWhere('cg.`id_group` IS NULL');
                }
            }
        }

    }

 
}



Publié dans Dev

prestashop 1-click upgrade module download

Vous avez cherché à télécharger le module « 1 click upgrade » de Prestashop, mais vous ne tombez que sur la page

https://addons.prestashop.com/en/data-migration-backup/5496-1-click-upgrade.html

qui ne contient pas de lien de téléchargment ?

Le module est disponible sur le github : https://github.com/PrestaShop/autoupgrade/releases

choisissez une version, et le zip est disponible en bas de page

 

 

Publié dans Dev

ajouter la date dans la commande « history » du terminal

Retouver une ligne de commande dans l’historique, c’est bien pratique.

Sur des serveurs où vous n’intervenez pas très fréquemment, ou sur des comptes que vous partagez avec différents collègues, il est parfois extrêmement pratique de pouvoir identifier à quel moment l’utilisateur a lancé une commande particulière.

Ajoutez simplement dans .bashrc  la ligne suivante :

export HISTTIMEFORMAT= »%F %T « 

puis

source .bashrc

pour recharger les réglages

vous aurez  alors un historique daté, ce qui est bien utile pour retrouver à quel moment on a fait une manipulation

867  2023-01-16 16:10:21 git status
868  2023-01-16 16:10:28 git add css/css.css
869  2023-01-16 16:10:34 git add inc/application.class.php
870  2023-01-16 16:10:38 git add pack/pack.css
871  2023-01-16 16:10:41 git commit -m « css »
872  2023-01-16 16:10:43 git push

 

Publié dans Gnu / Linux

Mysql : placer arbitrairement un élément en fin de liste ou en début de liste

 

Mysql : placer arbitrairement un élément en fin de liste ou en début de liste

Vous disposez d’une requête dans une table, et vous voulez récupérer la liste triée par nom, mais dont un des noms doit apparaître en dernier ?

Imaginons une table « auteur » contenant un id et un nom. Vous voulez afficher une liste de nom par ordre alphabétique mais vous avez un auteur « divers », qui a ici l’id 120, et vous voulez placer cet élément unique en fin de liste.

SELECT id, nom, prenom FROM `auteur` WHERE 1 order by find_in_set(id ,120 ) asc , nom asc

 

Dans ce premier exemple l’élement d’id = 120 est placé en fin de liste grâce à « ASC »

Vous pouvez le placer en début de liste ainsi :

SELECT id, nom, prenom FROM `auteur` WHERE 1 order by find_in_set(id ,120 ) desc , nom asc

 

Publié dans Dev

Corriger l’erreur OVH 501 Not Implemented

Votre site est hébergé sur une offre mutualisé OVH et vous rencontrez le message d’erreur suivant sur votre site : OVH 501 Not Implemented

Le problème vient très certainement d’une incompatibilité entre plusieurs fichiers « .ovhconfig »

En effet vous ne pouvez pas faire cohabiter sur un même hébergement mutualisé des versions de php trop éloignées.

Si vous rencontrez cette erreur OVH 501 Not Implemented , essayez de ne garder qu’un seul fichier Ovhconfig dans votre hébergement, ou restreignez les choix sur des fichiers où la variable container.image est identique  (stable64, legacy | stable)

le tuto OVH sur ce fichier : https://docs.ovh.com/fr/hosting/configurer-fichier-ovhconfig/

Publié dans Hébergeurs

Google Webdesigner – animations, bannières, pubs, jeux

Comme beaucoup « d’anciens » du web, j’ai été un grand utilisateur et un concepteur « avancé » de l’antique logiciel FLASH.
Flash avait beaucoup de défauts, mais c’était un outil passionnant et qui ouvrait une quantité de possibilités incroyables. Pour différentes agences web, ou pour des projets propres, j’ai créé de très nombreuses animations, films, jeux, bannières de pubs, en Flash.

Lorsque Flash a commencé à disparaître, le web a vraiment manqué d’une alternative pour la création de ce genre de contenus, surtout sans repartir vers un standard propriétaire.

Une des possibilités de substituts, c’est le logiciel assez peu connu Google Webdesigner.

Google Webdesigner

Google Webdesigner est une application « connectée » mais qui s’installe sur votre poste, pour windows, mac et linux. L’interface reprend les grands concepts des softs d’animations, un espace de travail, une bibliothèque, des calques, une timeline…

Malheureusement les débuts de Google Webdesigner ont été … un peu épuisants : beaucoup de bugs rendaient l’interface très très difficile à utiliser. Notamment des pertes de saisie au clavier, ou des problèmes d’affichages… Cela a duré des années mais le produit est maintenant ENFIN utilisable « sereinement », notamment sur les OS linux.

Assez peu gourmand en ressources, Google Webdesigner est un outil relativement facile d’accès (pour ceux qui ont déjà été en contact avec d’autres softs de montage ou d’animation).
Il faut préparer les éléments graphiques ou multimédia en dehors de l’outil, mais l’assemblage est assez plaisant à faire dans l’interface ; prévoir un écran avec une belle résolution car il y a souvent beaucoup de panneaux ouverts, et beaucoup d’infos à afficher simultanément.

Gros avantage, le soft est gratuit, ce qui le rend accessible à des projets de toutes tailles.

Au niveau des rendus des animations dans les navigateurs, c’est un peu moins « clean » que ne l’était Flash, car il y a de petites disparités entre les différents browsers, mais tout reste souvent cantonné à de petits détails.

Webdesigner génère au final un fichier HTML + une collection d’éléments multimédias (images, videos etc), lisible sans plugins par les navigateurs. Le point faible est que le HTML est vite très très lourd, plusieurs centaines de Ko même pour des animations simples.

 

Si vous avez des besoins en créations / intégrations HTML5, n’hésitez pas à nous contacter !

 

 

Publié dans Dev, Web marketing / digital marketing

Prestashop 1.7.7 et erreurs d’arrondis sur Paypal

Si votre Prestashop 1.7 rencontre des problèmes d’erreurs d’arrondis avec Paypal (les factures d’un montant de 19,90 sont encaissées sur Paypal à 19 euros par exemple), que les sommes encaissées par le module paypal v5.1.2 sont toutes arrondies à l’euros près,

Vérifiez que votre site a bien la variable de configuration PS_PRICE_DISPLAY_PRECISION dans la table ps_configuration

En insérant une valeur de 2 pour PS_PRICE_DISPLAY_PRECISION, vous résoudrez ce bug d’arrondi , qui de plus déclenche des messages d’erreurs de paiement.

Cette variable est utilisée par le module paypal :

modules/paypal/paypal.php
function getDecimal()

 

Publié dans Dev

Changer d’hébergeur

Service de migration de serveurs, sites web, domaines et emails

Tél. +33.3.81.47.93.85
Email : info@demenageur-site.com
Twitter : DemenageurSite
Web : www.demenageur-site.com