Concrete5:如何为多语言站点创建自定义导航?
Concrete5: How to create custom navigation for multilingual site?
我需要使用 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>
我得到的结果是导航中只有 |中文 | <language2>
|
找不到任何正确的文档来修复或使用多语言设置。
使用 Concrete5 版本 5.7.x.x 您可以使用全局区域。可以为每种语言设置不同的全局区域。
使用全球区域时,您可以在一种语言中添加自动导航块并显示下方页面,而在另一种语言中您可以添加自动导航块以显示下方页面。
使用全局区域的另一个优势是模板。众所周知,硬编码块始终显示默认模板 (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
}
我需要使用 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>
我得到的结果是导航中只有 |中文 | <language2>
|
找不到任何正确的文档来修复或使用多语言设置。
使用 Concrete5 版本 5.7.x.x 您可以使用全局区域。可以为每种语言设置不同的全局区域。
使用全球区域时,您可以在一种语言中添加自动导航块并显示下方页面,而在另一种语言中您可以添加自动导航块以显示下方页面。
使用全局区域的另一个优势是模板。众所周知,硬编码块始终显示默认模板 (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
}