2016-08-03 24 views
2

auf Magento 1.9.1, ich habe eine Vorlage Blog-Post, die Folgendes hat:Wie kann ich vorherige und nächste Links in Magento Blogpostseiten erhalten?

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

und die am unteren Rand der Vorlage gibt es Links für den nächsten und vorherigen Artikel:

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

Das funktioniert gut, aber mit einem Problem; Es wird nicht berücksichtigt, ob der Artikel aktiviert oder deaktiviert ist.

Gibt es eine Möglichkeit, "deaktivierte" Artikel auszuschließen?

Antwort

2

Ersetzen Sie Ihren Code durch den folgenden Code mit einigen Modifikationen wie ersetzen 'ID' mit Primärschlüssel Feld für Post-Tabelle und gleich für 'Status' Feld mit Status Spaltenname.

<?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(); 
    } 
    ?> 

und Ihre HTML-Code ersetzen mit

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

Hope this Ihnen helfen.