Artikel ist individualisierbar - Pflichtfeld

Hallo,
ich möchte gerne Artikel individualisierbar machen.
Allerdings möchte ich, dass die Individualisierung ein Pflichtfeld ist.

Wie könnte ich das denn umsetzen?
Danke.

Die einfachste Methode wäre mit jQuery in der Form:

$('form.js-oxProductForm').on('submit', function(){
		if($("#persistentParam").val()  == "")
			{	
			return false;
            }
});

Kann mir jemand bitte sagen, was mit “Die einfachste Methode wäre mit jQuery in der Form:” gemeint ist? Was eine Form ist, ist mir klarund jQuery auch. Aber welche Form bzw. wo soll dieser Code-Part eingefügt werden?

es ist andere Form gemeint, als du denkst. Rhetorische Form, nicht <form>

1 Like

Ah! :wink: Also wie “…in etwa so…”

OK, aber gibt es etwas (Modul oder Sonstiges), womit man es tatsächlich (als Newbie) erreicht, dass ein “Individualisierbar-Feld” zu einem “Pflichtfeld” bewegen kann?

Genau so war es gemeint. Dazu nimmst einfach die Demo: Gutscheincode für Neukunden - #18 by cyberduk
Und baust den Quelltext (ok, eine Änderung habe ich gemacht) ein. Download

Erst mal vielen Dank! Scheinbar wird hier “Community” tatsächlich recht groß geschrieben. Hoffe, ich kann da bald auch mal was zurückgeben. Allerdings kapiere ich noch nicht so recht die Implementierung.

Von Dir vorgekauter Code als Modul reinnehmen, aktivieren und fertig, scheint ja nicht zu gehen. Da tut sich nichts. Habe gesehen, dass Du in Deinem Code schon “Bitte Feld ausfüllen!!!” eingetragen hast.

Aber STOPP! Bevor Du jetzt weiterhilfst, will ich erst mal versuchen mich reinzuarbeiten/reinzudenken. Denn das mit dem “vorgekauter Code” war ernst gemeint. Ich finde es “undankbar”, wenn Leute nach Hilfe fragen - aber am Ende sich das alles “programmieren zu lassen” statt es selbst zu kapieren.

Also gib mir erst mal die Gelegenheit das alles zu raffen. Scheinbar ist das Foxido-Modul so eine Art Vorlage für Dummies, die sich ein “eigenes Modul” programmieren können (wohl eine Art Framework). Wenn dem so ist, dann fände ich das spannend und will mein Glück versuchen. Nur wenn mir bis heute Nacht mehrere hundert Haare fehlen, erlaube ich mir, mich hier nochmals bzgl. Hilfestellung zu melden!

Bis dahin TOP DANKE!

Weclhe Version benutzt Du denn.

OK, habe bereits geschnallt, wie das “Prinzip” funktioniert. Dass der ganze Modulkram wohl so eine Art “Injection” ist. Man bestimmt im Modul, welche TPL man angehen möchte, dann der darin enthaltene Unterpunkt und fügt dort dann seinen Code-Part ein. Tolles Prinzip!

Auch habe ich verstanden, dass Dein Upload wohl doch ein “bereits gebrauchfertiges” Modul war. Denn alles was ich bisher gelesen habe, ist da alles schon enthalten und es sollte wohl gehen.

Aber funzen tuts dennoch nicht. Verwenden Verson 4.10.7 und als Layout das “flow”, obwohl diese Info wohl für diese Sache irrelevant sein dürfte.

ABER, bei mir erscheint das Eingabefeld nur bei einer Variante(!). Diese Info könnte wichtig sein - da Du in Deinem Beispiel keine Variante hast und das Eingabefeld sofort zur Verfügung steht.

Das mit den Varianten kann es nicht sein. Habe nun einen Testartikel angelegt, ganz ohne Varianten und gleiches Problem. Shit, jetzt fühle ich mich doch noch wie ein “Scriptkiddie”, da ich gerade völligst auf dem Schlauch stehe… :pensive:

