Azure bei 4.5.8 Auswahllisten nicht im Warenkorb angezeigt

Hallo,

da ich das Bugtracking nicht klar komme deswegen nur hier, vielleicht kann einer der Ahnung hat mal schauen und das vielleicht eintragen.
Hier hat wohl schon mal einer nach einer lösung gesucht aber nicht bekommen:
http://forum.oxid-esales.com/showthread.php?t=12034#post72537

Bei dem CE 4.5.8 Azure Template ist ein Fehler bei der Anzeige von Auswahllisten des Warenkorbes, denn diese werden nicht angezeigt :O)
In den E-Mail an Kunde und Admin steht aber alles drin.

Lösung:
/out/azure/tpl/page/checkout/inc/basketcontents.tpl
dort muss das eingefügt werden in ca. zeile73 in das div mit dem inhalt

[{ oxmultilang ident="PAGE_CHECKOUT_BASKETCONTENTS_ARTNOMBER" }] [{ $basketproduct->oxarticles__oxartnum->value }]

dies hier gleich danach


                                    [{ if $basketitem->getChosenSelList() }]<br>
                                    [{foreach from=$basketitem->getChosenSelList() item=oList}]
                                    [{ $oList->name }] [{ $oList->value }] 
                                    [{/foreach}]
                                    [{/if}]

Vielleicht hilfts ja jemand.

Cheffchen

ist das im Demoshop nachstellbar?

Hallo Ray,

leider funktioniert es auch mit der 4.6 Version im Demoshop NICHT!

Ich habe extra für den Artikel “Kuyichi 1/2 Sleeve Shirt” eine Auswahlliste angelegt. Du kannst es unter

http://demoshop.oxid-esales.com/community-edition/Bekleidung/Fashion/Fuer-Sie/Shirts-Co/Kuyichi-1-2-Sleeve-Shirt.html

nachprüfen.

Nachdem ich aber Obiges geschrieben und noch einmal den Fall testen wollte, war auf einmal meine kurz vorher erstellte Auswahlliste verschwunden. Ist da ein automatischer Bereinigungsprozess am laufen?

Auch finde ich es schade dass man mit einer Auswahlliste einen Artikel in den Warenkorb legen kann OHNE dass man zuvor eine Auswahl getroffen hat. Das geht z.B. NICHT mit Varianten.

Albert

Ja, der Demoshop wird alle Stunde zurückgesetzt.

Noch eine Frage zum Abschluss, das hat schon mal funktioniert? Woher ist der Code-Fetzen? Aus einer früheren Version von Azure?

Nabend zusammen,

ich teste grad mit der 4.6.2 rum und hab den hack hier mal integriert (der Bug wird also immer noch weitergetragen),
dabei ist mir ein weiterer Bug aufgefallen:

Wenn man einen Artikel mit Auswahllisten mit ausgewählten Aufpreis-Optionen im Warenkorb liegen hat und dann die Artikelanzahl ändert, setzt sich der Preis auf den “Vater”-Preis zurück, die auswählten Optionen bleiben jedoch bestehen.

Im Originalzustand ist dies sogar noch unvorteilhafter, da die gewählten Auswahllisten-Optionen ja im Warenkorb nicht angezeigt werden und der Preis bei erhöhen der Anzahl eines Artikels plötzlich “springt”.

Da ich noch einen anderen Produktivshop betreibe, beunruhigt mich das natürlich etwas und würde an dieser Stelle gerne um ein Workaround bitten.

Nach zwei Tagen Suche habe ich den Bug beseitigt. Es gibt zwei Möglichkeiten. Man muss die Datei azure/tpl/page/checkout/inc/basketcontents.tpl editieren.

  1. Löschen der Zeile:
[{if $oViewConf->showSelectListsInList()}]

und zugehöriges

[{/if}]

so dass der Codeausschnitt folgendermaßen aussieht:


[{if !$basketitem->isBundle() || !$basketitem->isDiscountArticle()}]
	[{assign var="oSelections" value=$basketproduct->getSelections(null,$basketitem->getSelList())}]
	[{if $oSelections}]
		<div class="selectorsBox clear" id="cartItemSelections_[{$smarty.foreach.basketContents.iteration}]">
			[{foreach from=$oSelections item=oList name=selections}]
				[{include file="widget/product/selectbox.tpl" oSelectionList=$oList sFieldName="aproducts[`$basketindex`][sel]" iKey=$smarty.foreach.selections.index blHideDefault=true sSelType="seldrop"}]
			[{/foreach}]
		</div>
	[{/if}]
[{/if}]

Vielleicht kann man den Return-Wert der Funktion auch irgendwo im Adminbereich ändern, ich habe nur nicht gefunden. Im Warenkorb wird die Auswahlliste angezeigt, wo man noch Mal seine Auswahl ändern kann.

  1. Die korrekte Lösung wäre:

[{if $oViewConf->showSelectListsInList()}]
	[{assign var="oSelections" value=$basketproduct->getSelections(null,$basketitem->getSelList())}]
	[{if $oSelections}]
		<div class="selectorsBox clear" id="cartItemSelections_[{$smarty.foreach.basketContents.iteration}]">
			[{foreach from=$oSelections item=oList name=selections}]
				[{include file="widget/product/selectbox.tpl" oSelectionList=$oList sFieldName="aproducts[`$basketindex`][sel]" iKey=$smarty.foreach.selections.index blHideDefault=true sSelType="seldrop"}]
			[{/foreach}]
		</div>
	[{/if}]
[{else}]
	[{assign var="oSelections" value=$basketproduct->getSelections(null,$basketitem->getSelList())}]
	[{if $oSelections}]
		[{foreach from=$oSelections item=oList name=selections}]
			[{assign var="oActiveSelection" value=$oList->getActiveSelection()}]
			<p>
				[{$oList->getLabel()}]: [{$oActiveSelection->getName()}]
				<input type="hidden" name="aproducts[[{$basketindex}]][sel][[{$smarty.foreach.selections.index}]]" value="[{if $oActiveSelection }][{$oActiveSelection->getValue()}][{/if}]">
			</p>
		[{/foreach}]
	[{/if}]
[{/if}]

Der Code kann ein bissl anders aussehen, ich habe ein angepasstes Thema. Soll ich ein Bug-Report erstellen und den Patch für letztes Azure anhängen oder geht es auch so?

Das ist im Grunde genommen dieser Bug: https://bugs.oxid-esales.com/view.php?id=4240
Die Option ist “Stammdaten->Grundeinstellungen->Performance->Auswahllisten in Artikellisten anzeigen”, wenn die aktiviert ist werden Auswahllisten im Warenkorb angezeigt.

Ok - dann haben wir jetzt zwei Lösungen, richtig? Mit dem Code von Cheffchen werden die gewählten Werte aus den Auswahllisten lediglich angezeigt und mit Deinem Code kann man die Auswahl im Warenkorb / Checkout nochmal verändern - stimmt das so?

Wenn ja, dann trag ich das im Tracker nach.

2leofonic

danke für die Hinweise, habe über google nicht gefunden; ich, oh fauler Hund.

Noch ein paar Anmerkungen. Mein Code “enthält” auch Cheffchen’s Problemstellung. Übrigens scheint er das Problem mit der Aktualisierung des Warenkorbes endgültig zu lösen. Da fehlte ja nur ein <input> Feld, deswegen wenn da keine Auswahl gab, wurden die Werte von Auswahllisten nicht weiter übergeben sondern mit dem Laden der Seite auf den ersten Wert in der Liste zurückgesetzt.

Danke - ich habe Deine Lösung mal zum Bugeintrag dazugeschrieben!