2

ログインしているユーザーに対して、組み込みの「サインイン」ポートレットを非表示にしたいと考えています。

設定ウィンドウのスクリーンショット

これを達成するためのアクセス許可を設定するにはどうすればよいですか?

4

4 に答える 4

3

Liferay は RBAC パーミッション モデルを使用しますが、おそらくパーミッションを通じてこれを達成することはできません。これは、ゲストに付与されたアクセス許可からシステム ロールを奪うことはまったく非論理的だからです。

私の頭の上から、いくつかの他のオプションを検討してください。

  • 現在のユーザーがゲストではないかどうかに応じて、一部のポートレット列を表示または非表示にするレイアウト テンプレートを作成します (レイアウト テンプレートの速度環境で正確に使用できる変数に依存するため、これがそれほど簡単かどうかは完全にはわかりません)。
  • サインイン ポートレットを別のポートレットにラップする
  • サインイン ポートレットの JSPをフックするだけ
  • もしかしてジャバスクリプト?おそらく最も簡単な解決策ですが、最善ではありません
于 2012-11-29T22:53:15.873 に答える
2

これを実現するもう 1 つの方法は、Login ポートレットを含む公開ページを作成することです。このページを Login と呼びます (このページとそのポートレットはゲストが表示できる必要があります)。

次に、別のページを作成し、これを Welcome と呼びます。ログインしたユーザーが見られるように、いくつかのポートレットを配置します。ページはできれば非公開にする必要がありますが、公開する場合は、ゲストがポートレットなどを表示できないように権限を変更してください。

次に、[コントロール パネル] > [ポータル] > [ポータル設定] に移動し、ナビゲーション リンクを変更します (疑問符アイコンにカーソルを合わせると、各リンクの機能を説明する有益なツールチップが表示されます)。

上記のログイン ページとウェルカム ページの続きの例を次に示します。

ここに画像の説明を入力

シンプル!コードの変更やカスタム テーマはありません。

于 2012-11-30T16:49:27.120 に答える
0

Liferayは、サインインしたクラスを<body>要素に追加します。HTMLで利用できるが、表示されていない場合は、次を追加します。

.signed-in .portlet_login {
    display:none;
}

または、テーマまたはログインポートレットのルックアンドフィールの高度なスタイリングに類似しています。

于 2012-11-30T20:33:40.173 に答える
0

$is_signed_inチェックインに基づいて、多くのものをレンダリングする/レンダリングしないことができますTheme VM files

is_signed_intrueログインしているユーザーとそれ以外のユーザー向けになりfalseます。

いくつかの例は以下からportal_vm.vm

#if(!$is_signed_in)
            <a href="$sign_in_url" id="sign-in" rel="nofollow">$sign_in_text</a>             
#end


#if($is_signed_in)
#if($permissionChecker.isOmniadmin()== true)
    #dockbar()
#end

#if(!$is_signed_in)
                $theme.include($themeServletContext, "/jsp/someJsp.jsp")
 #end   
于 2012-12-10T06:11:03.443 に答える