Boothby
Bekanntes Mitglied
- Registriert
- 11. Dez. 2010
- Beiträge
- 359
- Punkte
- 128
Andere HTML-Seiten in PHP-Dateien einzubinden, egal ob von fremden oder vom eigenen Server ist eigentlich ganz einfach. Hierzu bietet PHP mehrere Möglichkeiten, z.B. per require(), file_get_contents() und weitere.
Ein Beispiel
Angenommen ihr wollt eine beliebige HTML-Seite ins XenForo einbinden, dann funktionieren obere Möglichkeiten nicht mehr. XenForo bringt aber einige Werkzeuge mit, um dies dennoch zu realisieren. Eine sehr einfache Möglichkeit besteht darin, dies über eigene Seiten zu realisieren.
Hierzu ist es erforderlich eine neue eignene Seite anzulegen, wie ragtek hier beschrieb. Durch das Plugin-System ist es möglich, beim Laden der Seite entsprechenden PHP- Code auszuführen, der dann auch externe HTML-Seiten auslesen und weiter verarbeiten kann.
Unter Inhalt des Template (HTML): definiert ihr einen Container, in welchem die HTML-Seite dargestellt werden soll.
{xen:raw $myContent} ist eine Variable, die später mit dem Inhalt der HTML-Seite befüllt und im Container ausgeben werden soll.
Nun müsst ihr noch eine Callback-Methode eingeben, die unseren Code zum Auslesen des Inhalts der HTML-Datei ausführt. Es wird hierbei die Eingabe einer Klassenbezeichnung und einer Methode derselben Klasse erwartet. Diese Klasse und Methode müsst ihr aber vor Bestätigung der Seite durch Klick auf "Seite speichern" noch anlegen.
Klasse und Methode müssen nach dem Schema Klassename :: Methodenname in die entsprechenden Formularfelder eingetragen werden.
Als Beispiel möchte ich die Klasse XenForo_Pages_myPageID und die Methode includeFile nennen. Diese Klasse müsst ihr jetzt in eine PHP-Datei speichern. hierzu legt ihr eine neue PHP-Datei im Verzeichnies <xenforo>/library/XenForo/Pages/ an und bezeichnet diese als myPageID.php
Das Unterverzeichnis Pages existiert nicht in der Standardinstallation und muß deshalb zuvor angelegt werden. Verzeichnis-Struktur und Dateiname folgen hierbei der Namenskonvention von XenForo für Klassenbezeichnungen, damit die Klasse automatisch gefunden und geladen wird. Klassen sollen sich demnach in einem Unterverzeichnis von <xenforo>/library/ befinden und Klassenbezeichnung und Dateipfad passen dann ab dort zusammen. Siehe hierzu:
Dateipfad: <xenforo>/library/XenForo/Pages/myPageID.php
Klassenname: XenForo_Pages_myPageID
Der Inhalt der myPageID.php sieht dann wie folgt aus:
Zum Abschluß bestätigt ihr noch das Anlegen der neuen Seite im ACP durch Klick auf "Seite speichern"
Ein Beispiel
Code:
<div>
<?php
require("/pfad/zu/meiner/datei.html");
?>
</div>
Angenommen ihr wollt eine beliebige HTML-Seite ins XenForo einbinden, dann funktionieren obere Möglichkeiten nicht mehr. XenForo bringt aber einige Werkzeuge mit, um dies dennoch zu realisieren. Eine sehr einfache Möglichkeit besteht darin, dies über eigene Seiten zu realisieren.
Hierzu ist es erforderlich eine neue eignene Seite anzulegen, wie ragtek hier beschrieb. Durch das Plugin-System ist es möglich, beim Laden der Seite entsprechenden PHP- Code auszuführen, der dann auch externe HTML-Seiten auslesen und weiter verarbeiten kann.
Unter Inhalt des Template (HTML): definiert ihr einen Container, in welchem die HTML-Seite dargestellt werden soll.
HTML:
<div class="baseHtml messageText">
{xen:raw $myContent}
</div>
{xen:raw $myContent} ist eine Variable, die später mit dem Inhalt der HTML-Seite befüllt und im Container ausgeben werden soll.
Nun müsst ihr noch eine Callback-Methode eingeben, die unseren Code zum Auslesen des Inhalts der HTML-Datei ausführt. Es wird hierbei die Eingabe einer Klassenbezeichnung und einer Methode derselben Klasse erwartet. Diese Klasse und Methode müsst ihr aber vor Bestätigung der Seite durch Klick auf "Seite speichern" noch anlegen.
Klasse und Methode müssen nach dem Schema Klassename :: Methodenname in die entsprechenden Formularfelder eingetragen werden.
Als Beispiel möchte ich die Klasse XenForo_Pages_myPageID und die Methode includeFile nennen. Diese Klasse müsst ihr jetzt in eine PHP-Datei speichern. hierzu legt ihr eine neue PHP-Datei im Verzeichnies <xenforo>/library/XenForo/Pages/ an und bezeichnet diese als myPageID.php
Das Unterverzeichnis Pages existiert nicht in der Standardinstallation und muß deshalb zuvor angelegt werden. Verzeichnis-Struktur und Dateiname folgen hierbei der Namenskonvention von XenForo für Klassenbezeichnungen, damit die Klasse automatisch gefunden und geladen wird. Klassen sollen sich demnach in einem Unterverzeichnis von <xenforo>/library/ befinden und Klassenbezeichnung und Dateipfad passen dann ab dort zusammen. Siehe hierzu:
Dateipfad: <xenforo>/library/XenForo/Pages/myPageID.php
Klassenname: XenForo_Pages_myPageID
Der Inhalt der myPageID.php sieht dann wie folgt aus:
PHP:
<?php
class XenForo_Pages_myPageID
{
public static function includeFile(XenForo_ControllerPublic_Abstract $controller, XenForo_ControllerResponse_Abstract &$response)
{
ob_start();
require("/pfad/zu/meiner/datei.html");
$myContent = ob_get_contents();
ob_end_clean();
$params = array(
'myContent' => $myContent
);
$response->params = array_merge(
$response->params,
$params
);
}
}
Zum Abschluß bestätigt ihr noch das Anlegen der neuen Seite im ACP durch Klick auf "Seite speichern"