Neue Produkte der letzten x Tage anzeigen

Hallo

Ich habe versucht für unsere 4.5.9 ein kleines Modul zu erstellen, welches die neuen Produkte der letzten x Tage anzeigt. Im Grundsatz funktioniert das Modul auch und die entsprechenden Produkte werden aufgelistet. Nur funktioniert nach dem Einbinden die Navigation nicht mehr. Zwar wird im Kategoriebaum die ausgewählte Kategorie angezeigt, aber die Produkte werden nicht neu geladen und somit werden immer die Resultate aus dem Modul eingeblendet. Sieht jemand den entsprechenden Fehler?

Gruss
Roland

bblNewArticlesList.php

<?php

class bblNewArticlesList extends bblNewArticlesList_parent
{
  public function loadNewArticles()
  {
    $sArticleTable = getViewName('oxarticles');
    
    $sSelect  = "select * from $sArticleTable ";
    $sSelect .= "WHERE DATE_SUB(CURDATE(),INTERVAL 180 DAY) <= oxinsert ";
    $sSelect .= "AND oxvarselect='' AND oxactive ='1' ORDER BY oxinsert desc";
    
    $this->selectString($sSelect);
  }
 

}

bblNewArticles.php

<?php

class bblNewArticles extends bblNewArticles_parent
{
  protected $_sThisTemplate = 'newarticles.tpl';
  
  public function render()
  {
    oxUBase::render();
    
    $oArticleList = $this->getArticleList();
    
    $this->_processListArticles();
    
    return $this->_sThisTemplate;
  }
  
  public function getArticleList()
  {
    $this->_aArticleList = $this->_loadArticles();
    
    return $this->_aArticleList;
  }
  
  protected function _loadArticles()
  {
    $iNrofCatArticles = (int) $this->getConfig()->getConfigParam( 'iNrofCatArticles' );
    $iNrofCatArticles = $iNrofCatArticles?$iNrofCatArticles:1;
    $oArtList = oxNew( 'oxarticlelist' );
    
    // load the articles
    $this->_iAllArtCnt = $oArtList->loadNewArticles();
    $this->_iCntPages = round( $this->_iAllArtCnt / $iNrofCatArticles + 0.49 );
    
    return $oArtList;    
  }
  
}

newarticles.tpl

[{oxscript add="$('a.js-external').attr('target', '_blank');"}]
[{oxscript include="js/widgets/oxarticlebox.js" priority=10 }]
[{oxscript add="$( '#content' ).oxArticleBox();"}]
[{capture append="oxidBlock_content"}]
      <div class="listRefine clear bottomRound">
            [{include file="widget/locator/listlocator.tpl" locator=$oView->getPageNavigationLimitedTop() attributes=$oView->getAttributes() listDisplayType=true itemsPerPage=true sort=true }]
        </div>
    [{include file="widget/product/list.tpl" type=$oView->getListDisplayType() listId="productList" products=$oView->getArticleList()}]
        [{include file="widget/locator/listlocator.tpl" locator=$oView->getPageNavigationLimitedBottom() place="bottom"}]        
    [{insert name="oxid_tracker"}]             
[{/capture}]

[{include file="layout/page.tpl" sidebar="Left" tree_path=$oView->getTreePath()}]

Und im Backend habe ich noch die folgenden Einträge gemacht…
alist => bbl_category&bblNewArticles
oxarticlelist =>bblNewArticlesList

Kurze Frage: woher soll der Shop wissen wann er die komplette Liste und wann nur die neuesten Einträge anzeigen soll?

Mit dem aktuellen Script gibt es noch keine Unterteilung. Es wird einfach immer die komplete Liste aus dem Ergebnis der Abfrage aus loadNewArticles() ausgegeben.

Wo liegt dann das Problem? loadNewArticles() liefert halt immer alle neuen Artikel, also werden die auch immer angezeigt, egal welche Kategorie du anklickst.

Genau das ist das Problem. Ich möchte loadNewArticles() aus bblNewArticlesList.php natürlich nur aufrufen, wenn ich die Klasse über …/index.php?cl=bblNewArticlesList aufrufe. loadNewArticles() aus bblNewArticlesList.php soll natürlich nicht für alle Kategorien gelten.

alist => bblNewArticles: Gilt für alle Listen. Diesen Eintrag weglassen, die Datei bblNewArticles.php verschieben in den Ordner views und beginnen mit:
class bblNewArticles extends alist

Aufruf mit index.php?cl=bblNewArticles