0

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; ?>

article クラスの category-[num] は、div "filter" の data-filter に対応していることに注意してください。これがソートを可能にするものです。

ただし、これを実行しようとすると、投稿が2倍になるか、機能しなくなります。ドキュメントに見られるように、 foreach ステートメントを使用してみました:

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

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

<?php endforeach; ?>

しかし、これにより投稿が2倍になります。whileループ内にあるためだと思いますか?

データベースでは、カテゴリーと投稿は 2 つの別個のテーブルにありますが、カテゴリー ID は投稿テーブルに含まれています。私はこれをエコーする方法を探しましたarticle_category_idが、これまでのところ成功していません。

投稿リストにカテゴリ ID を含めるにはどうすればよいですか?

4

1 に答える 1

2

さて、私自身の質問に対する答えを見つけました。

考えてみると、これは実際には簡単な解決策でした。article_category などのアンカー CMS のさまざまな関数参照は、ユーザーがanchor > functions > article.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(); ?>

そのような単純な!

于 2014-10-01T09:00:25.023 に答える