Neu Eigene Funktion in NOVA schreiben

Frank Hoffmeister

Sehr aktives Mitglied
11. Mai 2014
145
28
Ich versuche auch gerade zum Testen die Funktion Pi zu registrieren, bei mir kommt nachdem ich die Bootstrap.php bearbeitet und gespeichert habe eine weiße Seite mit HTTP 500 error, muss ich da sonst noch irgendwas machen?
Meine bootsrap.php sieht so aus:
PHP:
<?php declare(strict_types=1);

namespace Template\Frank;

/**
 * Class Bootstrap
 * @package Template\Frank
 */
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, 'getPI', [$this, 'getPI']);
        } catch (\SmartyException $e) {
            throw new \RuntimeException('Problems during smarty instantiation: ' . $e->getMessage());
        }
    }

    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;
    }
    protected function registerPlugins(): void
    {
        parent::registerPlugins();
        // whatever you do, always call parent::registerPlugins() or delete this method!
    }
}
 

Frank Hoffmeister

Sehr aktives Mitglied
11. Mai 2014
145
28
Heisst der Template-Ordner genau "Frank"?
Ja, sobald ich den PHP Code in :
PHP:
<?php declare(strict_types=1);

namespace Template\Frank;

/**
 * Class Bootstrap
 * @package Template\Frank
 */
class Bootstrap extends \Template\NOVA\Bootstrap
{
    /**
     * @inheritdoc
     */
    public function boot(): void
    {
        parent::boot();
        // whatever you do, always call parent::boot() or delete this method!
     }

     protected function registerPlugins(): void
    {
        parent::registerPlugins();
        // whatever you do, always call parent::registerPlugins() or delete this method!
    }
}
ändere funktioniert wieder alles.
 

wespread.online

Gut bekanntes Mitglied
29. September 2020
136
13
Füg bitte unterm namespace noch foglende Zeilen:

use Smarty;
use JTL\ Shop;
use JTL\DB\ReturnType;

(eigentlich brauchst du am Anfang nur Smarty)
 

Frank Hoffmeister

Sehr aktives Mitglied
11. Mai 2014
145
28
So ich habe mir jetzt nochmal den Code aus der Beispiel Bootstrap.php von https://docs.jtl-shop.de/de/latest/...ks.html#funktionen-im-nova-child-registrieren per Copy und Paste in meine bootstrap.php eingefügt und
PHP:
protected function registerPlugins(): void
    {
        parent::registerPlugins();
        // whatever you do, always call parent::registerPlugins() or delete this method!
    }
vor der letzten geschweiften Klammer eingefügt, jetzt funktioniert es, was ich daran nicht verstehe ist , daß vorher komplett dasselbe drin stand (Habe einen Vergleich mit Notepad++ gemacht) und es nicht ging.
 

Ähnliche Themen