なんかいろいろやりはじめてサイト更新が止まらなくなりましたが、たぶんこれで打ち止め。Pico Tagsに手を加えてタグクラウド用の情報を生成させてみます。やりかたはかんたん。ただ事前に「Pico Tags Pluginを効率化する」で説明した効率化対応を行っておいてください。
まず集計を保持するメンバー変数を定義します:
private $tag_counter;
次に、get_pagesメンバー関数の末尾に次のコードを追加します:
$this->tag_counter = array();
foreach ($pages as $page) {
$tags = $page['tags'];
if (!is_array($tags)) {
$tags = explode(',', $tags);
}
foreach ($tags as $tag) {
if ($tag != '') {
if (isset($this->tag_counter[$tag])) {
$this->tag_counter[$tag] += 1;
}
else {
$this->tag_counter[$tag] = 1;
}
}
}
}
最後にbefore_renderメンバー関数の末尾に次を追加します:
arsort($this->tag_counter); $twig_vars['tag_count_json'] = json_encode($this->tag_counter);
これでタグと使用数の連想配列がテンプレートに渡されます。json_encode関数の呼びだしはタグクラウド生成をJavaScriptで行う想定のものなので、Twigテンプレートで処理するのであれば不要です。JavaScriptで処理する場合、キーはエンコードされているので、日本語を含む場合はdecodeURI関数によるデコードを忘れないようにしましょう。
この情報を元に生成するタグクラウドは「タグクラウド」のページで参照できるようにしました。プレゼンテーションの生成はjQCloudによるもの。毎回レイアウトが変わって楽しいです。
以上、参考になりましたら幸いです。