Kategorie:PHP-Wrapper

Aus OpenEstate-Wiki

Wechseln zu: Navigation, Suche
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.“

Wikipedia

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
Contenido contenido.org
WebsiteBaker websitebaker2.org
WordPress wordpress.org

Ein allgemeiner PHP-Wrapper

Der folgende PHP-Code kann in jede PHP-basierten Webseite verwendet werden.

  1. <?php
  2. /**
  3.  * Website-Export, Wrapper zur Einbindung der Website-Skripte in PHP-Anwendungen
  4.  *
  5.  * @author Andreas Rudolph & Walter Wagner
  6.  * @copyright 2009, OpenEstate.org
  7.  * @license http://www.gnu.org/licenses/gpl-3.0.txt
  8.  */
  9.  
  10.   // ImmoTool-Umgebung konfigurieren
  11.   define( 'IMMOTOOL_BASE_PATH', '../' );  // Server-Pfad zu den ImmoTool-Skripten
  12.   define( 'IMMOTOOL_BASE_URL', '../' );   // URL zu den ImmoTool-Skripten
  13.  
  14.   // Script ermitteln
  15.   if (isset($_REQUEST['wrap']) && $_REQUEST['wrap']=='expose') 
  16.   {
  17.     $wrap = 'expose';
  18.     $script = 'expose.php';
  19.   }
  20.   else
  21.   {
  22.     $wrap = 'index';
  23.     $script = 'index.php';
  24.   }
  25.  
  26.   // Script ausführen
  27.   ob_start();
  28.   include( IMMOTOOL_BASE_PATH . $script );
  29.   $page = ob_get_contents(); 
  30.   ob_clean();
  31.  
  32.   // Stylesheets
  33.   $setup = new immotool_setup();
  34.   if (is_callable(array('immotool_myconfig', 'load_config_default'))) immotool_myconfig::load_config_default( $setup );
  35.   $stylesheets = array( IMMOTOOL_BASE_URL . 'style.php' );
  36.   if (is_string($setup->AdditionalStylesheet) && strlen($setup->AdditionalStylesheet)>0) $stylesheets[] = $setup->AdditionalStylesheet;
  37.  
  38.   // Ausgabe erzeugen
  39.   echo immotool_functions::wrap_page( $page, $wrap, $_SERVER['SCRIPT_NAME'], IMMOTOOL_BASE_URL, $stylesheets );
  40. ?>
  • 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 wrap wird 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.

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.

  1.   function wrap_page( &$page, $wrapType, $wrapperScriptUrl, $immotoolBaseUrl, $stylesheets )
  2.   {
  3.     // Stylesheets importieren
  4.     $styles = '';
  5.     if (is_array($stylesheets) && count($stylesheets)>0)
  6.     {
  7.       $styles = "\n<style type=\"text/css\">";
  8.       foreach ($stylesheets as $style) $styles .= "\n@import \"$style\";";
  9.       $styles .= "\n</style>";
  10.     }
  11.  
  12.     // Ersetzungen
  13.     $replacements = array(
  14.       // Inhalt des BODY-Tags ermitteln
  15.       '/(.*)<body([^>]*)>(.*)<\/body>(.*)/is' => '<div\2>'.$styles.'\3</div>',
  16.  
  17.       // Verlinkungen innerhalb der aktuellen Seite  
  18.       '/<a([^>]*)href="\?([^"]*)"/is' => '<a\1href="'.$wrapperScriptUrl.'?wrap='.$wrapType.'&amp;\2"',
  19.  
  20.       // index.php => Links
  21.       '/<a([^>]*)href="index\.php"/is' => '<a\1href="'.$wrapperScriptUrl.'?wrap=index"',
  22.       '/<a([^>]*)href="index\.php\?([^"]*)"/is' => '<a\1href="'.$wrapperScriptUrl.'?wrap=index&amp;\2"',
  23.  
  24.       // index.php => Formulare
  25.       '/<form([^>]*)action="index\.php"/is' => '<form\1action="'.$wrapperScriptUrl.'?wrap=index"',
  26.  
  27.       // expose.php => Links
  28.       '/<a([^>]*)href="expose\.php"/is' => '<a\1href="'.$wrapperScriptUrl.'?wrap=expose"',
  29.       '/<a([^>]*)href="expose\.php\?([^"]*)"/is' => '<a\1href="'.$wrapperScriptUrl.'?wrap=expose&amp;\2"',
  30.  
  31.       // expose.php => Formulare
  32.       '/<form([^>]*)action="expose\.php([^"]*)"/is' => '<form\1action="'.$wrapperScriptUrl.'?wrap=expose\2"',
  33.  
  34.       // captcha.php
  35.       '/<img([^>]*)src="captcha\.php"/is' => '<img\1src="'.$immotoolBaseUrl.'captcha.php"',
  36.       '/<img([^>]*)src="captcha\.php\?([^"]*)"/is' => '<img\1src="'.$immotoolBaseUrl.'captcha.php?\2"',
  37.       '/src=\'captcha\.php([^\']*)\'/is' => 'src=\''.$immotoolBaseUrl.'captcha.php\1\'',
  38.  
  39.       // Links auf PDF-Exposés
  40.       '/<a([^>]*)href="data\/([^"]*)\.pdf"/is' => '<a\1href="'.$immotoolBaseUrl.'data/\2.pdf"',
  41.  
  42.       // Datenverzeichnis
  43.       '/<img([^>]*)src="img\/([^"]*)"/is' => '<img\1src="'.$immotoolBaseUrl.'img/\2"',
  44.       '/<img([^>]*)src="data\/([^"]*)"/is' => '<img\1src="'.$immotoolBaseUrl.'data/\2"',
  45.     );
  46.     return preg_replace( array_keys($replacements), array_values($replacements), $page );
  47.   }

Seiten in der Kategorie „PHP-Wrapper“

Es werden 4 von insgesamt 4 Seiten in dieser Kategorie angezeigt:

P

Persönliche Werkzeuge