Neu Eigene Funktion in NOVA schreiben

wespread.online

Gut bekanntes Mitglied
29. September 2020
124
12
Also wenn ich laut der Dokumentation: https://docs.jtl-shop.de/de/latest/...cks.html#eigene-smarty-funktionen-integrieren

im Child-Template in Bootstrap.php folgende Funktion schreibe:

PHP:
class Bootstrap extends \Template\NOVA\Bootstrap
{
    public function getPI($precision)
    {
        $iterator = 1;
        $factor   = -1;
        $nenner   = 3;

        for ($i = 0; $i < $precision; $i++) {
            $iterator = $iterator + $factor / $nenner;
            $factor   *= -1;
            $nenner   += 2;
        }

        return $iterator * 4;
    }
}

und in Template nutze:
PHP:
{getPi(12)}

dann bekomme ich folgende Fehler:

"{getPi(12)}" unknown function 'getPi'
 

FMoche

Moderator
Mitarbeiter
15. Dezember 2014
1.359
340
Halle (Saale)
Kann es sein, dass du den Artikel nicht ganz zu Ende gelesen hast? Der Teil mit
Code:
$this->getSmarty()->registerPlugin(Smarty::PLUGIN_FUNCTION, 'getPI', [$this, 'getPI']);

fehlt in deinem Codebeispiel jedenfalls und die Fehlermeldung lässt darauf schließen, dass die Smarty-Funktion nicht registriert wurde.
 

wespread.online

Gut bekanntes Mitglied
29. September 2020
124
12
Ich bekomme trotzdem ein Fehler, genau bei dieser Zeile:

Fatal error: Uncaught Error: Class 'Template\NOVAChild\Smarty' not found in / shop/templates/NOVAChild/Bootstrap.php:14 Stack trace: #0 /shop/includes/src/Smarty/JTLSmarty.php(126): Template\NOVAChild\Bootstrap->boot() #1 /shop/includes/src/Smarty/JTLSmarty.php(76): JTL\Smarty\JTLSmarty->initTemplate() #2 /shop/includes/src/Smarty/JTLSmarty.php(203): JTL\Smarty\JTLSmarty->__construct(false, 'frontend') #3 /shop/includes/smartyInclude.php(2): JTL\Smarty\JTLSmarty::getInstance() #4 in /shop/templates/NOVAChild/Bootstrap.php on line 14
 

wespread.online

Gut bekanntes Mitglied
29. September 2020
124
12
Hallo,

danke erstmal für das schnelle Feedback. Aber ich bekomme dann wieder ein Fehler, dass z.B. {container} nicht kompiliert werden kann (Syntax Error). Könntet ihr mal das testen, ein eigenes Funktion in Child-Template zu erstellen?
 

wespread.online

Gut bekanntes Mitglied
29. September 2020
124
12
Wenn ich den boot() function deaktviere, dann funktioniert es wieder. Ich glaub nicht, dass es bei Namespace liegt.

PHP:
<?php declare(strict_types=1);

namespace Template\NOVAChild;

use Smarty;

/**
* Class Bootstrap
* @package Template\NOVAChild
*/

class Bootstrap extends \Template\NOVA\Bootstrap
{
    public function boot(): void
    {
        try {
            $this->getSmarty()->registerPlugin(Smarty::PLUGIN_FUNCTION, 'getPI', [$this, 'getPI']);
        } catch (\SmartyException $e) {
            throw new \RuntimeException('Problems during smarty instantiation: ' . $e->getMessage());
        }
    }
    public function getPI($precision)
    {
        $iterator = 1;
        $factor   = -1;
        $nenner   = 3;
        for ($i = 0; $i < $precision; $i++) {
            $iterator = $iterator + $factor / $nenner;
            $factor   *= -1;
            $nenner   += 2;
        }
        return $iterator * 4;
    }
}
 

wespread.online

Gut bekanntes Mitglied
29. September 2020
124
12
Code:
Fatal error: Uncaught --> Smarty Compiler: Syntax error in template "templates/NOVA/layout/index.tpl" on line 19 "{container}" unknown tag 'container' <-- thrown in /includes/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php on line 19

das hat aber nichts mit dem Namespace zu tun. wenn ich den boot() funktion hinzufüge kommt das.
 

wespread.online

Gut bekanntes Mitglied
29. September 2020
124
12
Also ich krieg das nicht hin, und ich glaube es auch nicht, dass ich der einzige bin, dass sowas nicht checken wird.
Wir schreiben jetzt seit 3 Tagen hin und her, und kommen nicht auf eine Lösung. Ihr habt auch nicht eine vernüftige Dokumentation, damit ein Entwickler was anfangen kann.

Ist es einfach so schwer, ein snippet in Dokumentation zu machen, oder ein Funktion in dem Child-Template von NOVA in gitlab hinzuzfügen.

Wie soll den diese Community wachsen? Ihr als JTL, müsst ein bisschen über den Tellerrand hinausschauen. Ihr entwickelt ein Software in Jahr 2020, sagt dass JTL internationalisiert wird, und es gibt immer noch deutsche-Begriffe im Quellcode. Wann soll denn sowas internationalisert werden in Shop6, im Jahr 2060?
 

