Neu Wie Smarty Variable aus Plugin heraus verändern

John

Sehr aktives Mitglied
3. März 2012
4.144
1.055
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: 42

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
8.597
2.672
Berlin
Firma
css-umsetzung
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
4.144
1.055
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
8.597
2.672
Berlin
Firma
css-umsetzung
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
4.144
1.055
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
8.597
2.672
Berlin
Firma
css-umsetzung
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
4.144
1.055
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: 15

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
8.597
2.672
Berlin
Firma
css-umsetzung
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
4.144
1.055
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
8.597
2.672
Berlin
Firma
css-umsetzung
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 Webinar „Shipping 2.0“ am Dienstag, 14.07.2026 – über 500 Anmeldungen, was es Neues gibt und wie ihr das Beste daraus macht News, Events und Umfragen 6
Neu Amazon VCS Lite: Wie erstellt ihr unter Wawi 1.11 eine vollständige IGL-/ZM-Liste über alle Verkaufskanäle? User helfen Usern - Fragen zu JTL-Wawi 0
Neu Wie ändere ich das vorausgewählte Lager bei Bestellungen? User helfen Usern - Fragen zu JTL-Wawi 2
Wie übernehme ich Artikelnamen von JTL in den neuen Kaufland Niederlande-Verkaufskanal? JTL-Wawi 1.11 1
Neu Wie stelle ich Retouren in JTL für DPD ein? JTL-ShippingLabels - Ideen, Lob und Kritik 1
Neu Wie übertragt ihr Kurzbeschreibungen nach Shopify? Shopify-Connector 5
Neu Neuer Kundencenter Account. Wie verhält sich POS damit? Allgemeine Fragen zu JTL-POS 1
Wie lange braucht ihr aktuell für die Anlage eines neuen Artikels? JTL-Wawi App 3
Neu PayPal Transaktionsversuche – Wie hoch sind eure Ablehnungsquoten? Allgemeine Fragen zu JTL-Shop 1
Neu Helfen Lösungen wie Unicorn wirklich, um die teuren Preise bei JTL zu vermeiden? Amazon-Anbindung - Ideen, Lob und Kritik 1
APP - Wie Dashboard löschen? JTL-Wawi App 1
Neu Wie soll man Weiterleitungen einrichten Exat oder GET Allgemeine Fragen zu JTL-Shop 0
Für Ihren SQL-Server wurde ein Service Pack zur Verfügung gestellt - nö, gelogen, wie kriege ich die Meldung weg? JTL-Wawi 1.11 15
Mindestabnahme Lieferant - keine Kommazahlen erlaubt - Wie gehts? JTL-Wawi 1.11 0
Wie ist euer aktuelles Fazit zur 2.02? JTL-Wawi 2.0 14
Neu XRechnung, ZUGFeRD, Was hängt wie zusammen? User helfen Usern - Fragen zu JTL-Wawi 4
Neu Aktuellste unproblematische WAWI-Version finden - wie ? JTL-Wawi - Ideen, Lob und Kritik 6
Neu Bestände in-house und beim Lieferanten + Proforma-Rechnungen, wie? Arbeitsabläufe in JTL-Wawi 3
Neu Wie aktiviere ich den richtigen EK bei freiem Wareneingang? Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 0
Neu Streichpreise oder Rabatte für Staffelpreise von einem Artikel einrichten? Wie am Besten? JTL-Wawi 1.6 0
Neu POS im Kundencenter buchen, aber wie und wo? Allgemeine Fragen zu JTL-POS 2
Neu DotLiquide Variable Voraussichtliches Lieferdatum auf Rechnung User helfen Usern - Fragen zu JTL-Wawi 1
[AKZ] Anbieterkennzeichnung Variable anpassen Einrichtung JTL-Shop5 5

Ähnliche Themen