web-dev-qa-db-fra.com

Masquer les langues du sélecteur de langue

J'ai une question sur le module de commutation de langue Joomla. Je voudrais masquer l'option de passer en anglais sur le site Web. Je ne peux pas annuler la publication de la langue anglaise car cela indique que le site anglais n'existe plus. Mais j'ai besoin qu'il existe car il est accessible depuis un lien différent.

enter image description here

2
Matthew
  1. Copier le fichier modules\mod_languages\tmpl\default.php à templates\YOURTEMPLATE\html\mod_languages\default.php pour créer un remplacement de modèle pour le module de langue.
  2. Recherchez la ligne suivante dans votre remplacement de modèle (environ la ligne 32 dans Joomla 3.3):

    <li class="<?php echo $language->active ? 'lang-active' : '';?>" dir="<?php echo JLanguage::getInstance($language->lang_code)->isRTL() ? 'rtl' : 'ltr' ?>">
    

    Remplacez par ceci (en ajoutant echo $language->title_native;):

    <li class="<?php echo $language->active ? 'lang-active' : ''; echo ' ' . $language->lang_code; ?>" dir="<?php echo JLanguage::getInstance($language->lang_code)->isRTL() ? 'rtl' : 'ltr' ?>">
    

    Cela ajoutera le code de langue au <li> balises, vous donnant <li class="active en-GB"... et vous permet de cibler n'importe quelle langue à l'aide de CSS.

  3. Enfin, ajoutez ce code à la feuille de style CSS de votre modèle (remplacez en-GB avec la langue que vous souhaitez masquer):

    .en-GB {
        display: none!important;
    }
    
2
johanpw

Après la réponse d’Anibal et le lien sur la façon de créer une substitution de modèle de module ou une présentation alternative ... voici un morceau de code que vous pourriez utiliser dans le fichier de modèle du module de langues.

Le modèle du module vérifie les paramètres que vous avez définis dans le gestionnaire de module, en ce qui concerne l'affichage des langues.

Une partie du code est comme ceci:

    <?php if ($params->get('show_active', 0) || !$language->active):?>

        <li class="<?php echo $language->active ? 'lang-active' : '';?>" dir="<?php echo JLanguage::getInstance($language->lang_code)->isRTL() ? 'rtl' : 'ltr' ?>">
        <a href="<?php echo $language->link;?>">
        <?php if ($params->get('image', 1)):?>
            <?php echo JHtml::_('image', 'mod_languages/' . $language->image . '.gif', $language->title_native, array('title' => $language->title_native), true);?>
        <?php else : ?>

                <?php echo $params->get('full_name', 1) ? $language->title_native : strtoupper($language->sef);?>

        <?php endif; ?>
        </a>
        </li>
    <?php endif;?>
<?php endforeach;?>

Il utilise foreach loop pour parcourir les langues de contenu disponibles et les afficher. Dans la boucle foreach et juste après son début et juste avant, vous pouvez envelopper le code exécuté avec un contrôle conditionnel comme ci-dessous:

Cela va après le début de la boucle foreach:

<?php if ($language->lang_code != 'en-GB') {?>

Cela rendra le code qui rend les menus de langue, seulement si la langue du menu n'est pas l'anglais.

Ceci ferme et encapsule votre instruction if, juste avant la fermeture de la boucle foreach.

<?php } ?>

Donc, vous devriez vous retrouver avec quelque chose comme ceci:

<?php foreach ($list as $language) : ?>
    <?php if ($language->lang_code != 'en-GB') {?> // Don't run if it's english.
    <?php if ($params->get('show_active', 0) || !$language->active):?>

        <li class="<?php echo $language->active ? 'lang-active' : '';?>" dir="<?php echo JLanguage::getInstance($language->lang_code)->isRTL() ? 'rtl' : 'ltr' ?>">
        <a href="<?php echo $language->link;?>">
        <?php if ($params->get('image', 1)):?>
            <?php echo JHtml::_('image', 'mod_languages/' . $language->image . '.gif', $language->title_native, array('title' => $language->title_native), true);?>
        <?php else : ?>

                <?php echo $params->get('full_name', 1) ? $language->title_native : strtoupper($language->sef);?>

        <?php endif; ?>
        </a>
        </li>
    <?php endif;?> 
            <?php } ?>

<?php endforeach;?>
1
FFrewin

Vous pouvez créer une nouvelle disposition de module, affichant uniquement les langues dont vous avez besoin.

Mises en page alternatives du module http://docs.joomla.org/Layout_Overrides_in_Joomla#Module_Alternative_Layouts

0
Anibal