Neu Wie Smarty Variable aus Plugin heraus verändern

John

Sehr aktives Mitglied
3. März 2012
3.515
811
Berlin
Hallo,

ich bin eher in der Windwos Welt zu Hause, versuche aber meine ersten Schritte im JTL Plugin.

Ich möchte die Sarty Variable $showMatrix, die auf der Artikeldetailseite steuert, ob Varko Artikel mit Auswahl oder Matrix angezeigt werden aus einem Plugin heraus steuern.
Ziel des ganzen: Bestimmte Kundegruppen sollen im Shop Matrix sehen, Standardkunden nicht.

Im Plugin habe ich

Code:
class Bootstrap extends Bootstrapper
{
    /**
     * @inheritDoc
     */
    public function boot(Dispatcher $dispatcher)
    {
        parent::boot($dispatcher);
        if (!Shop::isFrontend()) {
            return;
        }
        $dispatcher->listen('shop.hook.' . \HOOK_SMARTY_INC, function () {
            Shop::Smarty()->assign('showMatrix ', true);
        });
    }
}

Aber leider weise ich damit $showMatrix nicht true zu, sondern erzeuge eine zweite Variable mit gleichem Namen?
So sieht es zumindest im JTL-Debug aus.

Hat jemand einen Anfänger-Tip für mich?

John
 

Anhänge

  • smarty.png
    smarty.png
    21 KB · Aufrufe: 33

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
7.560
2.093
Berlin
Die erste Frage die sich stellt ist:
warum nutzt du nicht die vorhandene Möglichkeit über das bereitgestellte Funktionsattribut "warenkorbmatrix" das für Artikel bereitgestellt wird?

Du machst das da zu früh, weil der Hook HOOK_ARTIKEL_PAGE das überschreiben würde.

Die Variable showMatrix wird über den ProductController gesetzt, du müsstest das also mit dem Hook HOOK_ARTIKEL_PAGE setzen
 

John

Sehr aktives Mitglied
3. März 2012
3.515
811
Berlin
Das Funktionsattribut kann ich nicht nutzen, weil auf Basis von Kundengruppen entschieden werden soll.

Unsere Endkunden kaufen i.d.R nur eine Größe und erwarten Auswahl der Variation.
Unsere Händler kaufen in der Regel je Vater eine Palette Kinder und sind dabei per Matrix einfacher und übersichtlicher bedient.

Leide rmacht mein Code auf dem Hook HOOK_ARTIKEL_PAGE genau das gleiche.
Es wird wieder eine zweite Variable mit dem Namen showMatrix erzeut aber keine Matrix ausgegeben. Sie Screenshot im ersten Post.

Ist denn Shop::Smarty()->assign('showMatrix ', true); überhaupt korrekt, um eine bestehende Variable mit einem anderen Wert zu belegen? Oder legt Assign grundsätzlich eine zweite Variable an?
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
7.560
2.093
Berlin
Das passiert mit dem Hook wenn deine Variable ohne leerzeichen übergeben wird im HOOK_ARTIKEL_PAGE

Shop::Smarty()->assign('showMatrix', true);

CSS-RECHNER-info-2023-02-04-002[1].jpg
 
  • Gefällt mir
Reaktionen: John

John

Sehr aktives Mitglied
3. März 2012
3.515
811
Berlin
Och nö, ja, klar. Ich merke schon, Wochenende naht.

Letztes für heute: Wieso kann ich so nicht die Kundegruppe abfragen?

Code:
            if ($Artikel->Preise->kKundengruppe == 2) {
                Shop::Smarty()->assign('showMatrix', true);
            return;

$Artikel->Preise->kKundengruppe steht laut JTL Debugger zu Verfügung aber in meinem Code ist sie immer == 0

Für mich ist das ganze Ding ein noch nicht zu durchblickender Haufen...wie kommt man vom PHP ins Smarty und zurück.
Ich merke schon, "mal eben zwischdurch reinschnuppern" ist schwierig ;)
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
7.560
2.093
Berlin
Die aktuelle Kundengruppe steht unter anderem in der SESSION
$_SESSION['Kundengruppe']

