ich benötige einen Theme-Switcher, da wir eine neues Theme brauchen und im Live-Shop entwickeln wollen.
Dazu soll bei einer bestimmten Gruppe im Frontend ein anderes Theme angezeigt werden.
Wird das if mit loadActiveUser() auskommentiert, lässt sich das Modul aktivieren.
Andernfalls zeigen sich die Frames im Backend weiß.
Welchen Fehler mache ich?
Gruß
Thoni
class themeswitcher extends themeswitcher_parent {
public function getConfigParam($sName)
{
if ($sName == ‘sTheme’) {
if($oUser = oxNew(\OxidEsales\Eshop\Application\Model\User::class)) {
if ($oUser->loadActiveUser()) {
// if($oUser->inGroup(‘d3c6fe49c74cbb2b4af42b8ef254415f’)) return “theme2020”;
}
}
}
return parent::getConfigParam($sName);
}
}
loadActiveUser(): Damit kannst den aktiven User auch bekommen. Hast $oUser = oxNew(\OxidEsales\Eshop\Application\Model\User::class); noch im Einsatz? Das wäre dann m.M. zu ändern in $oUser = oxNew(‘oxuser’);
Ehrlich gesagt, verstehe ich Dein Problem nicht, weshalb ich es selbst testen musste. Folgendes ist in 4.10.x und 6.xx installierbar und gibt oxidpriceb (preis b) aus, wenn du eingeloggt bist und in der Gruppe:
Du könntest es aber über oxconfig::getDir(…) statt getConfigParam(…) versuchen, das Custom-Template zu laden. Ich würde es nach der User-Abfrage mit $this->setConfigParam(‘sTheme’, $xxx); und $this->setConfigParam(‘sCustomTheme’, $yyy); versuchen.