web-dev-qa-db-ja.com

メインメニューに言語メニューを追加する

私はこのようなメニュー構造を持っています:

ホーム|について|製品

ユーザーが現在英語のページを使用している場合、次のようにする必要があります。

ホーム|について|製品|スウェーデンの

ユーザーが現在スウェーデン語を使用している場合は、次のように表示されます。

ホーム|について|製品|英語

1:では、一度に1つの言語リンクのみを表示するメインメニューにメニュースイッチャーリンクを追加するにはどうすればよいですか? 2:メニューリンクを追加するときに、パスフィールドの各言語のパテはどうなりますか。

2
mbkh10

私は友人の助けを借りて問題を解決しました。メニューブロックモジュールを使用して、2つのメニューリストのリストを作成しました。 1組の英語メニューと1組のスウェーデン語メニューを次の順序で並べます。

ホーム|について|製品|スベンスカ

enter image description here

そしてスウェーデンのために

ヘム| 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
mbkh10

これを行うには2つの方法があります。1つは、HTML/CSSを使用して言語スイッチャーブロックをメニューに配置する方法です。可変長メニューを右揃えしない限り、おそらく少し難しくなります。

2つはメニューに言語スイッチャーを追加することです。これを行うには、 http://www.liquidcms.ca/how-to-language-switcher-menu-item のようなものを使用できます。

2
Steven

言語ごとのメニュー モジュールにはオプションがあります

このモジュールを使用すると、メニューエントリの内容を言語ごとに明確に把握できます。 Drupalでは、これらのリンクはすべて同じページ上にあるため、どの言語であるかは明確ではなく、メニューも時間とともに非常に大きくなります。

2
Bala