Technik der Auswahllisten

Hallo,

ich entwickle so etwas ähnliches wie die Auswahllisten.

Kann mir jemand sagen, an welcher Stelle im Core die Auswahl in das Warenkorb-Array geschrieben und an welcher der Text für die Mails daraus generiert werden?

Vielen Dank
Thoni

Alle Daten sind in einem Formular, das mit dem Klick auf “in den Warenkorb” abgeschickt wird. Du kannst über die Browser developer tools die übertragenen Daten und deren Namen ansehen und so über eine einfache Textsuche im Quellcode finden, wo man auf diese Daten zugreift.

oxcmp_basket.php

 public function tobasket

order_cust.tpl

$basketitem->getChosenSelList()

Hallo Thoni,
ich weiß das eigener Entwicklungen meistens besser ist. Aber bevor du dir sehr viel Arbeit machst schaue mal hier rein:

[B]Erweiterte-Auswahllisten[/B]

Das Modul habe ich letztes Jahr geschrieben und kann günstig erworben werden.

Vielleicht verhilft dir auch das Modul zum finden neueren Ideen.

foxido.de: Danke, ich sehe es mir mal an.
OXID-Design: Danke, aber ich mache etwas Anderes.

Man soll sich x Produkte verschiedener Geschmacksrichtungen zusammenstellen können, die teilweise unterschiedliche Preise haben.
Beispiel:
10 Stück
Erdbeer
Banane
Erdnuss (+0.80 Euro)

Das ganze funktioniert auch mit einem spinner (+/-).

Sind alle Preise gleich, wird sofort der Preis angezeigt - sind unterschiedliche möglich, wird der Preis erst angezeigt, wenn die Anzahl stimmt.

Der Bestellbutton wird auch erst bei der korrekten Anzahl freigeschaltet - vorher wird dort ‘x von y ausgewählt’ angezeigt.

Das ganze soll nur auf der Produkt-Detailseite konfigurierbar sein, nicht mehr im Warenkorb.

Es ist alles fertig, bis auf die Datenübergabe in den Warenkorb und die Mails.

Ich habe dazu die Auswahllisten erweitert.

In den nächsten Tagen mache ich weiter.

Viele Grüße
Thoni

Hallo Thoni,
wenn du lust hast kannst du das Endergebnis mal hier posten. Aus deiner Beschreibung habe ich leider nicht alles verstanden.

Nun wünsche ich dir viel glück damit das alles so klappt wie du es haben willst.

Grüße
Rafig

Wenn es im Shop läuft, poste ich einen Link.

Hallo,

ich habe oxOrder erweitert, so dass ich in …

function _setOrderArticles($aArticleList)

… nach der erfolgreichen Bestellung, aber vor dem Versenden der Mails und die Eintragung in die DB die PersParams abändern kann.

Ich schaffe es aber nicht die _aSelList zu leeren - kann mir jemand dazu einen Tipp geben?

Danke
Thoni

Erweiterung:
Das Object ist ein myOxbasketitem.
Darin ein …

public function clearSelList() {
    $this->_aSelList = NULL; // oder = array()
}

… bleibt ohne Erfolg.

Hallo Thoni,

in oxorder.php finde die Funktion _setOrderArticles() und ändere in deinem Modul die stelle wie folgt:


// copying persistent parameters ...
if (!is_array($aPersParams = $oProduct->getPersParams())) {
//$aPersParams = $oContent->getPersParams();
}

Grüße
Rafig

Hallo OXID-Design,

die PersParams verändere ich schon, und zwar so:


		foreach($aArticleList AS $key => $cartPos)
		{
			$params = $cartPos->getPersParams();
// Änderungen machen
		}
	    $retVal = parent::_setOrderArticles($aArticleList);
		return $retVal;

Ich schaffe es aber nicht die _aSelList zu leeren.

Ich habe mir die Variablen anzeigen lassen - es funktioniert doch - _aSelList ist leer.

