我在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?
答案 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(); ?>
这很简单!