2016-12-14 1 views
0

Je dois créer un site multilingue avec Concrete5 (v 5.7).Concrete5: Comment créer une navigation personnalisée pour un site multilingue?

J'ai un thème personnalisé et ma mise en page serait:

Home 
|-en 
|--Frontpage 
|--Contatcs 
|-<language2> 
|--<Frontpage> 
|--<Contacts> 

Avec la mise en œuvre de la navigation actuelle:

<nav class="nav"> 
<?php 
$bt_main = BlockType::getByHandle('autonav'); 
$bt_main->controller->displayPages = 'top'; 
$bt_main->controller->orderBy = 'display_asc';      
$bt_main->controller->displaySubPages = 'none';      
$bt_main->render('templates/level1'); 
?> 
</nav> 

je reçois le résultat lorsque la navigation, il est seulement | EN | <language2> |

Impossible de trouver un document approprié pour corriger ou utiliser les paramètres multilingues.

Répondre

0

Avec Concrete5 version 5.7.x.x, vous pouvez utiliser des zones globales. Les zones globales peuvent être configurées différemment pour chaque langue. Lorsque vous utilisez une zone globale, vous pouvez ajouter un bloc autonav dans une langue et afficher les pages ci-dessous et dans l'autre langue, vous pouvez ajouter un bloc autonav qui affiche les pages ci-dessous.
Un autre avantage de travailler avec une zone globale est les modèles. Les blocs codés en dur sont connus pour afficher toujours le modèle par défaut (view.php, view.css).

Si vous ne voulez pas que quelqu'un d'autre (à l'exception du super-utilisateur) pour pouvoir modifier la zone globale, vous pouvez utiliser ce code:

$u = new User(); 
$areaNav = new GlobalArea('Navigation'); 
if(!$u->isSuperUser()){ 
    $areaNav->disableControls(); 
} 
$areaNav->display($c); 

Si vous voulez vraiment travailler avec un hardcoded block, vous pouvez toujours vérifier la langue et charger un bloc différent (codé en dur) pour chaque langue.

$lang = Localization::activeLanguage(); 
if($lang == 'en'){ 
    //hardcoded block for english language 
}else if($lang == 'fr'){ 
    //hardcoded block for french language 
}