我想检索所有类别及其相应文章(限制10)的列表,并将其显示在我的文章的索引操作/视图中控制器。我已经设置了文章和类别控制器。CakePHP如何检索所有类别及其各自的文章和显示在文章中::索引
我想在页面底部有类似于CNN.com的东西。
什么是最好的方法? 你能提供一些代码示例吗?
非常感谢,
安德烈S.
我想检索所有类别及其相应文章(限制10)的列表,并将其显示在我的文章的索引操作/视图中控制器。我已经设置了文章和类别控制器。CakePHP如何检索所有类别及其各自的文章和显示在文章中::索引
我想在页面底部有类似于CNN.com的东西。
什么是最好的方法? 你能提供一些代码示例吗?
非常感谢,
安德烈S.
这就是我能够解决这个问题的方法。如果有人有最好的方法,请告诉我。谢谢!
这是我的文章观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');
}
}
和它的作品相当不错的......如果有人知道一个更好和更快的方式,请让我知道..感谢
你可以使用一个(缓存)元素和请求的行动;因为这些类别不太可能改变。
// 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了解更多信息。
嗯,我真正想要做的是检索类别1其中10篇最新文章,2篇最新文章10篇,等等。你的答案只是检索类别,我已经能够做到。我只是想要最好的办法。看到我对这个问题的回答......我不确定这是否是最好的方法,但这就是我的做法。 – 2011-06-12 12:56:33