Jump to content
xt:Commerce Community Forum

Veyton und Server Side Includes (SSI)


Recommended Posts

Hallo,

ich habe mich die vergangenen Tage daran versucht, per SSI den Inhalt einer Datei in eine Content-Seite einzubauen. Dazu habe ich im xtAdmin unter Inhalte->Contentmanager->Content die Seite AGB geladen und in der Quellcode-Ansicht des Editors die folgenden Zeile eingefügt (die erste Zeile zu Testzwecken, ob SSI überhaupt funktionieren):

<!--#echo var="DOCUMENT_NAME"-->

<!--#include file="/info/agb.html"-->
Zunächst passierte garnichts. Nun habe ich erfahren, dass man die SSI-Ausführung für Dateien, die eine andere Endung als .shtml haben, auf unserem Server per .htaccess-Datei mit der folgenden Zeile "aktivieren" muss:
AddType text/x-server-parsed-html .html
Ab jetzt wurde eine einzelne .html Datei auf dem Server korrekt verarbeitet, ich habe dies mit der folgenden Datei getestet:
<html>

  <head>

    <title>Dynamisches HTML mit Server Side Includes</title>

  </head>

  <body>

    <h1>Dynamisches HTML mit Server Side Includes</h1>

    <pre>

      Datum/Uhrzeit auf dem Server-Rechner: <!--#echo var="DATE_LOCAL"-->

      Name dieser HTML-Datei: <!--#echo var="DOCUMENT_NAME"-->

      Installierte Server-Software: <!--#echo var="SERVER_SOFTWARE"-->

      Ihr WWW-Browser: <!--#echo var="HTTP_USER_AGENT"-->

    </pre>

  </body>

</html>
An meiner gewünschten Stelle (in der Content-Seite) wurde aber nach wie vor nichts eingebunden - im Quelltext der Seite stehen noch immer die Platzhalter, die durch SSI ersetzt werden sollten:
<!--#echo var="DOCUMENT_NAME"-->

<!--#include file="/info/agb.html"-->
Da die einzelnen Seiten zwar durch die Suchmaschinen-Einstellungen im Shop als .html an den Browser geliefert werden, aber eigentlich .php Dateien sind, habe ich die Endung .php an die Zeile in der .htaccess-Datei angehängt:
AddType text/x-server-parsed-html .html .php[/code]

Ab jetzt werden auch einzelne Dateien mit der Endung .php korrekt verarbeitet, aber auf der Contentseite noch immer keine Besserung.

Nun stellt sich mir die Frage, warum dies so ist. Sorgt irgendetwas am Shop dafür, dass die SSI-Befehle nicht verarbeitet werden, oder ist es einfach nur die Tatsache, dass die Shopseiten ja nicht fertig vorliegen, sondern zusammengesetzt werden? Oder werden die Seiten nach dem Zusammensetzen nur nicht an den SSI-Prozess weitergegeben, weil sie ja bereits vom PHP-Prozess verarbeitet wurden und der die Seite dann direkt an den Browser sendet?

Letztendlich möchte ich ja nur eine Möglichkeit, auf den Content-Seiten den Inhalt einer anderen Datei einbinden zu können, der auf vielen Content-Seiten enthalten sein soll und der sich oft ändert, so dass man zur Pflege nur diese eine Include-Datei editieren muss und nicht alle Content-Seiten jedesmal editieren braucht.

Wenn jemand eine alternative Lösung für mich hat, wie ich zusätzliche Inhalte aus einer externen Datei in den Content einbinden kann, Vorschläge sind mir sehr willkommen!

Mit freundlichen Grüßen...

Link to comment
Share on other sites

# 1. das liegt daran das der Teil aus dem Content nicht verarbeitet wird

sondern nur aus der DB gelesen wird.

# A : Wenn du etwas gepharst haben möchtest dann schreibe dir eine php

Datei und binde diese im Content um das Dropdown ein.

Oder mache es per iframe oder mit Javascript.

Link to comment
Share on other sites

Vielen Dank für die Antwort - sie war jetzt zwar nicht direkt eine Lösung für mich, hat mich aber auf eine Idee gebracht:

Wenn das Ersetzen des SSI Befehls durch die SSI nicht funktioniert, dann mache ich das einfach selber - und zwar direkt in der index.html, indem ich die Variable {$content} nehme und schaue per {php}, ob dort etwas in der Form

<!--#include file="xxxxx"-->[/CODE]

enthalten ist - z.B. per Regular Expressions. Dann ersetze ich den Bereich einfach per PHP-Include durch die Include-Datei, die innerhalb des o.g. Bereiches mit angegeben ist. Fertig ist die Lösung!

