Yii ブログシステム作成(15)

最近投稿されたコメントのリストを表示する

RecentCommentsクラスの作成

タグを表示処理するための”RecentComments.php”ファイルを作成する
格納先は【/blog/protected/components/】

<?php

Yii::import('zii.widgets.CPortlet');

class RecentComments extends CPortlet
{
  public $title = 'Recent Comments';
  public $maxComments = 10;
  
  /**
   * 
   * 直近のコメントを取得
   * 
   **/
  public function getRecentComments()
  {
    return Comment::model()->findRecentComments($this->maxComments);
  }
  
  /**
   * 
   * コメントをレンダリング
   * 
   **/
  protected function renderContent()
  {
    $this->render('recentComments');
  }
}

findRecentComments()メソッドをCommentモデルに追加するする

  ・・・
  /**
   * 
   * 直近のコメントを取得
   * 
   **/
  public function findRecentComments($limit = 10)
  {
    return $this->with('post')->findAll(
      array(
        'condition'=>'t.status='.self::STATUS_APPROVED,
        'order'=>'t.create_time DESC',
        'limit'=>$limit,
      )
    );
  }

recentCommentsビューの作成

タグを表示するための”RecentComments.php”ファイルを作成する
格納先は【/blog/protected/components/views/】

<ul>
  <?php foreach($this->getRecentComments() as $comment): ?>
  <li>
    <?php echo $comment->getAuthorLink(); ?> on
    <?php echo CHtml::link(CHtml::encode($comment->post->title), $comment->getUrl()); ?>
  </li>
  <?php endforeach; ?>
</ul>

recentCommentsポートレットの使用

“colimn2.php”ファイルを修正する

  ・・・
  <div id="sidebar">
  <?php
    // "UserMenu"ポートレットを表示
    if(!Yii::app()->user->isGuest) $this->widget('UserMenu');
  ?>
  <?php
    $this->widget(
      'TagCloud',
      array(
        'maxTags'=>Yii::app()->params['tagCloudCount'],
      )
    );
  ?>
  <?php
    $this->widget(
      'RecentComments',
      array(
        'maxComments'=>Yii::app()->params['recentCommentCount'],
      )
    );
  ?>
  </div><!-- sidebar -->
  ・・・

■実行画面
【http://loaclhost/index.php?r=post/】にアクセス

yii052

※URLの書き換えについては次章で解説する

参考サイト:
http://www.yiiframework.com/doc/blog/1.1/ja/portlet.comments

Comments are closed.