Concrete5:如何为多语言网站创建自定义导航?

时间:2016-12-14 15:47:54

标签: php html multilingual concrete5

我需要使用Concrete5(v 5.7)创建多语言网站。

我是自定义主题,我的页面布局是:

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

使用当前导航实施:

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

我得到的结果在导航中只有| EN | <language2> |

找不到任何正确的文档如何修复或使用多语言设置。

1 个答案:

答案 0 :(得分:0)

使用Concrete5版本5.7.x.x,您可以使用全局区域。可以针对每种语言设置不同的全局区域。

使用全局区域时,您可以在一种语言上添加一个autonav块并在下面显示页面,而在另一种语言中,您可以添加一个显示以下页面的autonav块。
使用全局区域的另一个优点是模板。已知硬编码块始终显示默认模板(view.php,view.css)。

如果您不希望其他任何人(超级用户除外)能够编辑全局区域,您可以使用以下代码:

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

如果您真的想使用硬编码块,您仍然可以检查语言并为每种语言加载不同的(硬编码)块。

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