Ich möchte ein Modul erstellen, bei dem zu einem Artikel sein Zubehör angezeigt wird und bei Auswahl des Zubehörs das Artikelbild mit dem Zubehör geupdated wird. Zum Beispiel eine Puppe, die eine Hose anbekommt.
Dazu habe ich bereits erfolgreich mit meinen rudimentären Kentnissen und der tollen Anleitung von Tim Bischoff die oxarticles um 2 Spalten erweitert - puppeanzieh(gibt für die Bilderstellung die Ebene an - ein Pullover kommt über eine Hose) und anziehbild(der Filenamen der zugehörigen Bilddatei).
Und auch die Anzeige der Felder im Adminbereich des Artikels klappt.
Das Zubehör wird dann wie gewohnt dem Artikel zugeordnet.
Die oxwarticlesdetails habe ich mit der Funktion getAnziehList() - eine weitgehende Kopie der getAccessoires() - erweitert, um die Accessoires nach der neuen Spalte puppeanzieh zu sortieren, bzw listen zu lassen: (ich benutze noch 4.85)
<?php
class anziehaccessoires extends anziehaccessoires_parent
{
public function getAnziehList($sArticleId, $layer)
{
$myConfig = $this->getConfig();
// Performance
if ( !$myConfig->getConfigParam( 'bl_perfLoadAccessoires' ) ) {
return null;
}
if ( $this->_oProduct === null ) {
if ( $this->getViewParameter( '_object' ) ) {
$this->_oProduct = $this->getViewParameter( '_object' );
}}
$oAcclist = oxNew( "oxarticlelist");
$oAcclist->setSqlLimit( 0, $myConfig->getConfigParam( 'iNrofCrossellArticles' ));
$sArticleTable = getViewName('oxarticles');
$sSelect = "select $sArticleTable.* from oxaccessoire2article left join $sArticleTable on oxaccessoire2article.oxobjectid = $sArticleTable.oxid ";
$sSelect .= "where oxaccessoire2article.oxarticlenid = '$sArticleId' ";
$sSelect .= "and $sArticleTable.puppeanzieh = '".$layer."' and $sArticleTable.anziehbild is not null ";
// $sSelect .= "and ".$this->getBaseObject()->getSqlActiveSnippet();
$sSelect .= " and $sArticleTable.oxid is not null and oxstock > 0";
//sorting articles
$sSelect .= " order by oxaccessoire2article.oxsort";
$oAcclist->selectString($sSelect);
return $oAcclist->getArray();
}
}
Nun meine Frage: Wie kann ich das auskommentierte
// $sSelect .= "and ".$this->getBaseObject()->getSqlActiveSnippet();
für die Query aktivieren?
Das getBaseObject() ist wohl in der oxwarticledetails nicht vorhanden.
Die Ersetzung mit “is not null and oxstock > 0” funktioniert zwar, aber ich vermute in dem original-Snippet stecken mehr Feinheiten…
Eine weitere Frage:
Im Moment erweitere ich ja die View oxwarticledetails - dem Artikel wird dann unter “Erweitert” das alternative Template für diese Zubehör-Geschichte zugewiesen.
Ist es aus irgendeinem Grund sinnvoller eine eigene View dafür zu erzeugen?