oder im Template z.B.: $smarty.session.kundengruppe

Und ja, einfach mal so ich schaue es kurz an und mache richtig viel Action geht nicht, dazu sollte man sich etwas intensiver mit der Materie Beschäftigen.

Das Smarty ist am Ende nur das Framework was aus meinen definierten Variablen und ein wenig HTML etwas zaubert, die Programmierung findet auf PHP Ebene statt.
https://jtl-devguide.readthedocs.io/projects/jtl-shop/de/latest/shop_plugins/index.html
 

John

Sehr aktives Mitglied
3. März 2012
3.515
811
Berlin
Das mit der Matrix habe ich und der Abfrage der Kundengruppe klappt sowie aber bei der Lagerbestandsanzeige bekomme ich es noch nicht hin.

Ich möchte aus meine Plugin eine Smarty Variable überschreiben, die sich im verschachtelten Array Einstellungen.artikeldetails.artikel_lagerbestandsanzeige befindet.

Aber mit

Code:
Shop::Smarty()->assign('Einstellungen.artikeldetails.artikel_lagerbestandsanzeige', 'ampel');

komme ich da nicht ran.

Wie geht das?
 

Anhänge

  • SmartyZugriff.png
    SmartyZugriff.png
    10,9 KB · Aufrufe: 13

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
7.560
2.093
Berlin
Zum einen macht man so etwas nicht, zum anderen kannst du nicht irgendwelche Arrays einfach über ein assign ändern.

Du müsstest das einer Smarty Funktion übergeben die das dann für dich macht.
 

John

Sehr aktives Mitglied
3. März 2012
3.515
811
Berlin
Konkret möchte ich im nun im zweiten Schritt für Endkunden den Lagerbestand als Ampel anzeigen, für Händler aber die genau Menge ausgeben.

Problem: JTL setzt nicht wie im Beispiel von Dir genannten ProductController die Variable $showMatrix und prüft dann im Weiteren nur noch auf diese Variable.

Statt dessen wird in zig verschiedenen tpl Files immer wieder dies hier gemacht

Code:
{assign var=anzeige value=$Einstellungen.artikeldetails.artikel_lagerbestandsanzeige}

und dann nur lokal in dem jeweilen tpl File auf $anzeige vezweigt.

Die Variable $anzeige im HOOK_ARTIKEL_PAGE zu überschreiben bingt also nichts, weil JTL sie in der jeweiligen tpl Datei wieder neu aus dem Array $Einstellungen.artikeldetails einliest.

Daher war meine Idee, in diesem Array selbst zu ändern, um auf alle tpl Dateien wirken zu können. Oder ist der Ansatz doof?
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
7.560
2.093
Berlin
Du musst das ganze Shop::Smarty()->assign('Einstellungen'....) nehmen und nicht nur den array den du ändern möchtest.
also $Einstellungen ändern und dann komplett wieder zurückspielen.
 
