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
5.230
1.001
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
5.230
1.001
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 Lilfoot Idealo Plugin - Fehler Versandkosten Technische Fragen zu Plugins und Templates 0
Neu Komische Migrationsdateien im Plugin Manager Plugins für JTL-Shop 2
Neu Plugin lassen sich im neuen 5er Shop nicht installieren über meine Käufe Upgrade JTL-Shop4 auf JTL-Shop5 5
Neu Plugin: JTL Google reCaptcha v2 - Wie erstellt man die Schlüssel dafür? Plugins für JTL-Shop 0
Neu Eigene Icons/Schaltflächen im Plugin Technische Fragen zu Plugins und Templates 1
Neu Eigene Einstellungen via Plugin hinterlegen und im Template auswerten Technische Fragen zu Plugins und Templates 3
Neu Fehler: "Verzeichnis konnte nicht erstellt werden: plugins/jtl_header/ - Unable to load private key." bei Plugin Installation Technische Fragen zu Plugins und Templates 12
Neu Plugin Adventskalender Shop 5 Allgemeine Fragen zu JTL-Shop 10
Neu ERROR: Der WooCommerce JTL-Connector funktioniert nicht mit dem Plugin Shield Security WooCommerce-Connector 0
Neu Shop 5.15 - Altes PayPal Plugin (nicht PP Checkout) woher bekommen ? Plugins für JTL-Shop 4
Neu Plugin Entwicklung - Plugin aktiv? Debugging Technische Fragen zu Plugins und Templates 3
Neu Plugin-Verschlüsselung/Encoding Technische Fragen zu Plugins und Templates 5
Neu Plugin für Trusted Shops Excellence Shop5 Plugins für JTL-Shop 1
Nach Domainumstellung Plugin Manager nicht mehr erreichbar Einrichtung JTL-Shop5 1
Neu Formulareingaben / Formel ausrechnen - Plugin? Plugins für JTL-Shop 0
Neu JTL Header Plugin: Weitere Grafik/Badge neben dem Logo platzieren, wie? Templates für JTL-Shop 4
Neu Plugin: "Auswahlassistent" by NETZdinge.de Plugins für JTL-Shop 1
Neu JTL-Header Plugin - Mehrzeilige Navbar mit fester Boxgröße Templates für JTL-Shop 1
Neu Rich Text Editor fehlt wird nicht angezeigt, benötigt man ein Plugin? Allgemeine Fragen zu JTL-Shop 1
Neu DHL Plugin und Vorkasse JTL-Shop - Ideen, Lob und Kritik 0
Beantwortet Nicht benötigtes Plugin entfernen? Plugins für JTL-Shop 3
Neu Neues JTL-Shop5 Plugin "Click&Collect" by CIN-GmbH 📢 Plugins für JTL-Shop 1
Neu Einrichtung Unzer Plugin unter JTL-Shop 5 Plugins für JTL-Shop 0
Neu Pflichtinfo für Bestandskunden: Support & Entwicklung von DHL Versenden in JTL-Shipping JTL-ShippingLabels - Ideen, Lob und Kritik 19
Neu Core-Connector 5 Doku, Mac-Entwicklung Allgemeines zu den JTL-Connectoren 0

Ähnliche Themen