Sobald ich das fertig habe, werde ich die Lösung hier posten.

Link to comment
Share on other sites

Danke, jetzt habe ich es verstanden - stand bei dem Vorschlag etwas auf dem Schlauch. Ich habe jetzt eine Datei "c_agb.php" erstellt und sie mit diesem Inhalt in das Verzeichnis "/shop/xtCore/forms" gelegt:

<?php

defined('_VALID_CALL') or die('Direct Access is not allowed.');


$template = new Template();  

$tpl = 'agb.html';  

$tpl_data = array('message'=>$info->info_content,'data'=>$shop_content_data, 'subdata'=>$subdata);


($plugin_code = $xtPlugin->PluginCode('module_content.php:tpl_data')) ? eval($plugin_code) : false;

$page_data = $template->getTemplate('smarty', '/'._SRV_WEB_CORE.'forms/'.$tpl, $tpl_data);

?>

Im Verzeichnis "/shop/templates/mein_template/xtCore/forms" habe ich jetzt die Datei "agb.hrml" mit den AGB (Inhalt für diese Seite) gelegt.

Beim Aufruf von "http://meinedomain.de/agb.html" (SUMA URL im Content auf "agb" eingestellt) erscheint jetzt korrekt der Inhalt der agb.html-(Template)-Datei.

Dort habe ich auch die Möglichkeit, die übergebenen Daten wie {$data.content_popup_link} zu nutzen, um den Popup Link einzubinden.

ABER: Wenn ich den Popup-Link jetzt benutze, wird die gesamte Shopseite im Popup dargestellt und nicht nur der Content-Teil. Ich möchte aber nur den Content-Teil dargestellt haben - und zwar mit der Kopfzeile mit der Drucken-Funktion. Nur wie erreiche ich das jatzt, so als wenn ich den Inhalt direkt im Textfeld des Content-Managers eingegeben hätte?

Danke schon einmal im Voraus dafür.

Link to comment
Share on other sites

Durch ein wenig herumprobieren bin ich darauf gestossen, wie es so funktioniert, wie ich es möchte:

Die folgenden Zeilen müssen noch in der "c_agb.php" Datei hinzugefügt werden:

if (isset($_GET['popup'])) {

  $no_index_tag = true; 

  $index_tpl = 'popup.html';

}
Die gesamte Datei sieht dann so aus:
<?php

defined('_VALID_CALL') or die('Direct Access is not allowed.');


$template = new Template();  

$tpl = 'agb.html';  

$tpl_data = array('message'=>$info->info_content,'data'=>$shop_content_data, 'subdata'=>$subdata);


if (isset($_GET['popup'])) {

  $no_index_tag = true; 

  $index_tpl = 'popup.html';

}


($plugin_code = $xtPlugin->PluginCode('module_content.php:tpl_data')) ? eval($plugin_code) : false;

$page_data = $template->getTemplate('smarty', '/'._SRV_WEB_CORE.'forms/'.$tpl, $tpl_data);

?>

Jetzt wird der Content aus der Datei "agb.html" korrekt innerhalb der Index-Seite angezeigt und beim klick auf den Popup-Link wird nur der Inhalt der Datei in dem Popup-Fenster inkl. der Kopfzeile mit Schließen und Drucken-Funktion angezeigt.

==> Problem gelöst :) Vielen Dank!

Link to comment
Share on other sites

  • 1 year later...

Hi,

vielen Dank erst mal für die Lösung - habe das ebenfalls so umgesetzt und es funktioniert einwandfrei ... bis auf eine Sache:

Die eingebundene HTML Seite lässt sich nicht per CSS formatieren, bzw. nur bedingt.

Am Besten ein kleines Beispiel:

Inhalt der faq.html:

<div class="faq">

Inhalt

</div>

Erweiterung der stylesheet.css (im Template/CSS Ordner) um:

.faq {

color: blue;

}

--> Bringt kein Erfolg!

Im Quelltext wird der richtige Tag <div class="faq"> angezeigt, aber scheinbar findet er die entsprechende Klasse in der CSS Datei nicht:rolleyes:

Diese ist aber im Quelltext korrekt im Header eingebunden, Inhalt stimmt auch und ist aktuell, d.h. die CSS enthält die "faq" Klasse.

Seltsamerweise funktioniert:

<div class="box">

Inhalt

</div>

--> Es wird eine Box erstellt um "Inhalt"

Was mache ich da falsch??? :confused::confused:

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
  • Create New...