FlexContents in Aftercheckout und Mailing ausgeben.

Fragen und Antworten zu den Templates und eigener Template-Erstellung
Antworten
Benutzeravatar
ix_tra
Beiträge: 8
Registriert: 23. Mai 2014, 15:23

FlexContents in Aftercheckout und Mailing ausgeben.

Beitrag von ix_tra »

Hallo Merconis Team,

ich habe eine Frage bezüglich der FlexContents.
Contao Version 3.3.2
Merconis Version 2.1.2

Für die Ausgabe von kundenspezifischen Angaben wurden flexible Produktinformation-Felder (FlexContent) verwendet.
Hier werden Dinge wie Qualität, Material, Ausführung etc. angegeben.
Jetzt möchte der Kunde diese Angaben ebenfalls nach Bestellabschluss (letzter Schritt) und in der E-Mail-Benachrichtigung haben.
Die FlexContents stehen mir zwar bis zum Abschlussprozess zu Verfügung, aber, nach Bestellabschluss, also im template_afterCheckout_desktop.html5, habe ich diese Werte nicht mehr.
Gleiches gilt für das template_mail_orderConfirmation.html5.

Gibt es hierfür eine Lösung, so dass ich die FlexContents auch in den o. g. beiden Templates verwenden kann?
Benutzeravatar
supportteam
Beiträge: 245
Registriert: 28. Aug 2013, 17:58

Re: FlexContents in Aftercheckout und Mailing ausgeben.

Beitrag von supportteam »

Die nach Abschluss der Bestellung in den genannten Templates verfügbaren Informationen in $this->arrOrder['items'] sind die Informationen, die mit der Bestellung in der Datenbank festgeschrieben wurden. Die Flex-Contents werden hierbei nicht berücksichtigt, da diese potenziell große Datenmengen enthalten können, die in den meisten Fällen nach der Bestellung irrelevant sind.

In Ihrem Fall können Sie auf die Flex-Contents aber dennoch zugreifen, gehen Sie hierzu bitte wie folgt vor:

Notieren Sie in der ersten Zeile des jeweilgen Templates folgenden Code:

Code: Alles auswählen

<?php $this->import('ls_shop_controller'); ?>
Innerhalb der Schleife, die die Informationen der bestellten Produkte ausgibt, erzeugen Sie dann zu jeder bestellten Position ein Produkt-Objekt und greifen dann wie gewohnt auf die Flex-Contents zu:

Code: Alles auswählen

foreach ($this->arrOrder['items'] as $itemPosition => $cartItem) {
	$objProduct = $this->ls_shop_controller->getObjProduct($cartItem['extendedInfo']['_productVariantID']);
	echo !$objProduct->_variantIsSelected ? $objProduct->_flexContents['flex1'] : $objProduct->_selectedVariant->_flexContents['flex1'];
}
Die Flex-Contents, die Sie so ansprechen, sind die dem Produkt zum aktuellen Zeitpunkt hinterlegten Flex-Contents. Für Ihren Zweck ist das natürlich in Ordnung, da sich diese Daten zwischen Abschluss der Bestellung und Verarbeitung der genannten Templates sicher nicht ändern.

Bitte lassen Sie uns wissen, ob wir Ihr Anliegen damit zufriedenstellend lösen konnten.
Benutzeravatar
ix_tra
Beiträge: 8
Registriert: 23. Mai 2014, 15:23

Re: FlexContents in Aftercheckout und Mailing ausgeben.

Beitrag von ix_tra »

Vielen Dank für Ihre prompte Antwort, es funktioniert.
Benutzeravatar
supportteam2
Beiträge: 427
Registriert: 4. Mär 2015, 14:05

Re: FlexContents in Aftercheckout und Mailing ausgeben.

Beitrag von supportteam2 »

Wichtige Aktualisierung:

Der bislang in diesem Beitrag gezeigte Code funktioniert bis Merconis 3. Ab Merconis 4 muss der Code dann folgendermaßen aussehen:

Code: Alles auswählen

foreach ($this->arrOrder['items'] as $itemPosition => $cartItem) {
    $objProduct = \Merconis\Core\ls_shop_generalHelper::getObjProduct($cartItem['extendedInfo']['_productVariantID']);
    echo !$objProduct->_variantIsSelected ? $objProduct->_flexContents['flex1'] : $objProduct->_selectedVariant->_flexContents['flex1'];
}
Antworten

Zurück zu „Templates“