Hatena::ブログ(Diary)

crazyuplog このページをアンテナに追加 RSSフィード

2009-07-07

学習日記62日目

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

どうも、enomotoです。

今日は七夕ですね、そしていい天気です。

ついついどっか行きたいなーと思っていまいます。

ということで、本日の学習日記はこんな感じです。

review askeet Day 9

気になったところ

    <div class="question_body">
    <?php echo truncate_text(strip_tags($question->getHtmlBody()),200) ?>
    </div>
strip_tagsって何?

この関数は、指定した文字列 (str ) から全ての HTML および PHP タグを取り除きます。

この関数は、fgetss() 関数と同じタグ除去アルゴリズムを使用します。

http://jp2.php.net/manual/ja/function.strip-tags.php

なるほどーこれで単なるテキストだけになるわけですね。

symfony askeet Day 11

feedを配信する。

  • headにfeedへのリンクを入れる。

headにfeedへのリンクを入れる。

<?php echo auto_discovery_link_tag('rss','feed/popular') ?>

これだけでいいのか。

HTMLでも1行だけど、auto_discovery_link_tagを使った方がすごい楽。

プラグインインストールする。

symfony plugin-install http://plugins.symfony-project.com/sfFeedPlugin

で、実行されるはずが

Warning: require_once(PEAR/Remote.php): failed to open stream: No such file or directory in /opt/local/lib/php/data/symfony/tasks/sfPakePlugins.php on line 155

Fatal error: require_once(): Failed opening required 'PEAR/Remote.php' (include_path='/Users/shota/education/enomoto/askeet2/lib:/Users/shota/education/enomoto/askeet2/apps//lib::/opt/local/lib/php/symfony/vendor:.:/opt/local/lib/php') in /opt/local/lib/php/data/symfony/tasks/sfPakePlugins.php on line 155

PEAR/Remote.phpが読み込めないというエラーが出た。

でも、sfFeedPluginは必要なのでどうにかダウンロードできないかと

直接http://plugins.symfony-project.com/sfFeedPluginブラウザ上でアクセスしてみたら

ファイルが落ちてきた。ファイルを解凍すると中にsfFeedPlugin-1.X.Xとかいうフォルダがあるので

名称をsfFeedPluginに変えてaskeet2/plugins/に設置する。

そして、設置したら

symfony cc

キャッシュをクリアします。

アクションを作る

symfony init-module frontend feed

あとはアクションを書くと。

場所: askeet2/apps/frontend/modules/feed/actions/actions.class.php

  public function executePopular()
  {
    // 質問
    $c = new Criteria();
    $c->addDescendingOrderByColumn(QuestionPeer::INTERESTED_USERS);
    $c->setLimit(sfConfig::get('app_feed_max'));
    $questions = QuestionPeer::doSelectJoinUser($c);

    $feed = sfFeed::newInstance('rss201rev2');

    // チャンネル
    $feed->setTitle('askeet!で人気の質問');
    $feed->setLink('@homepage');
    $feed->setDescription('質問するなら答えるなら投票するなら askeet!');

    // 項目
    $feed->setFeedItemsRouteName('@question');
    $feed->setItems($questions);

    $this->feed = $feed;
  }

rss201rev2というのはRSS 2.01というフォーマットをしているらしい。

資料:no title

表示件数を指定する。

場所: askeet2/apps/frontend/config/app.yml

# default values
all:
  pager:
    homepage_max: 2
  feed:
    max: 10

feed表示は10件までという指定ができた。

layout.phpを読み込まないようにする。

このまま表示するとlayout.phpが読み込まれてしまう。

そうするとRSS feedにならない。

なので、layout.phpを読み込まないようにする。

場所: askeet2/apps/frontend/modules/feed/config/view.yml

all:
  has_layout: off
  template:   feed

テンプレートを書く。

場所: askeet2/apps/frontend/modules/feed/templates/feedSuccess.php

<?php echo $feed->getFeed() ?>

ルーティングに追加

場所: askeet2/apps/frontend/config/routing.yml

feed_popular_questions:
  url:   /feed/popular
  param: { module: feed, action: popular }

RSSをリンクする

場所: askeet2/apps/frontend/modules/sidebar/templates/_default.php

<?php use_helper('Global') ?>
<?php echo link_to('新しい質問をする。','question/add') ?>

<ul>
  <li><?php echo link_to('人気の質問。','question/list') ?><?php echo link_to_feed('人気の質問。','feed/popular') ?></li>
  <li><?php echo link_to('最新の質問。','question/recent') ?></li>
  <li><?php echo link_to('最新の回答。','answer/recent') ?></li>
</ul>

おーできた。

f:id:crazyup:20090707180638p:image

Copyright © crazyup. All rights reserved.