OpenPNE3.4 コミュニティのカテゴリ一覧を表示

Screen shot 2011-07-23 at 6.00.12 PM

OpenPNE3.4をさくらのVPSにインストールしてみたものの情報の少なさに苦戦中。
仕様なのかわからないけど、コミュニティ検索画面に大カテゴリが表示されないので勉強がてら実装してみる。URLでいうと”/community/search”の部分。
しばらくRubyばかりやってたのでPHPが懐かしい。

↓mixiでいうこの部分

実装

OpenPNE3.4もSymfonyもまだよくわかっていないので、かなり荒削りだと思うけど・・。
一応、これでカテゴリ一覧が表示されました。
大カテゴリ取得して小カテゴリ取得して所属コミュニティ数を取得してるのでDBクエリが微妙なとこ。

<div class="partsHeading"><h3>カテゴリ</h3></div>
<?php
// 大カテゴリを取得
$q = Doctrine_Query::create()
  ->select('cc.*')
  ->from('CommunityCategory cc')
  ->where('level = 0');
$l_categories = $q->fetchArray();

// 取得した大カテゴリを表示する
echo "<table class='communityCategories'>";
foreach ($l_categories as $key => $l_category)
{
  // 小カテゴリを取得する。
  // 所属するコミュニティの数もあわせて取得する。
  $q = Doctrine_Query::create()
    ->select('cc.*, (SELECT COUNT(id) FROM Community WHERE community_category_id = cc.id) AS count')
    ->from('CommunityCategory cc')
    ->where('tree_key = ? AND level != 0', $l_category["id"]);

  echo "<tr>";
  echo "<th>" . $l_category["name"] . "</th>";
  echo "<td>";
  $s_categories = $q->fetchArray();
  foreach ($s_categories as $key => $s_category)
  {
    echo link_to($s_category["name"] . "(". $s_category["count"] .")", "/community/search?community[community_category_id]=" . $s_category["id"]);
  }
  echo "</td>";
  echo "</tr>";
}
echo "</table>";

スタイルシートはこんな感じ。

table.communityCategories {
  margin: 10px 0px 15px 0px;
  table-layout: fixed;
  width: 100%;
  border-width: 0 1px 1px 0;
  border-style: solid;
  border-color: #CCCCCC;
}
table.communityCategories a {
  padding: 5px 15px 5px 0px;
}
table.communityCategories th {
  width: 30%;
  padding: 5px;
  border-width: 1px 0 0 1px;
  border-style: solid;
  border-color: #CCCCCC;
}
table.communityCategories td {
  width: 70%;
  padding: 5px;
  border-width: 1px 0 0 1px;
  border-style: solid;
  border-color: #CCCCCC;
}
参考サイト

http://www.symfony-project.org/doctrine/1_2/ja/06-Working-With-Data
 → DB操作例がたくさん記述してある。

余談

管理側でスキンプラグインを変更しても反映されないよね・・。