2017-07-07 7 views
0

Drupal8で私の問題があります。私はウェブサイトに3つの言語を持っています。将来、新しい言語をインストールすることができます。 メインメニューに言語切り替えを入れたいと思っていました。Drupal8のメインメニューで言語スイッチャーを作成する方法

私の最初の試みは、UIを持つメニュー項目を追加することでした。 「中国語」のように。しかし、そのような言語接頭辞を記述することは不可能です。また、Drupalから言語が追加または削除された場合、自動的には更新されません。

2回目の試行:

$item = \Drupal\menu_link_content\Entity\MenuLinkContent::create([ 
    'link' => ['uri' => 'internal:/zh-hans/'], 
    'title' => 'Chinese', 
    'menu_name' => 'main', 
]); 
$item->save(); 

これは、メインメニューに新しい項目が追加されますが、それは言語の接頭辞になりません。とにかく、これは動的な解決策ではないため、言語を追加または削除するときにメニューを再構築する必要があります。また、言語の順序は一度だけ設定されます。現在の言語がトップになるようにして、現在の言語に依存します。

答えて

0

あなたがDrupalののコア言語スイッチャーコード従うことができます:言語リンク(ライン88および90)のリストを見るその後PathMatcherInterfaceとLanguageManagerInterface

use Drupal\Core\Path\PathMatcherInterface; 
use Drupal\Core\Language\LanguageManagerInterface; 

を使用してください

core/modules/language/src/Plugin/Block/LanguageBlock.php 

まず:

$route_name = $this->pathMatcher->isFrontPage() ? '<front>' : '<current>'; 

$links = $this->languageManager->getLanguageSwitchLinks($type, Url::fromRoute($route_name)); 
+0

私は既に言語スイッチャを調べましたが、それは私が探しているものではありませんr。私はその事をダイナミックな方法でDrupalのメインメニューに入れたいと思っています。問題は本当にリンクを得ることではありません。これらのリンクをメインメニューに動的に含める方法を見つけることです。 – Arioch

関連する問題