Neu Einbindung PHP. Datei ins Template - Wert aus PHP Datei lesen

DeamonG

Neues Mitglied
3. August 2024
3
0
Hallo zusammen,
ich bastel aktuell am Template der Productdetails und versuche einen API Call zu einer externen Website einzubauen. Den API Call habe ich erfolgreich eingebaut nur würde ich gerne den authentifierungs token in einer PHP Datei abspeichern. Das Problem ist, dass mich der Server die PHP Datei nicht aufrufen lässt. Weder über JS Skript noch über direkt Zugriff per URL im Browser.

Gibt es hier grundlegende Dinge zu beachten die dieses Verhalten erzeugen? Oder habt ihr eventuelle Tipps hierzu?
Bzw. habt ihr eventuell tipps sowas generell zu Coden?

Hier ist mein aktueller Code: (zerfetzt ihn nicht in der Luft, bin kein Profi)

Code:
{literal}
<script>
  function fetchData() {
    fetch('/templates/NOVA/productdetails/Authentifizierung.php')
        .then(response => {
            // Überprüfe den Statuscode der Antwort
            if (!response.ok) {
                throw new Error('Netzwerkantwort war nicht ok.');
                 document.getElementById('BeispielTextFeld').value = "Netzwerkantwort war nicht ok.";
            }
            return response.text();
            document.getElementById('BeispielTextFeld').value = response.text;
        })
        .then(AuthResponse => {
            // Weise den zurückgegebenen Wert der Variablen zu
            var AuthentifizierungsVariable = AuthResponse;
            // Aktualisiere das Textfeld mit dem Wert
            document.getElementById('BeispielTextFeld').value = AuthentifizierungsVariable;
        })
        .catch(error => console.error('Fehler:', error));
}

    // Call the function to fetch data
    window.onload = function() {
    fetchData();
    }
</script>
{/literal}

Vielen Dank!
Max
 

NoOne

Aktives Mitglied
16. März 2024
113
51
Die .htacess in /templates erlaubt keinen Zugriff auf .tpl und .php Dateien über den Webserver. Wenn überhaupt, dann muss der Zugriff direkt über das Dateisystem erfolgen. fetch und XMLHttpRequest dürften da raus fallen. In diesem Fall könntest du das theoretisch über Smarty versuchen. Erst prüfen, ob die Datei überhaupt existiert (mit {file_exists('<dateiname>'} und falls ja, dann über {include file='<dateiname>'} einbinden. Bin nicht sicher, ob das funktioniert, aber selbst wenn ist das auch eher suboptimal. Wie auch generell das übers Template zu machen. Eine API-Anbindung sollte eher über ein Plugin realisiert werden.
 

elevennerds.de

Sehr aktives Mitglied
23. September 2015
1.215
187
Ich hoffe doch nicht, dass Du den Token in das Frontend holen willst, und dann deine externe Abfrage damit machst? Dann kannst Du den Token auch gleich ins JS schreiben, ist also völlig unsicher.

Mach den kompletten externen Call mit PHP und gib das Ergebnis an das Frontend.

Du kannst Dein Template mit PHP erweitern: https://forum.jtl-software.de/threa...lt-keinen-php-ordner-mehr-im-template.131246/

Oder ein Plugin für alles schreiben: https://jtl-shop-mkdocs.readthedocs.io/de/latest/shop_plugins/allgemein.html
 

DeamonG

Neues Mitglied
3. August 2024
3
0
Danke für beide Antworten. Das hilft mir erstmal weiter in die richtige Richtung zu denken, und vor allem keine kritischen Fehler zu machen...
 

DeamonG

Neues Mitglied
3. August 2024
3
0
Ich hoffe doch nicht, dass Du den Token in das Frontend holen willst, und dann deine externe Abfrage damit machst? Dann kannst Du den Token auch gleich ins JS schreiben, ist also völlig unsicher.

Mach den kompletten externen Call mit PHP und gib das Ergebnis an das Frontend.

Du kannst Dein Template mit PHP erweitern: https://forum.jtl-software.de/threa...lt-keinen-php-ordner-mehr-im-template.131246/

Oder ein Plugin für alles schreiben: https://jtl-shop-mkdocs.readthedocs.io/de/latest/shop_plugins/allgemein.html
Nochmal danke für deine Antwort, natürlich war das leider erstmal der Plan (bezogen auf den token).

Ich habe mir beide deiner Links angeschaut und die Entwicklung eines Plugins fällt erstmal raus, da es für mich zu komplex ist.

Kannst du mir eventuell weitere Doku oder einen Ansatzpunkt geben wie man eine PHP. Datei in das template einbindet? Aus deinem verlinkten Thread werde ich leider nicht ganz schlau, mir scheint der Ansatz zu fehlen.

Danke für deine Zeit
Max
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
7.095
1.856
Berlin
Du kannst fast alle Hooks auch im Template (bootstrap.php) verwenden, das bedeutet du musst, je nachdem was du machst nicht extra ein Plugin haben.

als Angriffspunkt schaust du dir den Hook HOOK_IO_HANDLE_REQUEST, den kannst du in deinem Template verarbeiten.