Kategorie:PHP-Wrapper
Aus OpenEstate-Wiki
| Website-Export via ImmoTool |
|---|
| PHP-Wrapper |
|
|
Inhaltsverzeichnis |
Was ist ein Wrapper?
Die aus dem ImmoTool erzeugten PHP-Skripte können mit geringem Programmieraufwand in bestehende PHP-Webseiten integriert werden. Der Mechanismus zur Einbindung wird als Wrapper bezeichnet.
„Als Wrapper bezeichnet man in der Informationstechnik ein Stück Software, welches ein anderes Stück Software umgibt. Dies kann sich sowohl auf ganze Programme, als auch nur auf einzelne Programmteile bis Klassen beziehen. Die "Umhüllung" kann sowohl visueller als auch technischer Natur sein.“
PHP-Wrapper für Content Management Systeme
Im Laufe der weiteren Entwicklung werden an dieser Stelle fertige Wrapper-Lösungen für verbreitete CMS-Software zusammengetragen und dokumentiert.
| Modul für | Webseite |
|---|---|
| CMS made simple | cmsmadesimple.org |
| | |
| Joomla | joomla.org |
| WebsiteBaker | websitebaker2.org |
| WordPress | wordpress.org |
Ein allgemeiner PHP-Wrapper
Der folgende PHP-Code kann in jede PHP-basierten Webseite verwendet werden.
<?php/*** Website-Export, Wrapper zur Einbindung der Website-Skripte in PHP-Anwendungen** @author Andreas Rudolph & Walter Wagner* @copyright 2009, OpenEstate.org* @license http://www.gnu.org/licenses/gpl-3.0.txt*/// ImmoTool-Umgebung konfigurierendefine( 'IMMOTOOL_BASE_PATH', '../' ); // Server-Pfad zu den ImmoTool-Skripten
define( 'IMMOTOOL_BASE_URL', '../' ); // URL zu den ImmoTool-Skripten
// Script ermittelnif (isset($_REQUEST['wrap']) && $_REQUEST['wrap']=='expose')
{$wrap = 'expose';
$script = 'expose.php';
}else{$wrap = 'index';
$script = 'index.php';
}// Script ausführenob_start();
include( IMMOTOOL_BASE_PATH . $script );
$page = ob_get_contents();
ob_clean();
// Stylesheets$setup = new immotool_setup();
if (is_callable(array('immotool_myconfig', 'load_config_default'))) immotool_myconfig::load_config_default( $setup );
$stylesheets = array( IMMOTOOL_BASE_URL . 'style.php' );
if (is_string($setup->AdditionalStylesheet) && strlen($setup->AdditionalStylesheet)>0) $stylesheets[] = $setup->AdditionalStylesheet;
// Ausgabe erzeugenecho immotool_functions::wrap_page( $page, $wrap, $_SERVER['SCRIPT_NAME'], IMMOTOOL_BASE_URL, $stylesheets );
?>
- In der Konstanten
IMMOTOOL_BASE_PATH(Zeile 11) muss der Serverpfad zum PHP-Export des ImmoTools hinterlegt werden. Die Konstante wird benötigt, um die Skripte PHP-Exports einbinden zu können (Zeile 28). - In der Konstanten
IMMOTOOL_BASE_URL(Zeile 12) muss eine URL zum PHP-Export des ImmoTools hinterlegt werden. Diese Konstante wird benötigt, um gültige Verlinkungen auf Bilder & PDF-Exposés zu erzeugen. - Mit Hilfe des Parameter
wrapwird entschieden, ob die Exposéansicht (Zeile 15) oder Immobilienübersicht (Zeile 20) eingebunden werden soll. - Mit dem Aufruf der Hilfsfunktion
immotool_functions::wrap_page(Zeile 39) werden verschiedene Ersetzungen im HTML-Code der eingebundenen Webseite durchgeführt.- Der Inhalt zwischen
<body>und</body>wird ermittelt. Der<head>-Bereich wird ignoriert. - Der HTML-Code von Links & Formularen wird umgeschrieben und dabei auf das Wrapper-Skript selbst verlinkt.
- Der HTML-Code von PDF-Downloads & Bildern wird umgeschrieben um korrekte Darstellung im Browser zu gewährleisten.
- Die übermittelten Stylesheets werden in den HTML-Code eingefügt.
- Der Inhalt zwischen
immotool_functions::wrap_page
Die Hilfsfunktion immotool_functions::wrap_page wird mit der Datei include/functions.php mitgeliefert, um die PHP-Exporte mit geringem Aufwand 'wrappen' zu können. Bei Bedarf kann hier auch eine eigene Funktion implementiert werden. Die Hilfsfunktion sieht wie folgt aus.
/*** Hilfsfunktion zum 'wrappen' einer erzeugten Webseite.* Diese Funktion wird von den PHP-Wrapper-Modulen verwendet.* @param string $page HTML-Code der einzubindenden Seit* @param string $wrapType Art der eingebundenen Seite* @param string $wrapperScriptUrl URL zum umgebenden Script* @param string $immotoolBaseUrl URL zum ImmoTool-Export* @param array $stylesheets Liste mit verwendeten Stylesheets* @param array $hiddenParams Key-Value-Paar mit zusätzlichen Parametern* @return string HTML-Code der 'gewrappten' Seite*/function wrap_page( &$page, $wrapType, $wrapperScriptUrl, $immotoolBaseUrl, $stylesheets, $hiddenParams=null ) {
// Stylesheets importieren$header = '';
if (is_array($stylesheets) && count($stylesheets)>0) {
$header = "\n<style type=\"text/css\">";
foreach ($stylesheets as $style) $header .= "\n@import \"$style\";";
$header .= "\n</style>";
}// HACK: Einbindung der Galerie-Skripte in Exposésif ($wrapType=='expose') {
$setup = new immotool_setup_expose();
if (is_callable(array('immotool_myconfig', 'load_config_expose'))) immotool_myconfig::load_config_expose( $setup );
$galleryHandler = immotool_functions::get_gallery( $setup->GalleryHandler );
if (!is_object($galleryHandler)) $galleryHandler = immotool_functions::get_gallery( 'html' );
$header .= "\n" . $galleryHandler->getHeader();
}// Haupt-URL ohne Parameter ermitteln$pos = strpos($wrapperScriptUrl,'?');
$wrapperBaseUrl = ($pos!==false)? substr($wrapperScriptUrl,0,$pos): $wrapperScriptUrl;
$sep = ($pos!==false)? '&': '?';
// Zusätzliche Hidden-Parameter zur Verwendung in Formularen vorbereiten$hiddenInputs = '';
if (is_array($hiddenParams)) {
foreach ($hiddenParams as $key=>$value) {
$hiddenInputs .= '<input type="hidden" name="'.$key.'" value="'.$value.'"/>';
}}// Ersetzungen$replacements = array(
// Inhalt des BODY-Tags ermitteln'/(.*)<body([^>]*)>(.*)<\/body>(.*)/is' => '<div\2>'.$header.'\3</div>',
// Verlinkungen innerhalb der aktuellen Seite'/<a([^>]*)href="\?([^"]*)"/is' => '<a\1href="'.$wrapperScriptUrl.$sep.'wrap='.$wrapType.'&\2"',
// index.php => Links'/<a([^>]*)href="index\.php"/is' => '<a\1href="'.$wrapperScriptUrl.$sep.'wrap=index"',
'/<a([^>]*)href="index\.php\?([^"]*)"/is' => '<a\1href="'.$wrapperScriptUrl.$sep.'wrap=index&\2"',
// index.php => Formulare//'/<form([^>]*)action="index\.php"/is' => '<form\1action="'.$wrapperScriptUrl.$sep.'wrap=index"','/<form([^>]*)action="index\.php([^"]*)"([^>]*)>/is' => '<form\1action="'.$wrapperBaseUrl.'\2"\3><input type="hidden" name="wrap" value="index"/>'.$hiddenInputs,
// expose.php => Links'/<a([^>]*)href="expose\.php"/is' => '<a\1href="'.$wrapperScriptUrl.$sep.'wrap=expose"',
'/<a([^>]*)href="expose\.php\?([^"]*)"/is' => '<a\1href="'.$wrapperScriptUrl.$sep.'wrap=expose&\2"',
// expose.php => Formulare//'/<form([^>]*)action="expose\.php([^"]*)"/is' => '<form\1action="'.$wrapperScriptUrl.$sep.'wrap=expose\2"','/<form([^>]*)action="expose\.php([^"]*)"([^>]*)>/is' => '<form\1action="'.$wrapperBaseUrl.'\2"\3><input type="hidden" name="wrap" value="expose"/>'.$hiddenInputs,
// captcha.php'/<img([^>]*)src="captcha\.php"/is' => '<img\1src="'.$immotoolBaseUrl.'captcha.php"',
'/<img([^>]*)src="captcha\.php\?([^"]*)"/is' => '<img\1src="'.$immotoolBaseUrl.'captcha.php?\2"',
'/src=\'captcha\.php([^\']*)\'/is' => 'src=\''.$immotoolBaseUrl.'captcha.php\1\'',
// Includeverzeichnis'/<script([^>]*)src="include\/([^"]*)"/is' => '<script\1src="'.$immotoolBaseUrl.'include/\2"',
'/<link([^>]*)href="include\/([^"]*)"/is' => '<link\1href="'.$immotoolBaseUrl.'include/\2"',
// Datenverzeichnis'/<a([^>]*)href="data\/([^"]*)\.([^"]*)"/is' => '<a\1href="'.$immotoolBaseUrl.'data/\2.\3"',
'/<img([^>]*)src="data\/([^"]*)"/is' => '<img\1src="'.$immotoolBaseUrl.'data/\2"',
// Bildverzeichnis'/<img([^>]*)src="img\/([^"]*)"/is' => '<img\1src="'.$immotoolBaseUrl.'img/\2"',
'/\'img\/([^\']*)\'/is' => '\''.$immotoolBaseUrl.'img/\1\'',
'/\'\.\/img\/([^\']*)\'/is' => '\''.$immotoolBaseUrl.'img/\1\'',
);
return preg_replace( array_keys($replacements), array_values($replacements), $page );
}
Seiten in der Kategorie „PHP-Wrapper“
Es werden 5 von insgesamt 5 Seiten in dieser Kategorie angezeigt:

