私はこのようなメニュー構造を持っています:
ホーム|について|製品
ユーザーが現在英語のページを使用している場合、次のようにする必要があります。
ホーム|について|製品|スウェーデンの
ユーザーが現在スウェーデン語を使用している場合は、次のように表示されます。
ホーム|について|製品|英語
1:では、一度に1つの言語リンクのみを表示するメインメニューにメニュースイッチャーリンクを追加するにはどうすればよいですか? 2:メニューリンクを追加するときに、パスフィールドの各言語のパテはどうなりますか。
私は友人の助けを借りて問題を解決しました。メニューブロックモジュールを使用して、2つのメニューリストのリストを作成しました。 1組の英語メニューと1組のスウェーデン語メニューを次の順序で並べます。
ホーム|について|製品|スベンスカ
そしてスウェーデンのために
ヘム| OM |製品|英語
メニューを作成した後、リンクアイテムの作成中にパスフィールドにノード(/ node/3)OR言語(/?language = en))へのURLまたはリンクを提供できませんでした。
私の場合、(http // mysite.com /?q = en)などの言語を(http // mysite.com /?q = sv)に変更すると、上記で作成したスウェーデン語のメニューブロックが表示されます。スウェーデン語のメニューブロックがスウェーデン語で、英語のメニューブロックで英語が有効になっているため。その後、メインテーマで使用できるフックの1つを私の要件に変更します。
Template.phpファイルでyourtheme_menu_link()フックを使用しました。 ifステートメントのセットの下に、このブロックを追加しました。
if ($element['#original_link']['mlid'] == 2662) {
global $language;
$lang = $language;
$lang->prefix = "en";
$special_link = '<a href="' . url('<front>', array('language' => $lang)) . '">English</a>';
} else if ($element['#original_link']['mlid'] == 2675) {
global $language;
$lang = $language;
$lang->prefix = "sv";
$special_link = '<a href="' . url('<front>', array('language' => $lang)) . '">Svenska</a>';
}
if (at_get_setting('extra_menu_classes', $theme_name) == 1 && !empty($element['#original_link'])) {
if (!empty($element['#original_link']['depth'])) {
$element['#attributes']['class'][] = 'menu-depth-' . $element['#original_link']['depth'];
}
if (!empty($element['#original_link']['mlid'])) {
$element['#attributes']['class'][] = 'menu-item-' . $element['#original_link']['mlid'];
}
}
ここで、2662と2675はメニュー項目IDです。これは、誰かが必要な場合に役立ちます。それは私の問題を解決しました。
これを行うには2つの方法があります。1つは、HTML/CSSを使用して言語スイッチャーブロックをメニューに配置する方法です。可変長メニューを右揃えしない限り、おそらく少し難しくなります。
2つはメニューに言語スイッチャーを追加することです。これを行うには、 http://www.liquidcms.ca/how-to-language-switcher-menu-item のようなものを使用できます。
言語ごとのメニュー モジュールにはオプションがあります
このモジュールを使用すると、メニューエントリの内容を言語ごとに明確に把握できます。 Drupalでは、これらのリンクはすべて同じページ上にあるため、どの言語であるかは明確ではなく、メニューも時間とともに非常に大きくなります。