锚点CMS:在帖子列表中包含类别ID

时间:2014-10-01 08:37:55

标签: php anchor-cms

我在Anchor CMS主题中有一个正常的帖子页面。在帖子列表旁边是一个类别列表,我打算将其用作博客帖子的排序过滤器。根据Anchor Docs:

,类别列表的输出如下
 <?php foreach(Category::dropdown() as $id => $category): ?>

     <div class="filter" data-filter=".category-<?php echo $id; ?>"><?php echo $category; ?></div>

 <?php endforeach; ?>

然后我必须在每个文章或该列表中的帖子中包含相应的类,如下所示:

 <?php if(has_posts()): ?>      
    <?php $i = 0; while(posts()): ?>        

        <article class="mix category-<?php echo category_id(); ?>">

    <?php endwhile; ?>
<?php endif; ?>

请注意,文章类别 - [num]与div“filter”上的数据过滤器相对应。这是允许排序的。

然而,无论如何,我试图做到这一点,我要么得到双倍的帖子,要么就是没有工作。我曾尝试使用docs中的foreach语句:

<?php foreach(Category::dropdown() as $id => $category): ?>

     <article class="mix category-<?php echo category_id(); ?>">

<?php endforeach; ?>

但这会使帖子加倍,我假设因为它在一个while循环中?

在数据库中,类别和帖子位于两个单独的表中,但类别ID包含在posts表中。我找了一种方法来回应这个,例如article_category_id但到目前为止没有成功。

如何在帖子列表中包含类别ID?

1 个答案:

答案 0 :(得分:2)

好的,找到了我自己的问题的答案。

实际上,这是一个简单的解决方案,一旦我想到它。 Anchor CMS中的各种功能引用,例如article_category等,可以由用户通过访问 anchor&gt;来定义。功能&gt; articles.php

在此文件中,并基于现有功能,如

function article_category() {
    if($category = Registry::prop('article', 'category')) {
        $categories = Registry::get('all_categories');

        return $categories[$category]->title;
    }
}

我为类别ID创建了一个新功能。它看起来像这样:

function article_category_id() {
    if($category = Registry::prop('article', 'category')) {
        $categories = Registry::get('all_categories');

        return $categories[$category]->id;
    }
}

然后在帖子循环中回应:

<?php echo article_category_id(); ?>

这很简单!