Hallo,
ich habe oxcategories um drei Felder erweitert. Diese wurden anfänglich (im Frontend) nicht geladen. Ich hatte dann in einem anderen Post gelesen, dass das bei Kategorien mit dem abgeschalteten LazyLoading zusammenhängt. Ich habe daher die Klasse oxcategories wiefolgt erweitert:
<?php
class ys_bzimport_oxcategory extends ys_bzimport_oxcategory_parent {
public function __construct()
{
$this->_blUseLazyLoading = true;
$this->_aFieldNames['ysflyout1'] = 1;
$this->_aFieldNames['ysflyout2'] = 1;
$this->_aFieldNames['ysflyout3'] = 1;
parent::__construct();
}
}
Im Frontend funktioniert das jetzt wunderbar. Die Felder stehen zur Verfügung und können genutzt werden.
Allerdings wird jetzt der Langbeschreibungstext nicht mehr in den Editor im Backend geladen (alles andere aber schon). Noch kurioser wird es, wenn ich die Lazy Loading Zeile auskommentiere und nur die Feld Namen setze. Dann werden im Backend gar keine Kategorien mehr geladen. Fehlermeldungen Fehlanzeige.
Irgendjemand mit LazyLoading Erfahrung und ne Idee was das sein könnte?
Im Einsatz ist hier eine OXID PE 4.9.6
Falls noch jemand auf das Problem stoßen sollte, hier die für mich funktionierende Lösung:
<?php
class ys_bzimport_oxcategory extends ys_bzimport_oxcategory_parent {
protected $_blUseLazyLoading = true;
public function __construct()
{
$this->_blUseLazyLoading = true;
self::$_blDisableFieldCaching[get_class($this)] = true;
parent::__construct();
$this->_aFieldNames['ysflyout1'] = 1;
$this->_aFieldNames['ysflyout2'] = 1;
$this->_aFieldNames['ysflyout3'] = 1;
}
}
Ich kann (noch) nicht sagen warum, aber damit alles, in meinem ersten Post genannte, funktioniert muss der Aufbau eine gewisse Reihenfolge haben:
- _blUseLazyLoading muss als Klassenvariable defaultmäßig auf true gesetzt werden
- Im Konstruktor muss sie nochmal explizit auf true gesetzt werden
- Um Caching zu verhindern (Felder werden sonst nur beim ersten Aufruf nach TMP leerung geladen, muss das FeldCaching deaktiviert werden
- Jetzt darf erst/muss der Parent-Konstruktor aufgerufen werden
- Nun noch die Feldnamen der neuen Felder entsprechend der Erweiterung setzen
Wie schon gesagt, ich weiss noch nicht genau warum diese Reihenfolge wichtig ist, aber nur so, funktioniert sowohl im Frontend als auch im Backend alles korrekt.
Cool, danke für’s posten deiner Lösung!