• 虹色ミツバチ
  • freoカスタマイズメモ、テンプレート・プラグイン配布/officeTIPS
検索プラグイン
虹色ミツバチ

> Entry >freo>freoTips>プラグイン系TIPS> サークル管理プラグインでサークルをカップリング別に表示した時に同カップリング内でスペース順に並べる方法

【freo】【freoTips】【プラグイン系TIPS】サークル管理プラグインでサークルをカップリング別に表示した時に同カップリング内でスペース順に並べる方法

freo公式サイトで配布されているサークル管理プラグインでは、登録されたサークルがサークル名順に一覧表示されるようになっています。
サークルリストとして使用するなら、50音順リストで十分だと思いますが、サークルカップリングクラウド表示プラグインを利用すると、サークルが登録しているカップリングを一覧表示することができ、また、サークルをカップリング別に一覧表示することもできます。

カップリング別に一覧表示したとき、このままだと、サークルは同カップリング内では五十音順に並んでいます。
五十音順でも問題はないとは思いますが、せっかくなのでスペース順に並べると、より便利な気がします。
サークルを同カップリング内でスペース順に並ぶようにする方法は以下のとおりです。

導入方法

  1. サークル管理プラグインを導入する。
  2. サークルカップリングクラウド表示プラグインを導入する。
  3. サークル管理プラグインでサークルカップリングクラウド表示プラグインを利用してサークルをカップリング別に一覧表示する方法を実装する。
  4. [freo/libs/freo/plugins/page.circle.php]の58行目
                case 'admin_category_delete':
                    freo_page_circle_admin_category_delete();
                    break;
                ここです
                default:
                    freo_page_circle_default();

    に以下の通り加筆する。

                case 'coupling':
                    freo_page_circle_coupling();
                    break;
  5. [freo/libs/freo/plugins/page.circle.php]の1384行目
            return;
        }
        ここです
        /* サークル一覧 */
        function freo_page_circle_default()
        {

    に以下の通り加筆する。

    /* サークル一覧(カップリング別表示スペース順) */
        function freo_page_circle_coupling()
        {
            global $freo;
    
            //検索条件設定
            $condition = null;
            if (isset($_GET['category'])) {
                $condition .= ' AND category_id = ' . $freo->pdo->quote($_GET['category']);
            }
            if (isset($_GET['tag'])) {
                $condition .= ' AND tag = ' . $freo->pdo->quote($_GET['tag']) . ' OR tag LIKE ' . $freo->pdo->quote($_GET['tag'] . ',%') . ' OR tag LIKE ' . $freo->pdo->quote('%,' . $_GET['tag']) . ' OR tag LIKE ' . $freo->pdo->quote('%,' . $_GET['tag'] . ',%');
            }
            if ($condition) {
                $condition = ' WHERE user_id IS NOT NULL ' . $condition;
            }
    
            //サークル取得
            $stmt = $freo->pdo->query('SELECT * FROM ' . FREO_DATABASE_PREFIX . 'plugin_circles ' . $condition . ' ORDER BY space, kana, user_id');
            if (!$stmt) {
                freo_error($freo->pdo->errorInfo());
            }
    
            $plugin_circles = array();
            while ($data = $stmt->fetch(PDO::FETCH_ASSOC)) {
                $plugin_circles[$data['user_id']] = $data;
            }
    
            //サークルID取得
            $plugin_circle_keys = array_keys($plugin_circles);
    
            //サークルタグ取得
            $plugin_circle_tags = array();
            foreach ($plugin_circle_keys as $plugin_circle) {
                if (!$plugin_circles[$plugin_circle]['tag']) {
                    continue;
                }
    
                $plugin_circle_tags[$plugin_circle] = explode(',', $plugin_circles[$plugin_circle]['tag']);
            }
    
            //ユーザー取得
            $stmt = $freo->pdo->query('SELECT * FROM ' . FREO_DATABASE_PREFIX . 'users WHERE authority = \'guest\' ORDER BY id');
            if (!$stmt) {
                freo_error($freo->pdo->errorInfo());
            }
    
            $users = array();
            while ($data = $stmt->fetch(PDO::FETCH_ASSOC)) {
                $users[$data['id']] = $data;
            }
    
            //ユーザーID取得
            $user_keys = array_keys($users);
    
            //ユーザー関連データ取得
            $user_associates = freo_associate_user('get', $user_keys);
    
            //カテゴリー取得
            $stmt = $freo->pdo->query('SELECT * FROM ' . FREO_DATABASE_PREFIX . 'plugin_circle_categories ORDER BY sort, id');
            if (!$stmt) {
                freo_error($freo->pdo->errorInfo());
            }
    
            $plugin_circle_categories = array();
            while ($data = $stmt->fetch(PDO::FETCH_ASSOC)) {
                $plugin_circle_categories[$data['id']] = $data;
            }
    
            //データ割当
            $freo->smarty->assign(array(
                'token'                    => freo_token('create'),
                'plugin_circles'           => $plugin_circles,
                'plugin_circle_tags'       => $plugin_circle_tags,
                'plugin_circle_categories' => $plugin_circle_categories,
                'users'                    => $users,
                'user_associates'          => $user_associates
            ));
    
            return;
        }
  6. [freo/libs/freo/plugins/page.circle.php]をアップロードする。

ページ移動

関連記事

ユーティリティ

Twitter

ページ上部へ