Globale Variable aus Plugin

Liebe Shopware-Community! Ich wende mich an euch, weil ich eure Hilfe bezüglich meines gekauften “Ticketsystem” und “Bonussystem” Plugins benötige. Ich passe derzeit mein Template an das CI an. Diesbezüglich möchte ich gerne zwei Variablen: Eine die in der Ticketsystem-Bootstrap.php enthalten ist und die andere die im Bonus-System enthalten ist, global zur Verfügung stellen. Mein Ziel ist es, dass ich meinen Endkunden und Partnern im Headerbereich (bei mir stehen die Smarty Variablen direkt in der frontend/index/index.tpl) folgendes in Echtzeit anzeigen möchte: [list] [*] die aktuelle Artikelanzahl auf der Wunschliste (Merkzettel),[/*] [*] Anzahl der offenen/in Bearbeitung befindeten Support-Anfragen über das Ticketsystem,[/*] [*] und Anzahl der gesammelten Bonuspunkte (Bonus-System)[/*][/list] Beispielsweise lese ich die Anzahl der Artikel für die Wunschliste (Merkzettel) mit folgendem Befehl über mein eigens entwickeltes Plugin aus: $view-\>wunschliste\_anzahl = Shopware()-\>Modules()-\>Basket()-\>sCountNotes(); Die Ausgabe in der index.tpl erfolgt dann somit mit: {$wunschliste_anzahl} Das funktioniert auch prima :thumbup: Jetzt möchte ich auch die Anzahl der Tickets, die den Status “offen” “in Bearbeitung” “Bearbeitet” haben auslesen bzw. ausgeben lassen sowie die aktuell gesammelten und alle bisher gesammelten Bonuspunkte: $view-\>ticket\_anzahl = Shopware() .... $view-\>ticketItem.status = Shopware() .... $view-\>bonuspunkte\_aktuell = Shopware() .... $view-\>bonuspunkte\_alle = Shopware() .... Nur fehlt mir hier leider das KnowHow. [size=200][color=green]Ich kenne hier das Ziel: Shopware()->Modules()->XXX für das Ticket-System und Bonus-System nicht genau[/color][/size] Die Logik für das Ticket möchte ich auf so eine ähnliche Art aufbauen: while($tickets\_gezaehlt \< $ticket\_anzahl) { if ($ticketItem.status == "offen" || $ticketItem.status == "in Bearbeitung” || $ticketItem.status == "Bearbeitet”) { $tickets\_gezaehlt++; } } Ausgegeben soll die Anzahl der Tickets in der index.tpl einfach mit: {$tickets_gezaehlt} und die aktuellen Bonuspunkte mit: {$bonuspunkte_aktuell} und alle bisher gesammelten Bonuspunkte mit: {$bonuspunkte_alle} Könnt Ihr mir [size=200][color=green]diesbezüglich[/color][/size] helfen? Vielen lieben Dank für eure Mühe und Rückmeldung. Freundliche Grüße, Manuel

Da es sich bei deinen Plugins um verschlüsselte Premium Plugins handelt, die sich nicht in Shopware()->Modules() anmelden (übrigens nur für die core Klassen), musst du die Daten selber manuell aus der DB lesen. Viele Grüße

1 „Gefällt mir“

Vielen lieben Dank für die rasche Antwort. Ich habe so etwas unter Shopware leider noch nicht programmiert. Gibt es eine Anleitung, wie so eine Aufrufzeile funktionieren bzw. aussehen könnte? Liebe Grüße, Manuel

Was genau möchtest du wissen? Wie die SQL Abfragen auszusehen haben? Ansonsten für Einsteiger: schau dir mal das wiki an. Da findest du jede Menge Tutorials. Viele Grüße

Die Variablem im Bonussystem konnte ich nun erfolgreich wie unten aufgeführt problemlos auflisten und darstellen. :thumbup: [list] [*] Die aktuell gesammelten Bonuspunkte, während Artikel in den Warenkorb gelegt werden, können mit: {$sBonusSystem.points.earning} ausgegeben werden.[/*] [*] Alle bereits gesammelten Bonuspunkte, durch bereits abgeschlossene Bestellungen, können mit: {$sBonusSystem.points.remaining} ausgegeben werden.[/*][/list] Die Variablen im Ticketsystem {$ticketItem.id} {$ticketItem.status} kann ich leider noch nicht global abrufen. Sie werden erst geladen bzw. befüllt mit Inhalten, wenn ich die Seite /ticket/listing aufrufe. :frowning: Habt Ihr noch eine einfache Idee oder Möglichkeit, wie ich die Variablen aus der /ticket/listing.tpl auslesen kann?

Liebe Leute! Ich habe es geschafft. :thumbup: Obwohl ich eigentlich auf die Bonuspunkte Variablen komme, lese ich sie jedoch auch gleich mit den aktuellen Ticket-Status pro UserID aus der Datenbank aus. Falls noch jemand die Variablen global benötigt, ich gehe wie folgt vor: Zu aller erstes brauche ich die Benutzer ID für die eindeutige Zuweisung der Ticket-Nachrichten in der Datenbank: $benutzerid = intval(Shopware()-\>Session()-\>sUserId); Aus der Datenbank liest man aus der Tabelle: s_ticket_support die statusID unter Berücksichtigung der userID aus: $sql\_statusID = "SELECT statusID FROM s\_ticket\_support WHERE userID = $benutzerid"; $user\_statusID = Shopware()-\>Db()-\>fetchOne($sql\_statusID); $view-\>user\_statusID = Shopware()-\>Db()-\>fetchOne($sql\_statusID); Somit hat man den Status, der letzten aktuellen Nachricht, des Users. Die Ausgabe im Template erfolgt dann via: {$user\_statusID} Nun möchte ich aber den Status aller Nachrichten des jeweiligen Users anzeigen, die statusID offen (1), in Bearbeitung (2), Bearbeitet (3) (in Datenbank) aufweisen: $sql\_maxticketanzahl = "SELECT COUNT(\*) FROM s\_ticket\_support WHERE userID = $benutzerid AND (statusID = 1 OR statusID = 2 OR statusID = 3)"; $user\_maxticketanzahl = Shopware()-\>Db()-\>fetchOne($sql\_maxticketanzahl); $view-\>user\_maxticketanzahl = Shopware()-\>Db()-\>fetchOne($sql\_maxticketanzahl); Die Ausgabe und Anzeige erfolgt somit wieder erfolgreich mit: {$user\_maxticketanzahl} Viel spaß beim Nachbasteln :slight_smile: Liebe Grüße, Manuel