Jump to content

Solution globale de changement de logo en fonction de la langue


Recommended Posts

Bonjour à tous,

 

Je cherche une solution globale (front-end, factures, mails,…) de modification du logo en fonction de la langue.

 

Voici mon process jusqu'à présent :

  • Dans le dossier image de PS (PS/img/), j'ai créé 4 logos sans toucher à ceux déjà existants pour éviter les bugs (maboutique-logo_en.jpg, maboutique-logo_fr.jpg, maboutique-logo_en-print.jpg, maboutique-logo_fr-print.jpg)
  • J'ai modifié le header.tpl de mon thème :
    j'ai remplacé src="{$logo_url}" par src="{$img_ps_dir}maboutique-logo_{$lang_iso}.jpg"

 

J'en suis à présent à la perso des mails et factures où, respectivement, on fait appel aux variables suivantes dans la balise img src :

  • montheme/mails/fr/header.tpl : {shop_logo}
  • montheme/pdf/header.tpl : {$logo_path}

 

Je me dis que ça commence à faire beaucoup de variables à modifier.

Est-ce la bonne approche ? Avez-vous autre chose à me conseiller ?

Où puis-je trouver ces fameuses variables globales ? Puis-je les modifier sans tout casser dans le back-office ?

 

Merci d'avance pour vos éclaircissements.

Edited by KonfiDD (see edit history)
Link to comment
Share on other sites

Au fil de mes recherches, voici ce que j'ai déjà pu résoudre moyennant quelques modifications au post précédent :

  • déplacer les 4 logos dans PS/themes/mon-theme/img (le dossier images de mon thème et non plus celui à la racine du Prestashop)

 

 

Pour les logos dans les header des pages :
 

  • dans PS/themes/mon-theme/header.tpl (dans la div header_logo), il faut modifier src="{$logo_url}" :

    <div id="header_logo">
    <a href="{$base_dir}" title="{$shop_name|escape:'htmlall':'UTF-8'}">
    <img class="logo img-responsive" src="{$img_dir}{$shop_name|lower|escape:'htmlall':'UTF-8'}-logo_{$lang_iso}.jpg" alt="{$shop_name|escape:'htmlall':'UTF-8'}">
    </a>
    </div>
    

    PS ira donc chercher le logo en ou fr en fonction de la langue active dans la boutique.

 

 

Pour les logos des factures, il faut overrider la fonction getLogo() présente dans PS/classes/pdf/HTMLTemplate.php :
 

  • il faut donc créer le fichier HTMLTemplate.php dans le dossier PS/override/classes/pdf et y insérer ceci :

    <?php
    
    abstract class HTMLTemplate extends HTMLTemplateCore
    {
        /**
         * Returns the invoice logo
         */
        protected function getLogo()
        {
            $logo = '';
    
            // $physical_uri = Context::getContext()->shop->physical_uri.'img/';
            $language = Context::getContext()->language;
            $shop_name = strtolower(Configuration::get('PS_SHOP_NAME', null, null, (int)$this->order->id_shop));
    
            if (Configuration::get('PS_LOGO_INVOICE', null, null, (int)$this->order->id_shop) != false && file_exists(_PS_IMG_DIR_.Configuration::get('PS_LOGO_INVOICE', null, null, (int)$this->order->id_shop)))
    
                // $logo = _PS_IMG_DIR_.Configuration::get('PS_LOGO_INVOICE', null, null, (int)$this->order->id_shop);
                $logo = _PS_THEME_DIR_.'img/logo-'.$shop_name.'_'.$language->iso_code.'-print.jpg';
    
            elseif (Configuration::get('PS_LOGO', null, null, (int)$this->order->id_shop) != false && file_exists(_PS_IMG_DIR_.Configuration::get('PS_LOGO', null, null, (int)$this->order->id_shop)))
    
                // $logo = _PS_IMG_DIR_.Configuration::get('PS_LOGO', null, null, (int)$this->order->id_shop);
                $logo = _PS_THEME_DIR_.'img/logo-'.$shop_name.'_'.$language->iso_code.'.jpg';
    
            return $logo;
        }
    }
    
    
    

    PS ira chercher les logos print correspondant à la langue, sinon les logos web correspondant à la langue, sinon rien.

 

 

Pour les logos dans les mails envoyés, il faut overrider la fonction send() dans PS/classes/Mail.php :
 

  • il faut donc dupliquer le fichier Mail.php dans le dossier PS/override/classes et y modifier ceci :
    // ADDED TO MANAGE LOGOS
                $shop_name = strtolower(Tools::safeOutput(Configuration::get('PS_SHOP_NAME', null, null, $id_shop)));
    
                if (Configuration::get('PS_LOGO_MAIL') !== false && file_exists(_PS_IMG_DIR_.Configuration::get('PS_LOGO_MAIL', null, null, $id_shop)))
                    // $logo = _PS_IMG_DIR_.Configuration::get('PS_LOGO_MAIL', null, null, $id_shop);
                    $logo = _PS_THEME_DIR_.'img/logo-'.$shop_name.'_'.$iso.'-mail.jpg';
                else
                {
                    if (file_exists(_PS_IMG_DIR_.Configuration::get('PS_LOGO', null, null, $id_shop)))
                        // $logo = _PS_IMG_DIR_.Configuration::get('PS_LOGO', null, null, $id_shop);
                        $logo = _PS_THEME_DIR_.'img/logo-'.$shop_name.'_'.$iso.'.jpg';
                    else
                        $template_vars['{shop_logo}'] = '';
                }
    

    Pour trouver les lignes, faire une recherche dans le fichier sur le terme "logo".

     

Edited by KonfiDD (see edit history)
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...