ich hänge gerade daran, dass ich eine eigene Tabelle mit “Artikeln” (saarticles) habe.
Diese möchte ich nun ausgaben. Ich dachte daran die bestehende Artikelliste einfach zu erweitern
class saarticlelist extends oxList {
protected $_sCoreTbl = "saarticles";
protected $_sClassName = "saarticlelist";
public function __construct($_sObjectsInListName = 'saarticlelist')
{
return parent::__construct('saarticlelist');
}
}
ich bekomme dann aber die Fehlermeldung, das “setInList” nicht erreichbar wäre.
Wie stelle ich es am besten an, eine eigene Artikelliste zu erstellen?
eigentlich wäre es schon von Vorteil (da die Artikel absolut nicht mit den Artikeln aus OXID gemeinsam haben).
Ich habe auch schon geschafft die Daten auszugeben, aber relativ “doof” über ein mehrdimensionales Array.
Im Zuge einer anderen Entwicklung bin ich aber drauf gestoßen, dass man das relativ geschickt mit einem Object machen kann. Hier entsprechend die Liste.
vielleicht ist es ganz nützlich für die Anfänger.
Das Problem: Ihr möchtet eine “eigene Liste” von Objekten haben. Z.B. um Daten aus einer eigenen Tabelle auszugeben.
Wenn man beispielsweise die “oxarticlelist” nutzt wird auf die oxarticles-Tabelle zugegriffen.
Wir nehmen also einmal an, dass wir eigene Artikel (Tabelle) haben und diese in einer Liste ausgeben möchten. Dazu müssen wir als erstes das Model des einzel-Artikels erstellen:
art.php
class art extends oxBase
{
protected $_sCoreTbl = 'articles';
protected $_sClassName = 'art';
protected $_aMultiShopTables = array();
public function __construct()
{
parent::__construct();
$this->init('articles');
}
public function assign($dbRecord)
{
parent::assign($dbRecord);
}
}
Hier wird die Tabelle angegeben.
der zweite Schritt ist es das Listenmodell zu erstellen:
artlist.php
class artlist extends oxArticleList
{
public function __construct($sObjectsInListName = 'art')
{
return parent::__construct('art');
}
}
recht überschaubar.
Der “Bau” wird im controller ausgeführt
start.php
class start extends oxUBase
{
protected $_aErrorMsg = array();
protected $_sThisTemplate = 'start.tpl';
public function init()
{
parent::init();
}
public function render()
{
parent::render();
$aData =$this->getData();
if (count($aData)) {
$this->_aViewData['aData'] = $aData;
}
return $this->_sThisTemplate;
}
public function getData()
{
$oData = oxNew('artlist');
$oData->selectString("SELECT * FROM articles");
return $oData->getArray();
}
}
Und schon hat man die eigene Liste im Betrieb und kann auf die Elemente im Template via
Dieser Beitrag ist für die erfahrenen Programmierer bestimmt völlig unsinnig bzw. klar aber gerade für die Einsteiger dürfte es ein guter Startpunkt sein.