Wir brauchen mal schnell nen Web-Portal…

2008/12/22

In einem früheren Beitrag war die kurz die Rede von einer Konfigurations-Webseite für die Datenverdichtung.
Aber wo installiert man die auf einem proprietären Windows-System, ohne sich tagelang in die Tiefen des IIS und ASP.NET zu verbasteln? Und woher bekommt man ein anständiges Design, Benutzer-Verwaltung, Zugangsrechte, etc.pp.?

IIS war Pflicht, weil schon das Portal des Reporting-Tools drauf lief. Port 80 also belegt, anderer Port für Anwender entweder zu kompliziert oder nicht benutzbar (interne Firmenrouter lassen nicht alle Ports durch).

Meine Lösung als bekennender PHP-Liebhaber: PHP drauf, mit IIS verbinden, MySQL und Drupal. Drupal ist ein freies CMS und bietet aus dem Stand das ganze Drumherum für ein Web-Portal: Benutzerverwaltung, berechtigungsspezifische Menüs, Gestaltung per Themes, usw.

Das eigentlich interessante an Drupal ist aber: Jede erstellte Seite kann per Knopfdruck auf PHP umgeschaltet werden. Als Entwickler kann man sich also ganz auf die Inhalte konzentrieren.

drupal_php_inhalt

PHP installieren und mit IIS zum rennen bringen: 3 Stunden. MySQL: Vernachlässigbar. Drupal mit Auswahl des Themes, Icons anpassen, Basismenüs und erste Benutzer einrichten; also bis die erster Inhaltsseite erstellt werden konnte: noch mal 3 Stunden. Es war schliesslich meine erste produktive Drupal-Installation 🙂

Jedenfalls waren die Eingabe-Forms dann sehr schnell realisiert.

Tipps für PHP-Seiten in Drupal

  • In neueren Drupal-Versionen muss das Eingabeformat PHP erst freigeschaltet werden.
    In der deutschen Version:
  1. Anmelden als Administrator
  2. Unter Verwalten / Einstellungen / Eingabeformate den Eintrag „PHP Code“ konfigurieren, so dass mindestens der Administrator dieses Format nutzen darf.
  • Die PHP-Seiten werden von Drupal per eval() verarbeitet. Deshalb müssen alle Variablen ausserhalb von Funktionen als global gekennzeichnet werden. Am besten wie eine traditionelle Deklaration in C.
    Das betrifft auch Variablen in den eigenen include() und require(), nicht jedoch mit define() erzeugte Konstanten.
  • Die Skripte verschwinden in der Datenbank von Drupal und sind damit schlecht in einer IDE zu bearbeiten. Wenn man gleich zu Beginn ein include() mit passenden Pfaden benutzt, kann man sehr bequem auf die eigentlichen Skripte in einem extra Verzeichnis verlinken.

In Drupal:

<?php
include('meine_include_pfade.php'); // setzt u.a. APPL_DIR
include(APPL_DIR . 'das_eigentliche_skript.php');
?>