如何在Magento博客帖子页面中获取上一个和下一个链接?

时间:2016-08-03 09:46:38

标签: php magento magento-1.9

在Magento 1.9.1上,我有一个博客文章模板,其中包含以下内容:

<?php $post = $this->getPost(); ?>
<?php $next = Mage::getModel('blog/post')->load($post->getId()+1); ?>
<?php $prev = Mage::getModel('blog/post')->load($post->getId()-1); ?>

并且模板底部有下一篇和上一篇文章的链接:

<a href="/blog/<?php echo $prev->getIdentifier(); ?>" class="prev">< Previous</a>
<a href="/blog/<?php echo $next->getIdentifier(); ?>" class="next">Next ></a>

这很好但有一个问题;它不会考虑文章是启用还是禁用。

有没有办法排除“禁用”文章?

1 个答案:

答案 0 :(得分:2)

使用以下代码替换您的代码并进行一些修改,例如将'id'替换为post表的主键字段,将相同的'status'字段替换为具有状态列名称。

<?php $post = $this->getPost(); ?>  
<?php  
    $prevCollection = Mage::getModel('blog/post')->getCollection()
          ->addFieldToFilter('id', array('lt' => $post->getId()))
          ->addFieldToFilter('status', 'enabled')
          ->addOrder('id','DESC');
    $prevCollection->getSelect()->limit(1);
    if($prevCollection->count()){
      $prev = $prevCollection->getFirstItem();
    }

    $nextCollection = Mage::getModel('blog/post')->getCollection()
         ->addFieldToFilter('id', array('gt' => $post->getId()))
         ->addFieldToFilter('status', 'enabled');
    $nextCollection->getSelect()->limit(1);
    if($nextCollection->count()){
      $next = $nextCollection->getFirstItem();
    }
  ?>

并用

替换你的html代码
    <?php if(isset($prev) && $prev->getId()):?>
          <a href="/blog/<?php echo $prev->getIdentifier(); ?>" class="prev">< Previous</a>
    <?php endif;?>
    <?php if(isset($next) && $next->getId()):?>
          <a href="/blog/<?php echo $next->getIdentifier(); ?>" class="next">Next ></a>
    <?php endif;?>

希望这会对你有所帮助。