Neu Wie Smarty Variable aus Plugin heraus verändern

John

Sehr aktives Mitglied
3. März 2012
3.978
983
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: 41

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
8.296
2.489
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
3.978
983
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.296
2.489
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
3.978
983
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.296
2.489
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
3.978
983
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.296
2.489
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
3.978
983
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.296
2.489
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 Wie Ebaypreise anheben (incl. Varianten)? eBay-Anbindung - Fehler und Bugs 0
Neu Produktverkauf von max. 24 Stück am Tag - wie umsetzen ? User helfen Usern - Fragen zu JTL-Wawi 1
Neu wie Wawi eigene Felder (Kunden) an Shop DB übertragen? User helfen Usern - Fragen zu JTL-Wawi 3
Neu Workflow funktioniert nicht so wie gewollt :) User helfen Usern - Fragen zu JTL-Wawi 1
Webinar: Strategien der E-Commerce-Leader - wie unterschiedliche Produktrollen Umsatz und Marge steigern Messen, Stammtische und interessante Events 0
Meine Bestellungen sind in einer Pickliste "verschollen" - WIE bekomme ich sie in die Wawi-Pickliste??? JTL-Wawi 1.11 2
Artikel Z besteht aus den Positionen A, B und C mit unterschiedlichen Steuersätzen. Wie im Angebot, Auftrag, Rechnung richtig dargestellen ? JTL-Wawi 1.11 4
Neu Wie wird die Seite "suche nach:" erzeugt? Allgemeine Fragen zu JTL-Shop 4
Neu Mit Ameise nur einen Artikel & die dazu gehörenden Varianten exportieren - wie? Schnittstellen Import / Export 3
Neu hood.de - Wie kann ich Dateien (z.B. Sicherheitsdatenblatt) automatisch einbinden? Einrichtung und Installation von JTL-eazyAuction 1
Neu hood.de - Wie funktionieren Artikelvarianten? Einrichtung und Installation von JTL-eazyAuction 0
Neu Einkauf organisieren, wenn Lager ohne Lagerbestand - wie macht Ihr das? Arbeitsabläufe in JTL-Wawi 0
Neu Wie lässt sich der Lieferstatus von Aufträgen per SQL abfragen? User helfen Usern - Fragen zu JTL-Wawi 8
Neu Smarty für "im Zulauf" und "auf Einkaufsliste"? Allgemeine Fragen zu JTL-Shop 7
Neu Wo verändere ich die Variable #firma.name# die in Mail-Vorlagen zu finden ist? Allgemeine Fragen zu JTL-Shop 2
Neu Variable für Maßeinheit gesucht Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 1

Ähnliche Themen