2011-06-11 22 views
1

すべてのカテゴリのリストを対応する投稿(制限は10)で取得し、自分の記事のインデックスアクション/ビューに表示したいと思いますコントローラ。私は既に記事とカテゴリのコントローラが既にセットアップされています。CakePHP各記事で記事を検索して記事に表示する方法::インデックス

CNN.comのページの下部にあるものと似たようなものがあります。

最良のアプローチは何ですか? いくつかのコード例を提供できますか?

おかげでたくさん、

アンドレS.

答えて

2

これは私がこれを解決できた方法です。誰かが最善のアプローチをしている場合は、私に知らせてください。ありがとう!

この記事

<div id="bottom_section" class="article_bottom_section"> 
<?php 
    foreach ($categories as $category){ 
?> 
<div> 
    <div> 
     <?php echo $category['Category']['title'];?> 
    </div> 
    <div> 
     <?php 
      echo $this->element(
       'category_relatedarticles', 
      array(
      'categoryID' => $category['Category']['id'] 
      ) 
     ); 
     ?> 
    </div> 
</div> 
<?php 
    } 
?> 
</div> 

のための私のIndex.ctpビューファイルは、その後、私の記事のコントローラー

$categories = $this->Article->Category->find(
      'all', 
      array(
       'fields' => array(
        'Category.id', 
        'Category.title' 
       ), 
       'order' => 'Category.id DESC', 
       'recursive' => 1 
      ) 
     ); 

    $this->set('categories'); 

の私のindexアクションは、これは私が対応する記事を検索するために使用してい要素ですされます

<div> 
    <?php 
    $RelatedArticles = $this->requestAction('/categories/getRelatedArticles/'.$categoryID); 
    ?> 
    <ul> 
     <?php 
     foreach($RelatedArticles as $RelatedArticle){ 
     ?> 
     <li> 
      <?php echo $RelatedArticle['Article']['title']; ?> 
     </li> 
     <?php 
     } 
     ?> 
    </ul> 
</div> 

これは、getRelatedArticles関数です。i nは

2

あなたは(キャッシュ)要素と要求アクションを使用することができます。カテゴリがあまり変わらない可能性は低いからです。

// views/elements/categories.ctp 
$categories= $this->requestAction('/categories/get_categories'); 
echo '<ul>'; 
foreach($categories as $category) { 
    echo '<li>' . $category['Category']['name'] . '</li>'; 
} 
echo '</ul>'; 


// in your layout 
echo $this->element('categories', array('cache' => '+1 hour')); 

上記の例では調整が必要です。しかし、あなたはその考えを得るべきです。リクエストアクションを使用して、好きなデータにアクセスできます。パフォーマンスが低下する可能性があるため、キャッシングをお勧めします。

詳細については、the docsを参照してください。

+0

さて、私が本当にやりたかったことはカテゴリー1を取得し、私のカテゴリーコントローラ

function getRelatedArticles($id = null){ $RelatedArticles = $this->Category->Article->find( 'all', array( 'fields' => array( 'Article.title', 'Article.id' ), 'conditions' => array( 'Article.category_id =' => $id, ), 'limit' => 6, 'order' => 'Article.id DESC' ) ); if (!empty($this->params['requested'])) { return $RelatedArticles; }else{ $this->set('RelatedArticles'); } } 

そして、それは誰もがより良いと迅速な方法を知っていれば、私に知らせてください...かなりいい作品...おかげでした最新の記事10件、最新の記事10件を含むカテゴリ2などがあります。あなたの答えは、私がすでにできていたカテゴリーを検索するだけです。私は最高のアプローチをしたかっただけです。この質問への私の答えを参照してください...私はそれが最良のアプローチであるかどうかはわかりませんが、それは私がそれをした方法です。 –

関連する問題