2016-12-14 9 views
0

私はConcrete5(v 5.7)で多言語サイトを作成する必要があります。Concrete5:多言語サイト用のカスタムナビゲーションを作成するには?

私はカスタムテーマをしましたし、私のページのレイアウトは次のようになります。

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

多言語設定を修正または使用する方法についての適切な文書が見つかりません。

答えて

0

Concrete5バージョン5.7.x.xでは、グローバルエリアを使用できます。グローバルエリアは、言語ごとに異なる設定が可能です。

グローバルエリアを使用する場合は、ある言語にautonavブロックを追加し、下のページを表示し、他の言語では下のページを表示するautonavブロックを追加できます。
グローバルエリアで作業するもう1つの利点はテンプレートです。ハードコードされたブロックは、常にデフォルトのテンプレート(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 
}