Ähnliche Themen
Titel Forum Antworten Datum
Neu Wie vermeide ich das die Schrift und das Grid-Layout sich verschiebt Templates für JTL-Shop 2
Neu Individuelle Preise ans Kassensystem übertragen – wie geht das? HILFE DRINGEND Allgemeine Fragen zu JTL-POS 0
Neu Verpackungseinheiten und Mindestbestellmengen wie eingeben? (Auch via Ameise) Arbeitsabläufe in JTL-Wawi 0
Neu Wie kann man in den Vorlagen die Mengenanzeige von "STK" in "Menge" oder "x" ändern ! User helfen Usern - Fragen zu JTL-Wawi 2
Neu Wie läuft eine Bestellung ab und wie bekomme ich die Aufträge aus dem Shop in die Wawi übertragen? Betrieb / Pflege von JTL-Shop 0
JTL-Wawi 1.9.7.1 – Wie kann man "Suchbegriffe" für Kaufland.de anlegen? JTL-Wawi 1.9 0
Neu wie kann ich sonderpreise über Ameise deaktivieren? User helfen Usern - Fragen zu JTL-Wawi 2
Neu Vorbestellbarkeit/sofort bestellbar – wie lässt sich das sinnvoll steuern? Allgemeine Fragen zu JTL-Shop 15
Neu Wie kann ich es so einstellen, dass die Verfügbarkeit schon in der Suche und der Kategorieübersicht angezeigt wird, anstatt nur auf der Artikelseite? Allgemeine Fragen zu JTL-Shop 0
Neu Wie kann man PayPal-Kunden eine bestimmte Debitorennummer zuweisen? JTL Ameise - Eigene Exporte 8
Neu Frage zur ersten Seite des Nova-Template (Demoseite) und wie man diese abschaltet Allgemeine Fragen zu JTL-Shop 2
Neu Warum wird im Shop 5 der Lieferanten-Artikelname anstatt WAWI-Artikelname angezeigt? Wie kann ich das ändern? Betrieb / Pflege von JTL-Shop 1
Neu Wie kann ich dem Kunden eine Kopie des 80 mm breiten Kassenbons im DIN A4 Format zur Verfügung stellen? Fragen rund um LS-POS 11
Produktdaten sind online - Wie jetzt aus JTL Angebotsdaten erstellen? kaufland.de - Anbindung (SCX) 0
Neu Wie Auftragsstatus ändern von "ohne Versand abgeschlossen" auf "Abgeschlossen"? Arbeitsabläufe in JTL-Wawi 4
Neu Wie rufe ich Artikelbilder aus der Wawi im PowerBI Report Builder ab? User helfen Usern - Fragen zu JTL-Wawi 2
Neu Google-Export: wie Artikel als Kind- oder Vaterartikel markieren? Plugins für JTL-Shop 0
Neu Wie Attribute/Merkmale eines Artikels abfragen? Schnittstellen Import / Export 1
Neu Datev Debitoren Export - Wie export man Stammdaten zu den Bewegungsdaten User helfen Usern - Fragen zu JTL-Wawi 0
Wichtig! Wie kann ich bei ABOs die VKs und EKs überwachen / aktualisieren? JTL-Wawi 1.9 9
Neu Wie kann man Produkte im Woocommerce über JTL auf "Entwurf" setzen? User helfen Usern - Fragen zu JTL-Wawi 1
Neu Wie Amazon FBA Businesspreise via eA übertragen Amazon-Anbindung - Fehler und Bugs 1
Wie wird der Sonderpreis auf die Kindartikel übertragen? JTL-Wawi 1.9 4
Neu Dot Liquid -wie 2 Befehle verknüpfen- User helfen Usern - Fragen zu JTL-Wawi 8
In Diskussion Wie lässt sich ein Freiposition im Auftrag per Workflow löschen? JTL-Workflows - Fehler und Bugs 4
Beantwortet "PDFs direkt an Rechnung speichern" . .. kann mir hier jemand sagen wo, oder wie die abgelegt werden? User helfen Usern - Fragen zu JTL-Wawi 2
Neu Wie benutzt man einen Artikelzustand ohne Bestandsführung? Arbeitsabläufe in JTL-Wawi 2
Neu Smarty, Herstellungsland Betrieb / Pflege von JTL-Shop 3
Shop::Smarty()->assign im Shop nutzen Upgrade JTL-Shop4 auf JTL-Shop5 6
Neu Artikeletiketten • Variable Artikel.Bezeichnung funktioniert nicht, liefert kein Output Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 1
Neu In Workflow Variable definieren und nachträglich den Wert verändern? User helfen Usern - Fragen zu JTL-Wawi 6

Ähnliche Themen