Jump to content

Module CMS et modif multilingue


Recommended Posts

Bonjour à tous,
J'aimerais modifier le module CMS afin qu'il n'affiche sur la page d'accueil que les articles possédant une traduction dans la langue active.
J'aimerai par exemple avoir un article du module CMS ne possédant qu'une version Anglaise, et que cet article ne s'affiche que pour la version Anglaise et n'apparaisse pas pour les autres versions (FR, espagnol ...).
Avant de me lancer, je voulais savoir si quelqu'un avait déjà été confronté à ce problème, et si vous saviez s'il était facilement envisageable de modifier le module en ce sens (je connais très bien php mais je n'ai jamais codé sur prestashop).

Merci de votre aide !

Link to comment
Share on other sites

Bonjour à tous,
J'aimerais modifier le module CMS afin qu'il n'affiche sur la page d'accueil que les articles possédant une traduction dans la langue active.
J'aimerai par exemple avoir un article du module CMS ne possédant qu'une version Anglaise, et que cet article ne s'affiche que pour la version Anglaise et n'apparaisse pas pour les autres versions (FR, espagnol ...).
Avant de me lancer, je voulais savoir si quelqu'un avait déjà été confronté à ce problème, et si vous saviez s'il était facilement envisageable de modifier le module en ce sens (je connais très bien php mais je n'ai jamais codé sur prestashop).

Merci de votre aide !


Salut,
Tu trouveras sans doute ton bonheur en adaptant cette fonction , de la classe CMS (/classes/CMS.php) :

    public static function listCms($id_lang = NULL, $id_block = false, $active = true)
   {
       if (empty($id_lang))
           $id_lang = (int)Configuration::get('PS_LANG_DEFAULT');

       return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('
       SELECT c.id_cms, l.meta_title
       FROM  '._DB_PREFIX_.'cms c
       JOIN '._DB_PREFIX_.'cms_lang l ON (c.id_cms = l.id_cms)
       '.(($id_block) ? 'JOIN '._DB_PREFIX_.'block_cms b ON (c.id_cms = b.id_cms)' : '').'
       WHERE l.id_lang = '.(int)($id_lang).(($id_block) ? ' AND b.id_block = '.(int)($id_block) : '').($active ? ' AND c.`active` = 1 ' : '').'
       ORDER BY c.`position`');
   }



au lieu du return sur la requete , tu fais un $result =...
Ensuit tu testes les champs pour savoir si dans la langue active , les champs sont ou non vides.
Si c'est vide , tu retournes false , sinon ben le $result

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...