1

ACL に関するこのチュートリアルに従いました - http://community.joomla.org/blogs/community/1252-16-acl.html

すべてを明確にするために:これが私が必要とするものです:

  1. 記事にリンクしているメニュー項目がある
  2. ユーザーが (まだログインしていない) Web サイトにアクセスします (ユーザーが既に登録されているかどうかは関係ありません)。
  3. このユーザーにはメニュー項目が表示されます
  4. ユーザーがメニュー項目をクリックする
    • ユーザーがログインしていない場合 - ユーザーはユーザー名/パスの入力を求められます
    • ユーザーがログインしている場合 -> goto 6
  5. ログインに成功すると、ユーザーはメニュー項目がリンクされた記事の内容を見ることができます。

私の目的は、ログインしているユーザーとログインしていないユーザーのすべてに表示されるメニュー項目を作成することです。しかし、クリックすると、ログインしたユーザーのみがメニュー項目が指しているコンテンツを表示できます。ユーザーがログインしていない場合 -> ログインフォームが表示されます。

上記のチュートリアルに従った後、ログインしていないユーザーには完全に見えないメニュー項目を取得しました.

メニュー項目をすべてのユーザーに表示するにはどうすればよいですか? ただし、コンテンツを表示するにはログインが必要です。

ありがとうございました。

編集1:

この解決策を見つけましたhttp://docs.joomla.org/Auto_redirect_guests_to_login それが唯一の解決策ですか? 私は巨大なツリーメニュー構造を持っています。つまり、巨大なメニューのクローンが必要です...そして、メニュー項目名を変更するたびに、(表示メニューと非表示メニューで) 2 回行う必要があります。2つのメニューを持たない他の解決策はありますか?

編集2:

別の解決策を見つけました(コアファイルのハッキング)。これは、メニュー項目が「公開」に設定されているが、記事の ACL が「登録済み」に設定されている場合です。

コンポーネント/com_content/views/article/view.html.php

から

// Check the view access to the article (the model has already computed the values).
if ($item->params->get('access-view') != true && (($item->params->get('show_noauth') != true &&  $user->get('guest') ))) {
  JError::raiseWarning(403, JText::_('JERROR_ALERTNOAUTHOR'));
  return;
}

// Check the view access to the article (the model has already computed the values).
if ($item->params->get('access-view') != true && (($item->params->get('show_noauth') != true &&  $user->get('guest') ))) {
  // Redirect to login
  $uri = JFactory::getURI();
  $app->redirect('index.php?option=com_users&view=login&return=' . base64_encode($uri), JText::_('Members please login to view this page. If you are not a member please <a href="/component/users/?view=registration">register here<a>'));
  return;
}

そのコードをオーバーライドして、コア ファイルのハッキングを回避するにはどうすればよいですか?

それとも、もっとエレガントな解決策がありますか?

ありがとう。

4

1 に答える 1

1

テンプレートを上書きして、メッセージを提供するページにログインフォームを追加することができます。テンプレートオーバーライドを使用すると、コアファイルをハッキングすることなくページにエクストラを追加できるため、Joomlaを更新するときに、それは引き続き存在します。

オーバーライドする方法の詳細については、以下のリンクを参照してください。

http://docs.joomla.org/How_to_override_the_output_from_the_Joomla!_core

お役に立てれば。

于 2012-10-01T18:48:03.670 に答える