Neu Wie Smarty Variable aus Plugin heraus verändern

John

Sehr aktives Mitglied
3. März 2012
2.592
496
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: 25

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
6.639
1.583
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
2.592
496
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
6.639
1.583
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
2.592
496
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
6.639
1.583
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
2.592
496
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: 11

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
6.639
1.583
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
2.592
496
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
6.639
1.583
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
Workflow Manuell HTML Request wie Server Antwort verarbeiten JTL-Wawi 1.7 0
Trackinglink enthält Hashtag - wie eingeben? JTL-Wawi 1.8 0
Neu Wie setzt Ihr eure Dev/Staging Umgebungen auf? Betrieb / Pflege von JTL-Shop 0
Neu Fehler: Sonderpreis falsch formatiert, wird nicht importiert; obwohl importiert genau wie exportiert User helfen Usern - Fragen zu JTL-Wawi 0
Neu Wie erstelle ich das richtige Layout für handy, Desktop etc Allgemeine Fragen zu JTL-Shop 0
Neu Wie gut ist die Datenbanksynchronisation? JTL-Wawi - Ideen, Lob und Kritik 4
Neu Wie kann ich im JTL-Shop einen Abwesenheitshinweis einstellen? Allgemeine Fragen zu JTL-Shop 1
Neu Artikelpreise Verknüpfen (ähnlich wie Stücklisten) User helfen Usern - Fragen zu JTL-Wawi 0
Neu Wie kann ich eine Inventurliste als Excel- oder csv-Datei erstellen? Gelöste Themen in diesem Bereich 3
Wie kann ich eine Benachrichtigung bei einem Wareneingang auslösen mit einer Mail über die Artikel die eingebucht wurden JTL-Wawi 1.8 2
Neu Conrad anbindung an JTL / eazy auction, aber wie? User helfen Usern - Fragen zu JTL-Wawi 4
[JTL-WAWI API] Wie funktioniert die Item-Image API? JTL-Wawi 1.8 0
Neu Wie kann ich die vergebene Coupons sehen. Welche Kunde welchen Copoun Allgemeine Fragen zu JTL-Shop 0
Neu Wie kann ich Alt-Texte für Bilder an Shopify senden? Shopify-Connector 2
Neu Wawi Artikelattribut = externer Link wie am besten darstellen beim Artikel? Allgemeine Fragen zu JTL-Shop 0
Neu Expressbearbeitung-Gebühr. Wie realisieren? Allgemeine Fragen zu JTL-Shop 1
Zusatzkosten wie Zölle JTL-Wawi 1.7 2
Neu Wie Wawi (Kundendaten) zurücksetzen User helfen Usern - Fragen zu JTL-Wawi 10
Neu [Umfrage] - Was hälst du von Updates - Innovativ oder aufwendig? Wie kann es besser gehen? Installation / Updates von JTL-Shop 0
Neu Wie Lizenz kündigen User helfen Usern - Fragen zu JTL-Wawi 13
Neu Wie funktioniert Individualproduktion / Einzelfertigung JTL-Plan&Produce - Ideen, Lob und Kritik 4
Neu Wie kann ich nicht mehr vorhandene ausländische USt-ID löschen? User helfen Usern - Fragen zu JTL-Wawi 1
Neu Kategoriebilder werden immer mit großem leeren Platz (wie für das 2.Bild) angezeigt Allgemeine Fragen zu JTL-Shop 6
Zusatzkosten wie Zölle JTL-Wawi 1.7 4
Neu 2 Mandanten 2 Datenbanken wie läuft es mim POS User helfen Usern 0
Neu Wie bekomme ich Statistik "Kunde/Artikelnummer/Menge/Netto-VK" auf Basis Rechnungspositionen? Arbeitsabläufe in JTL-Wawi 0
SQL ifGetPrice liefert nur netto Preise, wie komme ich an Brutto ran? JTL-Wawi 1.7 4
Neu Wie importiere ich die Zahlungs-ID für meine eigene benutzerdefinierte Zahlung, wie es andere Anbieter wie Paypal und Molli Payments in Shopware 6? Onlineshop-Anbindung 0
Neu Wie macht ihr das? Ebay Verkäufe automatisieren. Arbeitsabläufe in JTL-Wawi 3
Firmen- und E-Mail Einstellungen: Wie einrichten, wenn Firmenname (Impressum) anders ist als Shopname/Marke? JTL-Wawi 1.8 0
In Bearbeitung JTL POS, Bargeldentnahme zu Datev, wie? Allgemeine Fragen zu JTL-POS 1
Neu Smarty-Fehler im Logfile JTL-Shop - Fehler und Bugs 1
Neu Smarty Block in Productdetails Templates für JTL-Shop 0
Neu Consent Status per Smarty Var abfragen Technische Fragen zu Plugins und Templates 2
Neu Bestellbestätigung email Variable Hinweistext für Downloadartikel Allgemeine Fragen zu JTL-Shop 3
Neu Feld Zahlung Anmerkung Variable? User helfen Usern - Fragen zu JTL-Wawi 1
Neu Vorlage hat im Standard die Variable SalesQuotationPositionConfiguration.Name die nicht funktioniert Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 0
Neu Variable für Zahlungsart Gelöste Themen in diesem Bereich 4
Neu Tracking-Link-Variable für Sendungsreferenz - e-mil vorlage jtl-shop JTL-Shop - Ideen, Lob und Kritik 0
In Bearbeitung $discount$ Variable in den Tagesabschluss einfügen Allgemeine Fragen zu JTL-POS 3
Neu Variable übermittelt nicht die korrekten Angaben Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 1
Neu Block Name= Selector und Modifikator Variable Technische Fragen zu Plugins und Templates 1

Ähnliche Themen