Mein Kunde möchte von mir die Parent-Category-Seiten umgebaut haben. Er möchte dort im Prinzip keine Listung der Unterkategorien haben, sondern soll eine Liste der neuesten Artikel aller Unterkategorien Hauptbestandteil der Seite werden.
Also schreibe ich ein Modul und eine neue list.tpl, doch komme ich jetzt an zwei Stellen nicht wirklich weiter:
1.) Wie kann ich “schön” die Artikel der Unterkategorien erfragen?
enzarticlenewestfromcat.php
class enzarticlenewestfromcat extends oxUBase{
protected $_sThisTemplate = 'page/list/list_w-out_subcats.tpl';
public function getNewestArticleListFromCat(){
$aArticleList = oxNew('oxarticlelist');
$sQuery = "SELECT * FROM oxv_oxarticles
INNER JOIN oxobject2category ON oxobject2category.OXOBJECTID = oxarticles.OXID
WHERE oxv_articles.OXACTIVE = 1
AND oxv_articles.OXPARENTID = ''
AND ( oxv_articles.OXSTOCK + oxv_articles.OXVARSTOCK ) > 0
ORDER BY oxv_articles.OXINSERT DESC
LIMIT 20 ";
$aArticleList->selectString($sQuery);
return $aArticleList->getArray();
}
public function getTitle(){
return "Latest 100";
}
public function render(){
return parent::render();
}
}
2.) Rufe ich die Seite auf, so gibts ne Umleitung und im Log steht, daß die Funktion getNewestArticleListFromCat nicht gefunden würde. Bin ich total verbimmelt?
Nun bekomme ich leider im Log die Meldung, daß oxSystemComponentException-oxException (time: 2013-09-26 12:47:40): [0]: Function ‘getNewestArticleList’ does not exist or is not accessible! (oeThemeSwitcherAList) bzw oxSystemComponentException-oxException (time: 2013-09-26 12:50:52): [0]: Function ‘getNewestArticleList’ does not exist or is not accessible! (aList) wäre.
Was muß ich tun?
Ich würde mich wirklich freuen, wenn jemand hierzu einen Hinweis hätte. Ich kann mir fast nicht vorstellen, daß niemand eine derartige Ansicht auf seinen Parent-Category-Seiten bisher umgesetzt hat!
Da das Log immer wieder ausspuckt, daß er meine Funktion nicht finden kann bin ich mir gerade unsicher, ob “mein Weg” wirklich korrekt ist. Hier mal die aktuelle Version:
enznewfromcat.php
<?php
class enznewfromcat extends alist{
protected $_sThisTemplate = 'page/list/list_w-out_subcats.tpl';
public function getNewestArticleListFromCat($cat){
$aArticleList = oxNew('oxarticlelist');
$cats = getSubCatsOfCat($cat);
$sQuery = "SELECT * FROM oxobject2category
LEFT JOIN oxarticles ON oxarticles.OXID = oxobject2category.OXOBJECTID
WHERE oxarticles.OXACTIVE = 1
AND oxarticles.OXPARENTID = ''
AND ( oxarticles.OXSTOCK + oxarticles.OXVARSTOCK ) > 0
AND oxobject2category.OXCATNID IN '".$cats."'
ORDER BY oxarticles.OXINSERT DESC
LIMIT 20 ";
$aArticleList->selectString($sQuery);
return $aArticleList->getArray();
}
public function getSubCatsOfCat($icat){
$sQuery = "SELECT OXID FROM oxcategory WHERE OXPARENTID = '".$cat."'";
$sRes = mysql_query($sQuery);
$cats = array();
while($sFe = mysql_fetch_array($sRes)){
$cats[] = $sFe['OXID'];
}
return $cats;
}
public function render(){
return parent::render();
}
}