Eigene Liste (Erweiterung Artikelliste)

Hallo zusammen,

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?

Vielen Dank für eure Hilfe.

Viele Grüße
Dennis

ist es zwingend notwendig, dass die artikel in einer eigenen tabelle sind. das erschwert so ziemlich alles was die ausgabe der artikel betrifft :wink:

oder könnten diese auch einfach in oxarticles mit nem flag sein?

hi Tobias,

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.

viele Grüße

Dennis

hm ok, schau dir mal den blogpost an: http://www.shoptimax.de/blog/technisches/auslesen-eigener-db-tabellen-mit-dem-oxid-framework

habe ich mir angeschaut, aber da kann ich mir ja nur einen Wert holen?!

Warum kann ich beispielsweise die User-Liste so einfach erweitern und die Artikelliste nicht?

habe ich mir angeschaut, aber da kann ich mir ja nur einen Wert holen?!

nö, mit “Eleganter ist es jedoch das OXID-Framework dafür zu nutzen, z. B:” bekommst du alle

Hi zusammen,

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

[{foreach from=$aData item=Datas}]
    <p>[{$Datas->saarticles__satitel}]</p>
[{/foreach}]

zugreifen.

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.

Grüße
Dennis