ich arbeite noch nicht sehr lange mit OXID und verzweifle gerade an einem - für mich - kuriosen Problem:
Ich habe ein neues Feld ‘new_field’ in die oxcategories eingefügt und kann auch schon mit Smarty per “$category->oxcategories__new_field->rawValue” drauf zugreifen. Allerdings nicht von der aktuellen Kategorie ($actCategory) aus.
Ich musste schon extra in der Klasse oxcategorylist und der Methode ‘_getSqlSelectFieldsForTree’ das SQL anpassen, damit ich überhaupt auf mein neues Feld zugreifen kann (nebenbei: gibts da ne elegantere Lösung?). :eek:
Aber was muss ich nun tun, damit das auch aus der aktuellen Kategorie ausgelesen werden kann?
Weiß einer woran das liegen könnte (vllt. Schreibweise meines Feldes)?
Das hatte ich mir auch schon einmal angeschaut, allerdings steht dort auch
…Accessing a huge amount of not loaded fields on a long category list could thereby kill the performance of your shop …
und ich möchte das System so performant wie möglich halten.
[QUOTE=Nedjem;28574]und ich möchte das System so performant wie möglich halten.
[/QUOTE]
Das ist natürlich ein guter Grund das gar nicht erst auszuprobieren
:rolleyes: das System ist mit fast 3000 Kategorien und über 1Mio. Artikeln schon langsam genug. Ich weiß dass es mit deiner Methode funktioniert, aber es muss doch eine Lösung geben ohne das System NOCH langsamer zu machen
sooo, für alle die es interessiert:
Es gibt eine Lösung!
… nicht sehr schön, da ich im Core pfuschen musste und dadurch Updates evtl. wieder alles rückgängig machen werden, aber hier meine Lösung:
Einfach in der Klasse core/oxcategory.php die Methode load (ursprünglich aus oxbase.php) wiefolgt überschreiben:
public function load( $sOXID)
{
//getting at least one field before lazy loading the object
$this->_addField('new_field', 0);
return parent::load($sOXID);
}
Ich weiß, nicht optimal, aber wenigstens performanter!
(ob eine Seite 2 oder doch 5s lädt macht schon ein Unterschied)
Danke für den Denkanreiz! Ich kenn mich nur leider noch nicht ganz so gut aus mit den Modulen in Oxid… würde das sowas sein wie:
class new_fields_for_category extends oxcategory
{
public function load($sOXID)
{
//getting at least one field before lazy loading the object
$this->_addField('new_field', 0);
return parent::load($sOXID);
}
}
-> obige Klasse erstellen und unter [I]’/modules/new_fields_for_category.php’[/I] ablegen und dann im Backend unter [I]‘Stammdaten/Grundeinstellungen/System/Module’[/I] folgendes eintragen: [I]‘oxcategory => new_fields_for_category’[/I]