获取每个类别的最新帖子Magento Fishpig

时间:2018-03-20 06:44:29

标签: php wordpress magento2 fishpig

我有一个成功的Fishpig与magento 2的整合。

现在我需要让博客页面显示每个类别的最新帖子。

例如: 如果我有5个类别(未显示未分类的类别),我需要显示每个类别的最新帖子。

我怎么能用fishpig做到这一点?

我尝试修改 list.phtml 文件, 来自 FishPig / WordPress / view / frontend / templates / post 。到目前为止,我只能从任何类别获得最新帖子(如果我在一个类别中有最新帖子,我会得到它们。不是每个类别的最新帖子。)

这是我到目前为止的代码..

<?php $objectManager = \Magento\Framework\App\ObjectManager::getInstance() ?>
<?php $posts = $objectManager->create('FishPig\WordPress\Model\ResourceModel\Post\Collection')
->addPostTypeFilter('post')
->setOrderByPostDate()
->addIsViewableFilter()
->setPageSize(5)
->load();    
?>

<?php if (count($posts) > 0): ?>
<ul>
<?php foreach($posts as $post): ?>
<li>
<a href="<?php echo $post->getUrl() ?>"><?php echo $this->escapeHtml($post->getPostTitle()) ?></a>
<?php if ($image = $post->getFeaturedImage()): ?>
<a href="<?php echo $post->getUrl() ?>">
<img src="<?php echo $image->getAvailableImage() ?>" src="<?php echo $this->escapeHtml($post->getPostTitle()) ?>" />
</a>
<?php endif; ?>
<p><?php echo $post->getPostExcerpt(40) ?></p></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>

我应该如何修改它以实现我的需要?请帮忙

1 个答案:

答案 0 :(得分:1)

你想要的是什么?默认情况下,该模块将显示每个类别页面,并按降序日期顺序列出该类别中的所有帖子。你想复制这个吗?

如果是这样,请查看Term模型。您可以加载一组类别,然后在其上调用getPostCollection()以获取该术语/类别的帖子。

<?php $terms = $objectManager->get('FishPig\WordPress\Model\ResourceModel\Term\CollectionFactory')->create() ?>
<?php $terms->addTaxonomyFilter('category')->load() ?>
<?php   if (count($terms) > 0): ?>
    <ul>
        <?php foreach($terms as $term): ?>
            <?php if ((int)$term->getId() === 1): ?><?php /* This is the uncategorized category, so skip */ continue; ?><?php endif; ?>
            <?php $posts = $term->getPostCollection()->setPageSize(5)->setOrderByPostDate()->addIsViewableFilter()->load() ?>
            <?php if (count($posts) > 0): ?>
                <li>
                    <h2><a href="<?php echo $term->getUrl() ?>"><?php echo $term->getName() ?></a></h2>
                    <ul>
                        <?php foreach($posts as $post): ?>
                            <li>
                                <?php /* Standard post code here */
                            </li>
                        <?php endforeach; ?>
                    </ul>
                </li>
            <?php endif; ?>
        <?php endforeach; ?>
    </ul>
<?php endif; ?>