In den Mails und in der DB steht aber die Info, dass der erste Eintrag der Auswahlliste ausgewählt wurde.

Diese Info soll aber nicht angezeigt werden.

Wo holt sich der Shop das her?

Hallo Thoni,
dort wird die PaPersParams nicht verändert sondern überhaupt nicht geklont somit einfach geleert. Ich dachte das wolltest du so haben. Wählt der Kunde Parameter und schickt die ab wird nichts in die Datenbank geschrieben.

Du musst mir auch erklären warum du überhaupt “_aSelList” leeren möchtest. Die werden doch nirgendwo zwischengespeichert nur per Formular einfach weitergereicht bis Sie am ende in der Datenbank landen.

Grüße
Rafig

Hallo OXID-Design,

ich dachte, in _aSelList steht, was der Kunde bei den Auswahllisten ausgewählt hat.
Genau diese Info steht doch im Klartext in der Datenbank in oxorderarticles - auslesen kann man es im Backend bei den Bestellungen.

Mein aktuelles Problem: Die Information der Auswahllisten muss ich in bestimmten Situationen entfernen, doch leider ist es immer so, als ob der erste Eintrag ausgewählt wurde, da man es in den Mails und im Backend (s.o.) lesen kann.

Gruß
Thoni

[QUOTE=OXID-Design;183790]
Du musst mir auch erklären warum du überhaupt “_aSelList” leeren möchtest. [/QUOTE]

Ich nutze die Auswahllisten und habe sie erweitert:

Legt man dort eine Gesamtzahl fest, sieht das Produkt so aus:


Anstelle von zehn Auswahlboxen finde ich diese Bedinung einfacher.

Die eigentlichen Auswahlboxen werden ausgeblendet und es kann nach dem alten Schema nichts ausgewählt werden.

Trotzdem sieht es später so aus, als ob zusätzlich der erste Eintrag ausgewählt wurde:

Ich hoffe, es wird nun klar, warum ich diese Info löschen möchte.

Vielen Dank für deine Unterstützung
Thoni

Irgendetwas hast du umgestellt. Das hier löscht alles am ende der Bestellung. In Datenbank kommt überhaupt nicht an.


// copying persistent parameters ...
if (!is_array($aPersParams = $oProduct->getPersParams())) {
//$aPersParams = $oContent->getPersParams();
}

Grüße
Rafig

Es darf nicht alles am Ende gelöscht werden, denn es soll nur der markierte Teil entfernt werden, der nicht in den aPersParams steht:

Aber ein bisschen programmieren kannst du schon, oder?

Wie wäre es einfach im Template nach Werten abzufragen und die mit INPUT Felder mit “NULL” als “disabled” zusetzen. So habe ich das bei meinem Modul gelöst, schaue dir das Demo mal an. Es wird über 30 Optionen angeboten und NUR die Ausgewählten kommen an.

Grüße
Rafig

Der nicht gewollte Teil steht in der Datenbank in ‘oxselvariant’ und der Rest steht in ‘oxpersparam’, was auch ok ist.

Beides in der tabelle oxorderarticles

Ehrlich gesagt komme ich nicht mehr mit.

Vorhin wolltest komplette “_aSelList” leeren und jetzt doch einzelne Werte die nicht gefüllt sind. Eins ist aber klar, das muss vor der schreiben in die Datenbank geschehen. Schaue dir einfach die Funktionsweise im Standard-Shop an und wirst selber darauf kommen.

Grüße
Rafig

[QUOTE=OXID-Design;183797]
Wie wäre es einfach im Template nach Werten abzufragen und die mit INPUT Felder mit “NULL” als “disabled” zusetzen.[/QUOTE]

Du meinst sicher dieses Hidden-Feld:
<input name=“aproducts[xxx][sel][0]” value=“1” type=“hidden”>

Dort steht drin, was man ausgewählt hat.

Und genau das gibt es bei meiner Version nicht mehr.