web-dev-qa-db-ja.com

ログイン状態に応じてメニュー項目のタイトルを変更する

T3 Framework空白のテンプレートを使用しています。メガメニューにログインフォームをサブメニューとして挿入したので、ユーザーがメニュー項目にカーソルを合わせると表示されます。

ユーザーがログインしているかどうかに応じて、メニュー項目のタイトル(またはそこに表示されるテキスト)を変更したいと思います。ログインしていない場合は「ログイン」、ログインしている場合は「hi(ユーザー名)」。

これは可能ですか、おそらく2つの異なるメニュー項目(ゲストユーザー用と登録済み用)を作成せずに、テンプレートにphpを追加することによって可能ですか?

5
dfk_7677

これは私がやったことです:

mod_loginTemplate Override を作成します

完了したら、次のファイルを開きます。

templates/YOUR_TEMPLATE/html/mod_login/default_logout.php

以下を追加します:

$doc = JFactory::getDocument();
$doc->addScriptDeclaration('
    jQuery(document).ready(function($){ 
        $(".menu").find("a.something").empty().text("Hi ' . $user->username .'");
    });
');
1
Lodder

質問を理解している場合、ユーザーがログインしているかどうかに応じて、メニュー項目を非表示/変更したいですか?

これで、ゲストユーザーやログインしたユーザーからコンテンツを非表示にする方法を管理できました。

新しい「ゲスト」グループを作成します;

  • ユーザーマネージャーでゲストグループを作成する
  • 新しいゲスト表示アクセスレベルを追加する
  • ユーザーマネージャーのオプションでデフォルトのゲストグループを変更する

詳細なガイド here があります。

その後;

  • ゲストに表示するモジュールを検索>編集>ゲストへのアクセスを設定
  • 登録済みユーザーに表示するモジュールを検索>編集>アクセス権を登録済みに設定

これにより、アクセスレベルの問題が解決されます。

'Hi {Username}'を追加するには、NoNumbers Sourcerer を使用し、$user->usernameはモジュールタイトル内にあります。

Sourcererは、phpコードをチェックして、よく使用されるJoomlaオブジェクト/変数を参照しているかどうかを確認し、作成します。つまり、これらの変数を毎回自分で作成する必要はありません。

(@Loddersと比較して)おそらく最もクリーンな方法ではありませんが、機能し、他のモジュールなどに簡単に複製できます...

お役に立てれば!

4
jonboy