コミュニティサイト等で役立つconcrete5のポイント機能について調査しました。

concrete5には、ポイント機能が標準で用意されています。コミュニティサイト等で役立ちますね。今回は、ポイント機能について調査してみました。

ポイントを設定する

ユーザーにポイントを付与するのが最終目標ですが、手順としては

  1. ポイントを設定する(どんな操作をすると何ポイント獲得するか)
  2. ユーザーが操作すると、そのユーザーにポイントを付与する

となります。まずはポイントを設定するところからはじめます。

管理画面の、メンバー > コミュニティポイント > 操作でポイントを設定できます。

コミュニティポイント concrete5

concrete5をインストールした直後はWon a Badgeがあります。(上の画像ではいくつか追加しています。)右上のアクションを追加を押すと、ポイントを付与する操作を追加できます。

コミュニティポイントを作る

上の画像の例では、ページを追加したときに10ポイント付与する、を追加しています。

ユーザーが操作したときにポイントを付与する

ポイントを付与する操作を作成したら、ユーザーが操作したときにポイントを付与するようにします。管理画面からメンバー > コミュニティーポイント > ポイントを付与で手作業で追加することが可能ですが、ここでは、ユーザーが操作したときに自動付与する設定を行います。

イベントの活用

concrete5にはイベント機能がありますので、こちらを活用します。

    public function on_start() {
        Events::addListener('on_page_add', array($this,'on_page_add'));
    }
    public function on_page_add($ev)
    {
        $page = $ev->getPageObject(); // ページを取得
        $uID = $page->getCollectionUserID(); // ページの所有者(ユーザー)を取得
        $ui = UserInfo::getByID($uID); // ユーザー情報を取得
        $obj = new UserPointActionDescription(); // ポイント取得時の詳細を設定するオブジェクトを作成
        $obj->setComments('ページ作成: ' . $page->getCollectionID()); // ページIDを詳細に出力
        $action = UserPointAction::getByHandle("page_add"); // 操作page_add(管理画面で追加した操作のhandle)を取得
        $action->addEntry($ui, $obj); // ユーザーにポイント付与する処理
    }

ページが追加されるときに発火するイベントはon_page_addなので、ここにフックしています。フックしたメソッドの中で、ユーザーにポイントを付与する処理を行っています。

こうすることで、『ページを追加したときに、そのユーザーにポイントを付与する』ことができました。

記事公開日: 2018年02月19日
#

グーグルアナリティクスとAPI連携して、アクセスランキングを... 詳細はこちら

concrete5 のユーザーIDに使える文字列を調査。ver5.7.4.2。... 詳細はこちら

#

弊社で無償公開しているconcrete5アドオンRescuework's ... 詳細はこちら