【freo】【freoTips】【プラグイン系TIPS】サークル管理プラグインでサークルをカップリング別に表示した時に同カップリング内でスペース順に並べる方法
- 2013/04/16 10:15
- サークル管理プラグイン
- サークルカップリングクラウド表示プラグイン
- 74
freo公式サイトで配布されているサークル管理プラグインでは、登録されたサークルがサークル名順に一覧表示されるようになっています。
サークルリストとして使用するなら、50音順リストで十分だと思いますが、サークルカップリングクラウド表示プラグインを利用すると、サークルが登録しているカップリングを一覧表示することができ、また、サークルをカップリング別に一覧表示することもできます。
カップリング別に一覧表示したとき、このままだと、サークルは同カップリング内では五十音順に並んでいます。
五十音順でも問題はないとは思いますが、せっかくなのでスペース順に並べると、より便利な気がします。
サークルを同カップリング内でスペース順に並ぶようにする方法は以下のとおりです。
導入方法
- サークル管理プラグインを導入する。
- サークルカップリングクラウド表示プラグインを導入する。
- サークル管理プラグインでサークルカップリングクラウド表示プラグインを利用してサークルをカップリング別に一覧表示する方法を実装する。
- [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;
- [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; }
- [freo/libs/freo/plugins/page.circle.php]をアップロードする。