学習日記68日目 - Blogapp vol.4 -

スタートアップ研修記はこちらです。

どうも、enomotoです。
きょうもBlogappを作っていきます。

タグクラウドを作ろう。

よくある「これ」です。

そういえば、askeet!でタグやったなぁと思いつつ自分がやった13日を穴が開くまで読んでたのですが
いまいち分からず模索して昨日が終わったのですが、14日目を見るとタグクラウドを普通にやっていたのでした。
なんで、気づかなかったんだろうと思いつつ実装したのでメモ。

上は実装後のスクリーンショットです。
見て分かるとおり、実装したい部分はサイドバー上。
askeet!に書かれているのは別ページにタグクラウドを表現するもの。
参考: http://www.symfony-project.org/askeet/1_0/ja/14
そのため、このまま実装してもできないので書く場所を変えました。

で、どうしたのか。

サイドバー上で使うのだからpartialかcomponentでやらなきゃダメ。
partialではアクションが実装できないのでcomponentにした。
<呼び出し側>

<div id="tag">
   <h2>tag</h2>
   <ul>
   <?php include_component('tag','articletags') ?> 
   </ul>
</div><!-- div id/menu/tag -->

<アクション>

<?php

class tagComponents extends sfComponents
{
  public function executeArticletags()
  {
    $this->tags = ArticleTagPeer::getPopularTags(sfConfig::get('app_tag_cloud_max'));
  }
}

<テンプレート>

<?php foreach($tags as $tag => $count): ?>
  <li class="tag_popularity_<?php echo $count ?>"><?php echo link_to($tag, '@tag?tag='.$tag, 'rel=tag') ?></li>
<?php endforeach; ?>

ここ以外はaskeet!と同じ。
あとはCSSを弄っただけだろうか。

管理画面を作ろう

いろいろネットをさまよっているとAdmin Generatorというものがあるらしい。
使ったことがないので早速これを使って管理画面を作ることに。
参考:http://develop.ddo.jp/symfony/book/jp/1.0/generator.html
基本的にはgenerator.ymlで設定するみたいだ。

ということでブログ投稿画面と一覧画面を出してみた。

▽投稿画面▽

▽一覧画面▽

まだ、未完成ですがこんな風に書きました。

generator:
  class:              sfPropelAdminGenerator
  param:
    model_class:      Article
    theme:            default
    fields:
      user_id:        1
    list:
      title:          BLOG List
      display:       [id, title, created_at, updated_at]
    edit:
      title:          BLOG Editor
      display:       [title, body]

見よう見まねでとりあえずここまで書いてみた。
あとはタグを投稿画面で追加できるようにしたい><

今日の結果


フロントエンドはほぼ完成。
あとはバックエンドか。