質問: 言語スイッチャーから言語を非表示にする joomla言語切り替えモジュールについて質問があります。ウェブサイトで英語に切り替えるオプションを非表示にしたいのですが。英語のサイトはもう存在しないと書かれているので、英語を非公開にすることはできません。しかし、別のリンクからアクセスされるため、存在する必要があります。
回答: anibalの回答と、モジュールテンプレートのオーバーライドまたは代替レイアウトの作成方法に関するリンクをたどります...これは、languagesモジュールのテンプレートファイル内で使用できるコードの一部です。モジュールのテンプレートは、言語の表示方法について、モジュールマネージャーで定義した設定をチェックしています。コードの一部は次のとおりです: <?php if ($params->get('show_active', 0) || !$language->active):?> <li class="<?php echo $language->active ? 'lang-active' : '';?>" dir="<?php echo jlanguage::getinstance($language->lang_code)->isrtl() ? 'rtl' : 'ltr' ?>"> <a href="<?php echo $language->link;?>"> <?php if ($params->get('image', 1)):?> <?php echo jhtml::_('image', 'mod_languages/' . $language->image . '.gif', $language->title_native, array('title' => $language->title_native), true);?> <?php else : ?> <?php echo $params->get('full_name', 1) ? $language->title_native : strtoupper($language->sef);?> <?php endif; ?> </a> </li> <?php endif;?> <?php endforeach;?> foreachループを使用して、利用可能なコンテンツ言語をループし、表示します。 foreachループ内で、その開始直後と終了前に、実行したコードを次のような条件チェックでラップできます。これはforeachループの開始後に行われます。<?php if ($language->lang_code != 'en-gb') {?> これにより、メニューの言語が英語でない場合にのみ、言語メニューをレンダリングするコードが作成されます。これは、foreachループが閉じる直前に、ifステートメントを閉じてラップします。<?php } ?> つまり、次のようなものになるはずです:<?php foreach ($list as $language) : ?> <?php if ($language->lang_code != 'en-gb') {?> // don't run if it's english. <?php if ($params->get('show_active', 0) || !$language->active):?> <li class="<?php echo $language->active ? 'lang-active' : '';?>" dir="<?php echo jlanguage::getinstance($language->lang_code)->isrtl() ? 'rtl' : 'ltr' ?>"> <a href="<?php echo $language->link;?>"> <?php if ($params->get('image', 1)):?> <?php echo jhtml::_('image', 'mod_languages/' . $language->image . '.gif', $language->title_native, array('title' => $language->title_native), true);?> <?php else : ?> <?php echo $params->get('full_name', 1) ? $language->title_native : strtoupper($language->sef);?> <?php endif; ?> </a> </li> <?php endif;?> <?php } ?> <?php endforeach;?>