Neu Kundenattribute in JTL Shop 4 auslesen

  • Ersteller des Themas Ersteller des Themas Angeal
  • Erstellungsdatum Erstellungsdatum

Angeal

Sehr aktives Mitglied
15. Juni 2017
229
29
Hallo,
ich versuche im JTL Shop 4 die Kundenattribute auszulesen.

Und zwar speziell in der basket.tpl

Allerdings scheine ich dort keinen Zugriff auf die Variable $Kunde zu haben. Zumindest wird sie mir in der Smarty Debug Konsole nicht angezeigt.
Wenn ich mich im Kundenkonto befinde (Mein-Konto), dann steht die Variable $Kunde zur Verfügung.

1. Wie bekomme ich in den Templatedateien der Verzeichnisse productdetails und productlist Zugriff auf die Variable $Kunde und damit auf die Kundenattribute und Kundengruppen?

2. Ich habe mehrere Kundenattribute. Eines davon soll bei der Neukundenregistrierung im Shop abgefragt werden. Die anderen Attribute sind intern und sollen nicht abgefragt werden, da sie nur von uns in der Wawi gepflegt werden.
Ich kann jedoch unter Storefront -> Formulare -> Eigene Formularfelder nur einstellen ob alle Felder für den Kunden sichtbar oder unsichtbar sind. Wie kann ich sicherstellen das nur eines der dort definierten Felder für den Kunden bei der Registrierung sichtbar ist?
 

Angeal

Sehr aktives Mitglied
15. Juni 2017
229
29
Danke. Das hatte ich in der Zwischenzeit schon gefunden 😀

$smarty.session.Kunde->cKundenattribut_arr.ID->cWert

Fehlt noch eine Antwort auf meine zweite Frage. 🙂
 

css-umsetzung

Offizieller Service Partner
SPBanner
6. Juli 2011
8.692
2.725
Berlin
Firma
css-umsetzung
Das müsste dann im Tempate in der Schleife gefiltert werden, anders wird es nicht gehen.
 

Angeal

Sehr aktives Mitglied
15. Juni 2017
229
29
Danke für die Antwort.
In welcher Template Datei finde ich denn die Schleife für die individuellen Felder?

EDIT: Hab die Schleife gefunden. Nun muss ich nur noch herausfinden wie ich das ganze auf bestimmte Feld IDs beschränken kann...

EDIT2: Habs gefunden. Die Funktion ist @array_slice
 
Zuletzt bearbeitet:

Angeal

Sehr aktives Mitglied
15. Juni 2017
229
29
Joa, mit ein bisschen suchen.

Wobei ich mit @array_slice noch nicht ganz zufrieden bin.
Wenn später mehr dazu kommt, dann kann ich es damit nur eingrenzen und nicht gezielt auf bestimmte Werte innerhalb des Arrays zugreifen.

Ne Idee wie ich das kann? Also von dem Array $oKundenfeld_arr zum Beispiel nur den Wert von 0,3,5 ausgeben?

EDIT: Hab es gelöst. Habe nach dem Array angesetzt und einfach die Feld IDs beschränkt.
 
Zuletzt bearbeitet:

Rico Giesler

Offizieller Service Partner
SPBanner
10. Mai 2017
13.247
1.526
Vielleicht magst du noch die vollständige Lösung hier posten für andere User die das ebenfalls suchen!?
 

Angeal

Sehr aktives Mitglied
15. Juni 2017
229
29
Klar, kein Problem.
Zuerst müsst ihr euch überlegen welche Felder ihr darstellen möchtet.
Die entsprechenden IDs findet man in der Shop Datenbank in der Tabelle tkundenfeld (Spalte kKundenfeld)

Die eigentliche Änderung erfolgt in Template in der Datei

/templates/Euer_Template/checkout/inc_billing_address_form.tpl
Sucht hier nach folgender Zeile
{assign var=kKundenfeld value=$oKundenfeld->kKundenfeld}

Darunter fügt man nun eine Abfrage ein mit welcher man auf die entsprechenden Kundenfelder eingrenzt.
Möchte man zum Beispiel nur das Kundenfeld mit der ID 1 darstellen, dann sähe die Abfrage wie folgt aus:

{if ($oKundenfeld->kKundenfeld == "1")}

Wenn man mehrere Felder ausgeben möchte, zum Beispiel die IDs 1 und 3, dann sähe es folgendermaßen aus:

{if ($oKundenfeld->kKundenfeld == "1") || ($oKundenfeld->kKundenfeld == "3")}

Das ganze kann man beliebig erweitern.

Dann schaut ihr etwas weiter unten nach dem Tag {/foreach} und fügt danach ein

{/if}

Damit wird die Abfrage geschlossen.

Wenn man diese Änderung in einem Child Template vornimmt, dann ist das ganze meiner Meinung nach updatesicher.
Das ganze ist besonders dann praktisch, wenn man bestimmte Kundenattribute im Shop benötigt, jedoch mit diesen eigentlich nur intern arbeiten möchte, sprich dem Kunden diese nicht ausfüllen oder anzeigen lassen möchte.

Verbesserungsvorschlag an JTL:
Vielleicht wäre es vorteilhaft für genau diese Fälle im JTL Shop unter Storefront -> Eigene Formularfelder ein zusätzliches Feld abzufragen mit welchem man einzelne Felder sichtbar oder unsichtbar schalten kann.
 
  • Gefällt mir
Reaktionen: Rico Giesler

mona

Sehr aktives Mitglied
26. April 2016
308
25
Hallo

Ist zwar schon etwas her.....trotzdem interessiert es mich sehr!!!

So wie Du es oben beschreibst, hast Du dies in die Abfrage in die Datei inc_billing_address.tpl eingefügt, wolltest es aber unter productlist und productdetails einfügen? Wie macht man das denn in einer anderen Seite?
Im inc_billing_address ist das ja schon drin. Ich stehe wohl seeehhhrrr auf dem Schlauch.
Danke & Gruss
mona
 

Ähnliche Themen