wespread.online

Gut bekanntes Mitglied
29. September 2020
124
12
Code:
public function boot(): void
    {
        parent::boot();
        try {
            $this->getSmarty()->registerPlugin(Smarty::PLUGIN_FUNCTION, 'getPI', [$this, 'getPI']);
        } catch (\SmartyException $e) {
            throw new \RuntimeException('Problems during smarty instantiation: ' . $e->getMessage());
        }
    }

nächste Fehler: "{getPi(12)}" unknown function 'getPi'
 

wespread.online

Gut bekanntes Mitglied
29. September 2020
124
12
Danke für die Hilfe.

Auf jedem fall beachtet ihr auch das gleiche Fehler von dem Template Dokumentation. Ich habs einfach von der Doku copy/paste genommen.
 

wespread.online

Gut bekanntes Mitglied
29. September 2020
124
12
Also ich sehe, dass ihr die Dokumentation auch aktualisiert habt... Aber ich kann immer noch kein eigene Funktion in Child-Template nutzen.
Ich bekomme folgende Fehler:
Fatal error: Uncaught --> Smarty Compiler: Syntax error in template "/templates/NOVAChild/page/index.tpl" on line 5 "{getPI(12)}" unknown function 'getPI' <-- thrown in /includes/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php on line 5
 

FPrüfer

Moderator
Mitarbeiter
19. Februar 2016
1.878
518
Halle
Sorry und Danke für deine Geduld... :oops: Die Doku hat an der Stelle offensichtlich noch "Schwächen".

Die getPI-Funktion sollte besser so aussehen:
PHP:
public function getPI($args)
{
    $precision = $args['precision'];
    $iterator  = 1;
    $factor    = -1;
    $nenner    = 3;

    for ($i = 0; $i < $precision; $i++) {
        $iterator = $iterator + $factor / $nenner;
        $factor   *= -1;
        $nenner   += 2;
    }

    return $iterator * 4;
}
Und der Aufruf im Template sollte natürlich den Regeln für Smarty-Funktionen folgen...
PHP:
{getPI precision=12}
 
Ähnliche Themen
Titel Forum Antworten Datum
Neu Eigene Felder Checkbox Inhalt bzw. Text bei Mouseover anzeigen JTL-Wawi - Ideen, Lob und Kritik 0
Neu Eigene Seiten mit Plugin erstellen Technische Fragen zu Plugins und Templates 0
Neu Eigene Felder Lieferschein User helfen Usern - Fragen zu JTL-Wawi 0
Neu Eigene Felder (Kunde) in csv-Datei per Ausgabe (Auftrag oder Lieferschein) Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 0
Neu Eigene Felder des Auftrages in der Druckvorlage Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 2
Eigene Felder für Ebay-Listings verwenden JTL-Wawi 1.8 0
Neu Eigene Felder im Verkauf als Spalten anzeigen User helfen Usern - Fragen zu JTL-Wawi 4
Eigene Felder in alte Vorlagen JTL-Wawi 1.8 5
In Diskussion eigene CustomWorkflows anlegen JTL-Workflows - Ideen, Lob und Kritik 1
Neu Artikel - Sprachen - Alle eigene SEO URL? Smalltalk 1
Neu Barcode Anpassung in Artikeletikett anhand Eigene Felder Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 2
Neu Eigene Übersicht Artikel - Zulaufsübersicht - Stückliste Eigene Übersichten in der JTL-Wawi 0
Neu Eigene Übersichten, Artikelhistorie Eigene Übersichten in der JTL-Wawi 1
Neu Sind eigene Felder im Artikel in einer neueren Wawi-Version von Anfang an sichtbar? User helfen Usern - Fragen zu JTL-Wawi 8
Eigene Auswertung JTL-Wawi 1.8 1
Neu Eigene Seiten Priority in der Sitemap ändern Allgemeine Fragen zu JTL-Shop 5
Neu Eigene Seite sichern Allgemeine Fragen zu JTL-Shop 1
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 Eigene Übersicht im Verkauf zu einem ausgewähltem Auftrag: Kundenattribut Anmerkungen Eigene Übersichten in der JTL-Wawi 4
Neu Wunschzettel Funktion auch bei Vaterartikeln möglich? Templates für JTL-Shop 0
Neu Slice-Funktion in PDF Vorlagen nutzen User helfen Usern - Fragen zu JTL-Wawi 2
Neu Nova Template Container in Container Boxed Templates für JTL-Shop 2
Neu Nova Farbe ändern Templates für JTL-Shop 14
Neu JTL-Shop 5 Nova-Template / Darstellung der Produktliste teilweise fehlerhaft JTL-Shop - Fehler und Bugs 1
Neu Nova - Größe der Slides / Anzahl der Artikel bei Cross Selling Slider anpassen Templates für JTL-Shop 3
Neu Social-Media Icon Nova Templates für JTL-Shop 0
Neu nova änderungen Templates für JTL-Shop 13
Neu Vorstellung des Avada-Themes für das NOVA-Template Templates für JTL-Shop 2
Neu NOVA, Logo wird in mobiler Ansicht verzerrt dargestellt Templates für JTL-Shop 0

Ähnliche Themen