1

こんにちは、これはプログラミングの質問かもしれませんし、そうでないかもしれません。しかし、concrete5 フォーラムでこの質問をしようとしましたが、うまくいきませんでした。誰かがここで手がかりを教えてくれることを願っています..

ユーザーグループごとに composer の属性に異なるデフォルト値を設定する方法はありますか?

私の質問を詳しく説明しましょう。私のクライアントには約 60 の組織単位があります (各単位には独自のユーザー グループがあります)。ユニットごとに、独自のページ リストを作成したいと考えています。ユニットメンバーが投稿した全記事を独占収録。それに加えて、組織単位からのすべての投稿も、グローバル ニュース カテゴリのサブカテゴリに集約する必要があります。だから私はこのようになるようにコンテンツ構造を構築します

ORGANIZATIONAL UNIT DIRECTORY [ページタイプ]

  • unit 1の記事
  • unit 2の記事
  • unit3の記事
  • ...

NEWS [ページタイプ]

  • 組織単位情報 [すべての単位からの集約されたページ リストを含む]
  • ..その他のニュース サブカテゴリ..
  • ..その他のニュース サブカテゴリ..
  • ..その他のニュース サブカテゴリ..

上記のコンテンツ構造に対して、「NEWS」トップ カテゴリと「ORGANIZATIONAL UNIT DIRECTORY」を page_type として設定し、ニュース サブカテゴリの属性を作成します (「news_location」という名前を付けました)。そして、ユニットを決定するもう 1 つの属性を作成します (「ユニット」と名付けました)。

さて、私の質問は、特定のユーザーグループのコンポーザーで属性「news_location」と「unit」を事前に設定するにはどうすればよいかということです。たとえば、「ユニット 1」のメンバーの場合。属性「news_location」が「organization unit info」に事前設定され、属性「unit」が「unit 1」に事前設定された独自のコンポーザーが必要です。そして、彼はそれらの属性を変更できないので、適切な場所/カテゴリにのみ新しい記事を投稿するようにすることができます.

私はconcrete5 CMSをいじっていますが、これを行う方法が見つかりません。コードを掘り下げて、これ用に独自のモジュールを作成する必要がありますか?

それだけです...解決策を楽しみにしています。私の質問が複雑すぎて申し訳ありません:p

4

1 に答える 1

1

Composer には、ユーザー グループごとに異なるデフォルト属性値を設定できるビルトイン機能はまったくありません (実際、属性にデフォルト値を設定することは可能だとは思いません。たとえそれが同じデフォルト値だったとしても)。すべてのユーザーの値)。

CollectionTypeコアクラスをオーバーライドできます。このgetComposerContentItemsメソッドでは、現在のページ タイプをチェックし、各属性 Key をチェックし、現在のユーザーのグループに応じてデフォルト値に設定された特定の属性をチェックするコードを記述できます。

しかし、本当に難しいのは、実際に属性に値を設定することです。Concrete5 にはこれを行うエレガントな方法はありません。属性値は常に、属性が割り当てられているオブジェクト (ページ、ファイル、ユーザーなど) に関連付けられています。過去に属性に任意のデフォルト値を設定しようとしましたが、簡単な方法はありません。(テキストボックスやチェックボックスのような単純な属性の型はそれほど難しくありません... しかし、DateTime や Select 型のようなより複雑なものは非常に複雑なので、わざわざ理解しようとさえしませんでした)。

代わりに試してみたいのは、独自の属性タイプを作成することです。次に、属性タイプ自体で、ユーザー グループに基づいてデフォルト値を設定する方法を見つけます (値がまだ存在しない場合)。これは、独自の属性タイプに最低限必要なものを示す基本的なコードです: https://github.com/jordanlev/c5_minimal_attribute_type

また、C5 のドキュメントで、より詳細な (ただし、複雑で理解しにくい) 説明とサンプル コードを確認してください: http://www.concrete5.org/documentation/developers/attributes/overview

頑張ってください!

于 2012-11-08T16:55:43.903 に答える