Was mich übrigens auch noch wundert. Bei “Installierte Shop-Module” finde ich keinen Eintrag zu diesem Modul, oder ist das richtig so?

Hast es denn richtiig installiert (achte auf Shoproot). Aktiviert? Findest Du das Script im Quellext?

“achte auf Shoproot”
Bin mir unsicher, was Du damit meinst!?

Ja, im Quelltext finde ich Dein “Bitte Feld ausfüllen!!!”

So ist der Part:

$( document ).ready( function() { if( !window.isMobileDevice() ) Flow.initDetailsEvents(); });
$( document ).ready( function() { Flow.initEvents();});
$( '#variants' ).oxArticleVariant();
$.cookie('testing', 'yes'); if(!$.cookie('testing')) $('#cookieNote').hide(); else{ $('#cookieNote').show(); $.cookie('testing', null, -1);}
$('#cookieNote').oxCookieNote();
$('form.js-oxProductForm').on('submit', function(){
		if($("#persistentParam").length && $("#persistentParam").val()  == "")
			{	
			alert ('Bitte Feld ausf�llen!!!');
			return false;

Das scheint doch irgendwie mit den Varianten zusammenzuhängen. Denn in meinem Quellcode fehlt dieser Teil:

  <label for="persistentParam" class="control-label">Beschriftung</label>
                             <input type="text" id="persistentParam" name="persparam[details]" value="" size="35" class="form-control">

Der entsteht wohl erst, wenn man die Variante gewählt hat, zu der es dieses Individualisierfeld gibt!?

WIchtig: Habe jetzt nochmals einen Artikel angelegt, der keine Varianten hat. Damit funktionierte es auch nicht. Aber dann habe ich mal die Funktion “Kunden müssen der Verwendung von Cookies zustimmen” deaktiviert und dann FUNKTIONIERT es (!!!).

Danach bei meinem Varianten-Artikel getestet und es funktioniert wieder nicht (vermutlich wegen o.g. Problem).

Zwischenfazit:

  1. Funktioniert (noch) nicht, wenn “Kunden müssen der Verwendung von Cookies zustimmen” aktiviert ist
  2. Funktioniert (noch) nicht, wenn eine Variante dieses Pflichtfeld benötigt.

Problemn ist nur, dass ich da als Anfänger nun total überfordert bin. :sweat:

Bei Varianten muss ein Refresh rein. Geht jetzt auch:

Lad es Dir nochmal runter. Modul überschreiben und erneut aktivieren.

DANKE schon mal! Frau meckert, dass ich den ganzen Tag (mal wieder) verschwunden bin. Daher werde ich es erst morgen testen und Feedback geben können.

Das kenne ich nur zu gut :slight_smile:

1 Like

Wow, das geht jetzt. Einziges Manko, so lange der Kunde (noch) keine Variante gewählt hat, welche über das Individualisierbar-Feld verfügt, Dein Code dafür sorgt, dass bei Klick auf “In den Warenkorb” gar nichts passiert. Also der Kunde kommt nicht weiter. Bekommt zwar keine Fehlermeldung, kann aber auch nicht bestellen. :confused:

Ich bin in PHP nicht wirklich gewandt. Werde aber mal versuchen das irgendwie nachzulesen. Falls es Deiner Meinung nach jedoch eine Kleinigkeit ist (ich vermute mal Dein “return false” muss unterbunden werden, wenn das Feld “persistentParam” gar nicht erst existiert oder so) wäre ich für jeden weiteren Hinweis dankbar.

Entferne mal (e) + e.preventDefault(); also:

$('form.js-oxProductForm').unbind('submit').bind('submit', function(){
        if($('#persistentParam', this).length && $('#persistentParam', this).val()  == "")
            {    
            $('#persistentParam', this).unbind('submit');
            alert ('Bitte Feld ausfüllen!!!');
            return false;
            }
});

…und es werde Licht! Ich fasse es nicht. Aber es scheint jetzt tatsächlich zu funktionieren. Puah!
Besten Dank an Euch beide!

Das kannst auch entfernen:

$(‘#persistentParam’, this).unbind(‘submit’);