Neu Einsteigerfragen Plugin Entwicklung bzw. Ausgabe im Template

HannesD.

Mitglied
14. März 2021
9
0
Hallo zusammen,

ich will (vorerst) im Template eine SQL-Abfrage machen, um dann das daraus erzeugte Array im Footer darzustellen:

Bootstrap.php
... public function getLatestOrders() { $query = " SELECT ...... "; $latestOrders = Shop::Container()->getDB()->query($query,2); Shop::Smarty() ->assign('latestOrdersS', $latestOrders ); Shop::dbg($latestOrders); ...

footer.tpl
... {getLatestOrders} ...

jetzt erhalte ich folgendes Array:
Bootstrap.php:77 array(3) { [0]=> object(stdClass)#12727 (6) { ["kArtikel"]=> string(5) "53203" ["nAnzahl"]=> string(6) "1.0000" ["cSEO"]=> string(28) "Testartikel" ["cName"]=> string(28) "Testartikel" ["dErstellt"]=> string(19) "2022-08-18 18:25:31" ["cOrt"]=> string(9) "Testort" } ...

Wie kann ich nun auf die einzelnen Arrayinhalte bzw. die darin enthaltenen Objekte per Smarty zugreifen?
Laut Debugger scheint eine Smartyvariable $latestOrdersS als Array mit Inhalt einer StdClass vorhanden zu sein. Ein {$latestOrdersS[0]->kArtikel} wirft jedoch folgende Warnung: "Undefined array key "latestOrdersS""

Vielleicht denke ich auch zu kompliziert. Ich will eigentlich nur eine DB-Abfrage machen und die Ergebnisse im Footer ausgeben. Gibt es da eine geschmeidigere Möglichkeit?
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
6.639
1.583
Berlin
Verwendest du ein Child Template?

Hast du dir im Nova mal die plugin.php angeschaut, so solltest du das machen.

Funktion anmelden. Nutzen und dann die Variable ausgeben.

Mit {$variable|dump} kannst du dir variablen im Template schön anzeigen lassen.
 

HannesD.

Mitglied
14. März 2021
9
0
Verwendest du ein Child Template?

Hast du dir im Nova mal die plugin.php angeschaut, so solltest du das machen.

Funktion anmelden. Nutzen und dann die Variable ausgeben.

Mit {$variable|dump} kannst du dir variablen im Template schön anzeigen lassen.
Vielen Dank für deine rasche Antwort :)

Ja es ist ein Child Template.

Ich weise die Variable vorerst direkt im Bootstrap zu:
Shop::Smarty() ->assign('latestOrdersS', $latestOrders );
(Laut Docs die bevorzugte Methode: https://jtl-devguide.readthedocs.io...gramming_tips/shopclass.html?highlight=assign)

Laut debugger Plugin scheint das auch zu funktionieren:
template1.png

im Footer kann ich trotzdem nicht darauf zugreifen.
{getLatestOrders} {$latestOrdersS|dump}
Gibt NULL zurück:
template2.png
Sicher nur eine Kleinigkeit, ich komme aber echt nicht drauf.
 

HannesD.

Mitglied
14. März 2021
9
0
Okay, ich habe wohl ein Verständnisproblem mit den Smarty functions.

meine Function in der bootstrap.php lautet getLatestOrders()

wenn ich jetzt in der footer.tpl {getLatestOrders} eintrage, werden die Variablen zwar laut Debug Plugin als Smarty-Variablen gelistet, ich bekomme aber in der footer.tpl keinen Zugriff drauf.
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
6.639
1.583
Berlin
also zuerst musst du die Funktion ja registrieren

PHP:
$this->getSmarty()->registerPlugin(Smarty::PLUGIN_FUNCTION, 'getLatestOrders', [$this, 'getLatestOrders']);

und dann hast du die Funktion:

PHP:
public function getLatestOrders($params = array(), &$smarty)    {

    // hier kommt mein code
    $deinIhhalt = "dieses hier ist mein  Inhalt";
    
    if(!empty($params['assign'])) {
        $smarty->assign($params['assign'],$deinInhalt);
    } else {
        return $deinInhalt;
    }
}

so in der Art sollte es schon aussehen und du rufst das dann aus dem Template heraus so auf:

Code:
{getLatestOrders assign='latestOrdersS'}

dann sollte {$latestOrdersS} jetzt meinen Inhalt haben.
 
  • Gefällt mir
Reaktionen: frankw75

HannesD.

Mitglied
14. März 2021
9
0
Hallo css-umsetzung,

vielen Dank, dass du dich des Themas angenommen hast. Leider stehe ich hier noch immer auf dem Schlauch.

Ich habe in der Bootstrap.php des NOVA Child-Templates die Funktion registriert:

PHP:
<?php declare(strict_types=1);
namespace Template\meintemplate;
use Smarty;
use Shop;
/**
 * Class Bootstrap
 * @package Template\meintemplate
 */
class Bootstrap extends \Template\NOVA\Bootstrap
{
    /**
     * @inheritdoc
     */
    public function boot(): void
    {
        parent::boot();
        // whatever you do, always call parent::boot() or delete this method!
        try {
            $this->getSmarty()->registerPlugin(Smarty::PLUGIN_FUNCTION, 'getLatestOrders', [$this, 'getLatestOrders']);
        } catch (\SmartyException $e) {
            throw new \RuntimeException('Problems during smarty instantiation: ' . $e->getMessage());
        }
    }
    protected function registerPlugins(): void
    {
        parent::registerPlugins();
        // whatever you do, always call parent::registerPlugins() or delete this method!
    }
    public function getLatestOrders($params = array(), $smarty)    {
        global $smarty;   
        // hier kommt mein code
        //$deinInhalt = "dieses hier ist mein Inhalt";
        
        $deinInhalt = array(
            "test" => "antwort",
            "test2" => "antwort2",
        );
        if(!empty($params['assign'])) {
            $smarty->assign($params['assign'],$deinInhalt);
        } else {
            return $deinInhalt;
        }
    }


}
Ich habe in der fuction getLatestOrders das $smarty statt &$smarty gesetzt.

Meine meintemplate/layout/footer.tpl endet folgendermaßen:

<br>---<br> {getLatestOrders assign='latestOrdersS'} {$latestOrdersS.test} <br>---<br> {$latestOrdersS.test|dump} </body> </html> {/block}
Ich erhalte keine Ausgabe der Variablen. Das JTL Debug Plugin sagt aber:

Smartyvariablen- latestOrdersS : array (2) $latestOrdersS test : antwort $latestOrdersS.test test2 : antwort2 $latestOrdersS.test2

Folgende PHP (8.0) Warnings erhalte ich im TL Debug Plugin:
Undefined array key "latestOrdersS"
Attempt to read property "value" on null
Trying to access array offset on value of type null

Hätte ich noch Haare, würde ich sie mir gerade ausreißen :-/
 
Ähnliche Themen
Titel Forum Antworten Datum
Neu Neues Plugin: Google Translate / Übersetzer (DSGVO-konform und weitere Features) Plugins für JTL-Shop 1
Neu Händlerbund Plugin lässt sich nicht installieren Shop ver. 5.3.0 Plugins für JTL-Shop 1
Neu Eigene Seiten mit Plugin erstellen Technische Fragen zu Plugins und Templates 0
Neu Neues Plugin: Instagram-Feed Portlet (Als Galerie- oder Slideransicht und weitere Features) + 3x kostenlose Lizenzen Plugins für JTL-Shop 3
Neu 🌟Neues Plugin: Bounce Landingpage Plugins für JTL-Shop 5
Neu 504 Gateway Time-Out nginx bei Plugin-Updates Gelöste Themen in diesem Bereich 10
Neu Unterstützung bei JTL5-Shop-Überarbeitung gesucht - Template/Plugin uvm. Dienstleistung, Jobs und Ähnliches 1
Neu Erledigt - Plugin PayPal Checkout, Update auf 1.4.0, Komplettabsturz Plugins für JTL-Shop 1
Neu Paypal Plugin erzeugt "Quirks Mode" Betrieb / Pflege von JTL-Shop 0
Neu Mail-Versand & Plugin Doku Technische Fragen zu Plugins und Templates 2
Neu Variationen im Shop Auswahl zurücksetzen (Plugin?) Betrieb / Pflege von JTL-Shop 3
Neu NEU ✔️ PDF-Angebots-Plugin für den JTL-Shop 5 - PDF Angebote von der Produktseite oder aus dem Warenkorb heraus generieren B2C / B2B Plugins für JTL-Shop 5
Neu Neues Plugin: Hersteller Slider Portlet (Zentrierungs- oder Schwarz/Weiß-Modus, Responsive Anpassung..) inkl. 5 kostenlosen Lizenzen Plugins für JTL-Shop 4
Neu Plugin KBA Finder Implementierung/Darstellungsänderung Plugins für JTL-Shop 0
Neu Custom Template für Custom Artikel mit Plugin? Plugins für JTL-Shop 0
Neu JTL Connector Plugin Aktivierunf [Fehlermeldung] WooCommerce-Connector 1
Neu Erfahrung mit LS-Cache Plugin Technische Fragen zu Plugins und Templates 10
Neu 🌟Neues Plugin: FRASPY Altersprüfung & IdentitätsCheck Plugins für JTL-Shop 3
Neu 🎉 Neues Plugin: "Versandkosten und Lieferzeit automatisch beziehen - UPS Extension" 🎉 Plugins für JTL-Shop 2
Neu Neues Plugin: Formular Portlet (Drag&Drop Dateiupload by FilePond, Kontakt, Retoure, Reklamation, Gewerbenachweis..) Plugins für JTL-Shop 10
Neu Neues Plugin - Solar Steuerfrei (Mehrwertsteuerbefreiung nach §12 Abs. 3 UStGt für Solar- und Photovoltaikanlagen) Plugins für JTL-Shop 8
Neu Plugin Mail senden - Cc / Bcc Technische Fragen zu Plugins und Templates 4
Neu [Gelöst] IT Rechtskanzlei AGB Plugin Fehler "Plugin wurde nicht gefunden" Plugins für JTL-Shop 4
Neu neues Paypal-Checkout (plugin) verhindert Bestellung - keine Zahlungsarten angezeigt (hängt) Betrieb / Pflege von JTL-Shop 8
Neu Problem mit Plugin-Aktivierung und WooCommerce-Kompatibilität WooCommerce-Connector 2
Neu CiN TrackID-Import Plugin User helfen Usern - Fragen zu JTL-Wawi 12
Neu E-Commerce-Effizienz steigern: Welche Programmiersprache verbessert die JTL-Shop-Entwicklung? Technische Fragen zu Plugins und Templates 1

Ähnliche Themen