草稿和存档帖子通过使用Anchor CMS的“相关帖子”显示

时间:2015-02-05 14:30:16

标签: php html anchor-cms

我使用的是Anchor CMS。

一切都很有效,除了标有'草稿'仍在网站上现场直播“相关帖子”中。部分,但我不知道为什么从我所看到的,只有已发布的帖子应该出现。

这是我用来在每篇文章底部显示相关帖子的代码:

的functions.php

function related_posts($n) {
$posts = Post::get(Base::table('posts'), '=', 'published');
$postarr = array();
foreach($posts as $post) :
if($post->id != article_id()) {
    if($post->category == article_category_id()) {
        array_push($postarr, $post);
    }
}
endforeach;    
shuffle($postarr);
$postarr = array_slice($postarr, 0, $n);
return $postarr;
}

function article_category_id() {
if($category = Registry::prop('article', 'category')) {
$categories = Registry::get('all_categories');
return $categories[$category]->id;
}
}

Article.php

<?php foreach( related_posts(3) as $post) : ?>
<div class="similar-posts">
<div class="simi-alt">
<a href="<?= $post->slug; ?>"><?= $post->title; ?></a> 
</div>   
<p class="sim-desc"><?= $post->description; ?> <a href="<?= $post->slug; ?>">Read more..</a></p>
</div>
<?php endforeach; ?>

1 个答案:

答案 0 :(得分:0)

我不知道这个CMS的内容是什么,但documentation on the website并不是那么好。

我刚下载调查Post类。

class Post extends Base {
...
private static function get($row, $val) { 
...
->where(Base::table('posts.'.$row), '=', $val)

从我的观点来看,这意味着您应该发送2个参数 - 一个是字段名称,另一个是字段值。

所以我猜测,但您可以尝试在代码中更改此行:

$posts = Post::get(Base::table('posts'), '=', 'published');

到这一个:

$posts = Post::get(Base::table('posts'), 'status', 'published');

甚至是:

$posts = Post::get('status', 'published');