У меня есть обычная страница сообщений в теме Anchor CMS. Рядом со списком сообщений есть список категорий, который я собираюсь использовать в качестве фильтров сортировки для сообщений в блоге. Список категорий был выведен следующим образом на основе документов привязки:
<?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; ?>
Обратите внимание, что категория класса article- [num] соответствует фильтру данных в div «filter». Это то, что позволяет сортировать.
Однако, как бы я ни пытался это сделать, я получаю удвоенные сообщения или просто не работаю. Я пытался использовать оператор foreach, как показано в документах:
<?php foreach(Category::dropdown() as $id => $category): ?>
<article class="mix category-<?php echo category_id(); ?>">
<?php endforeach; ?>
но это заставляет посты удваиваться, я полагаю, потому что это в цикле while?
В базе данных категории и сообщения находятся в двух отдельных таблицах, однако идентификатор категории включен в таблицу сообщений. Я искал способ повторить это, например. article_category_id
но пока безуспешно.
Как включить идентификатор категории в список сообщений?
Хорошо, нашел ответ на свой вопрос.
На самом деле это было простое решение, когда я об этом подумал. Различные ссылки на функции в Anchor CMS, такие как article_category и т. Д., Могут быть определены пользователем путем доступа якорь> функции> статьи.php.
В этом файле и на основе существующих функций, таких как
function article_category() {
if($category = Registry::prop('article', 'category')) {
$categories = Registry::get('all_categories');
return $categories[$category]->title;
}
}
Я создал новую функцию для идентификатора категории. Это выглядит так:
function article_category_id() {
if($category = Registry::prop('article', 'category')) {
$categories = Registry::get('all_categories');
return $categories[$category]->id;
}
}
и затем повторил это в циклах сообщений:
<?php echo article_category_id(); ?>
Просто как тот!
Других решений пока нет …