2011-06-11 58 views

回答

2

這就是我能夠解決這個問題的方法。如果有人有最好的方法,請告訴我。謝謝!

這是我的文章觀Index.ctp文件

<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動作

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

    $this->set('categories'); 

這是我使用來獲取相應的文章元素

<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 ñ我的分類控制器

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'); 
     } 
    } 

和它的作品相當不錯的......如果有人知道一個更好和更快的方式,請讓我知道..感謝

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其中10篇最新文章,2篇最新文章10篇,等等。你的答案只是檢索類別,我已經能夠做到。我只是想要最好的辦法。看到我對這個問題的回答......我不確定這是否是最好的方法,但這就是我的做法。 – 2011-06-12 12:56:33