E-Mail aus Einstellungen via Smarty in CMS-Seiten

Ist es möglich auf einer CMS-Seite (z.B. oxforgotpwd oder oxorderinfo) die Info E-Mail via Smarty zu laden?
In der Bestell-E-Mail wird ja das hier genutzt: [{ $shop->oxshops__oxorderemail->value }]
Das funktioniert allerdings nicht in oxforgotpwd. Hatte jetzt auch das getestet:
[{ $shop->oxshops__oxinfoemail->value }] aber keine Chance.
Sind die Werte auf den CMS-Seiten nicht verfügbar?

Verwendest Du einen Editor bei den CMS-Seiten?

Schalte den mal ab und setze die Variable direkt als Code ein, manchmal zerhacken die Editoren solche Codeeingaben.

Nein, ich verwende keinen Editor. Sollte das also eigentlich so funktionieren? Mit [{ $shop->oxshops__oxinfoemail->value }] in oxforgotpwd?

ja, sollte eigentlich so funktionieren

  • /tmp geleert nach der Änderung?

tmp leeren ändert nichts.
In der Standard-Installation werden die Daten nicht per Smarty geladen. Dort steht überall [email protected] und so drin. Wirklich sicher, dass das in der Form möglich ist? Muss man die Inhalte evtl. noch per Modul verfügbar machen? Achja: Shop-Version ist 4.4.8.

Also bei uns wird die Mailadresse aus den Stammdaten via Smarty in die Bestellmail übernommen.

In der Bestellmail funktioniert das bei mir auch, aber nicht in oxforgotpwd oder oxrightofwithdrawal etc.
Klappt das bei dir?

ich nehm alles zurück - geht auch bei mir nicht in oxforgotpwd

habs sogar direkt in der Datenbank eingefügt um Fehler durch WYSIWYG-Editor zu vermeiden - leider kein Effekt

Ich bekomme mit folgendem Code in einem Modul, das oxviewconf erweitert, z.B. die infoemail:

public function getInfoMail() {
		$myConfig = $this->getConfig();
		if($iLangId === null) {
			$iLangId = $myConfig->getActiveShop()->getLanguage();
		}
		
		$iLangId = oxLang::getInstance()->validateLanguage($iLangId);
		
		if(!isset($shopParams)) {
			$oShop = oxNew('oxshop');
			$oShop->loadInLang( $iLangId, $myConfig->getShopId());
			$shopParams = $myConfig->getActiveView()->addGlobalParams($oShop);
		}
		return $shopParams->oxshops__oxinfoemail->rawValue;
	}

Angelehnt an die Funktion _getShop in core/oxemail.php. Aufruf funktioniert dann mit $oViewConf->getInfoMail(). Ist die Frage, ob das ein passender Weg ist, oder es auch einfacher/besser geht?

Edit: Das Laden der Parameter mit $shopParams = $myConfig->getActiveView()->addGlobalParams($oShop); reicht schon, dass $shop->oxshops__oxorderemail->value in den oxcontents funktioniert. Ich werde das mal noch in ein passendes Modul einbauen.

So klappt es:
Neues Modul:

<?php
class makeConfigAvailable extends makeConfigAvailable_parent {
	public function getSettings() {
		$myConfig = $this->getConfig();
		if($iLangId === null) {
			$iLangId = $myConfig->getActiveShop()->getLanguage();
		}
		
		$iLangId = oxLang::getInstance()->validateLanguage($iLangId);
		
		if(!isset($shopParams)) {
			$oShop = oxNew('oxshop');
			$oShop->loadInLang($iLangId, $myConfig->getShopId());
			$shopParams = $myConfig->getActiveView()->addGlobalParams($oShop);
		}
		return $shopParams;
	}
}
?>

Einbindung:
oxviewconfig => ordner/makeconfigavailable

Aufruf von getSettings() im Template stellt die Parameter zur Verfügung. z.B. direkt nach dem body-Start: [{assign var=“shopParams” value=$oViewConf->getSettings()}]

So bekommt man Zugriff auf Felder wie z.B. [{ $shop->oxshops__oxinfoemail->value }] und [{ $shop->oxshops__oxorderemail->value }]

Ich denke, das geht noch optimaler. Vielleicht kann ja jemand mit mehr Hintergrundwissen sagen, ob das ein Sicherheitsrisiko birgt, oder wie man die Werte zur Verfügung stellt, ohne getSettings() aufrufen zu müssen?

Auch wenn vermutlich keine Antwort mehr kommen wird: Ich habe das nun genauso in einem Shop mit Version 4.5.9 umsetzen wollen. Da funktioniert es aber nicht (E-Mail erscheint nicht).
Mit [{$oxcmp_shop->oxshops__oxinfoemail->rawValue}] wird sie angezeigt, aber bei der Bestellnachricht steht ja auch [{$shop->oxshops__oxinfoemail->value}] und da klappt es.
Wie kann man diese Felder bei den CMS-Seiten (Impressum, Datenschutz, AGB etc.) verwenden? Oder ist das mit rawValue sinnvoll?

In der CMS-Seite “Passwort vergessen” ist mittlerweile [{ $oxcmp_shop->oxshops__oxinfoemail->value }] anstatt der hardcoded demo@ - Adresse drin.

https://bugs.oxid-esales.com/view.php?id=3774

Danke für den Hinweis. Irgendwas hatte ich vorher verkehrt. Es funktioniert nun überall mit z.B. [{$oxcmp_shop->oxshops__oxinfoemail->value}]