Fehler: "EXCEPTION SYSTEMCOMPONENT TEMPLATENOTFOUND"

Hallo, folgende Situation.

Ich habe ein kleines Modul mit einem Controller und einer Template Datei gebaut. Den Controller kann ich problemlos über den cl Parameter aufrufen, beim Template bekomme ich dann aber die entsprechende Fehlermeldung “EXCEPTION_SYSTEMCOMPONENT_TEMPLATENOTFOUND”.

Oxid selber hat nicht viel zu meckern und meine Modul sieht wie folgt aus:

Metadata.php

$sMetadataVersion = '2.0';
$aModule = array(
    'id'          => 'hermes',
    'extend'      => array(\OxidEsales\Eshop\Application\Model\User::class                      => \trensco\hermes\Model\User::class,
                           \OxidEsales\Eshop\Core\UtilsServer::class                            => \trensco\hermes\Core\UtilsServer::class,
    ),
    'controllers' => [
        'hermes' => \trensco\hermes\Controller\HermesController::class
    ],
    'blocks'      => array(
        array(
            'template' => 'page/checkout/payment.tpl',
            'block' => 'hps_del_address',
            'file' => 'views/blocks/hps_del_address.tpl',
        ),
    ),
    'templates'   => array(
        'hermespsc.tpl' => 'trensco/hermes/views/tpl/hermespsc.tpl',
    ),
);

HermesController.php:

namespace trensco\hermes\Controller;

use OxidEsales\Eshop\Application\Model\User;
use OxidEsales\Eshop\Core\Registry;

    class HermesController extends \OxidEsales\Eshop\Application\Controller\FrontendController
    {

      protected $_sThisTemplate = 'trensco/hermes/views/tpl/hermespsc.tpl';

        public function render()
        {
            parent::render();

            return $this->_sThisTemplate;
        }

      public function __construct()
      {
      }

    }

Oxid backend:

Hat jemand eine Idee wo mein Fehler hier liegt.

Beste grüße

probiere mal so:
protected $_sThisTemplate = "hermespsc.tpl"

1 Like

Ok so lädt er das Template schon mal. Allerdings komplett nackt, das heißt der Browser rendert nur mein Template. Davor hatte Oxid versucht mein Template, wie ich es erwartet hätte, zwischen Header und Footer zu laden.

protected $_sThisTemplate = "hermespsc.tpl"

protected $_sThisTemplate = "trensco/hermes/views/tpl/hermespsc.tpl"

Irgend was scheint hier noch nicht zu stimmen bzw. ich mache was falsch. Habe mir auch mal paar andere Module angesehen und die arbeiten mit “langen” Pfadangaben zu den TPL Dateien.

Dann fehlt der entsprechende Code in deinem Tempalte.
Schau dir z.B. content.tpl an und achte auf die capture und include Tags.
Davor hat OXID dein Tempalte gar nicht gefunden, also hat es ein standard Template geladen.

Soweit ich es weiß, sind die “langen” Pfade nur für standard Templates aus dem Theme Ordner gedacht. Für Modultemplates muss man den Dateinamen bzw Pfad verwenden, womit das Templates in der metadata.php registriert wird, in deinem Fall war es “hermespsc.tpl”.

1 Like

So funktioniert es:

hermespsc.tpl:

[{capture append="oxidBlock_content"}]

    <h1>headline</h1>

    <script type="text/javascript">
      $(document).ready(function() {
        alert('hermes-TPL');
      });
    </script>

[{/capture}]
[{include file="layout/page.tpl"}]

Ich danke dir :slight_smile: