Wie man Microsites schreibt

Stellen Sie sich vor, Sie müssen schnell eine kleine Website für die bevorstehende Veranstaltung Ihrer Firma erstellen. Sie soll einfach und schnell sein, ohne unnötige Komplikationen. Vielleicht denken Sie, dass Sie für ein so kleines Projekt kein robustes Framework brauchen. Aber was, wenn der Einsatz des Nette Frameworks diesen Prozess gerade vereinfachen und beschleunigen kann?

Auch beim Erstellen einfacher Websites wollen Sie schließlich nicht auf Komfort verzichten. Sie wollen nicht neu erfinden, was schon einmal gelöst wurde. Seien Sie ruhig faul und lassen Sie sich verwöhnen. Das Nette Framework lässt sich hervorragend auch als Micro-Framework einsetzen.

Wie kann eine solche Microsite aussehen? Zum Beispiel so, dass wir den gesamten Code der Website in einer einzigen Datei index.php im öffentlichen Verzeichnis unterbringen:

<?php

require __DIR__ . '/../vendor/autoload.php';

$configurator = new Nette\Bootstrap\Configurator;
$configurator->enableTracy(__DIR__ . '/../log');
$configurator->setTempDirectory(__DIR__ . '/../temp');

// erzeuge den DI-Container auf Basis der Konfiguration in config.neon
$configurator->addConfig(__DIR__ . '/../app/config.neon');
$container = $configurator->createContainer();

// wir richten das Routing ein
$router = new Nette\Application\Routers\RouteList;
$container->addService('router', $router);

// Route für die URL https://example.com/
$router->addRoute('', function ($presenter, Nette\Http\Request $httpRequest) {
	// wir erkennen die Sprache des Browsers und leiten auf die URL /en oder /de usw. weiter
	$supportedLangs = ['en', 'de', 'cs'];
	$lang = $httpRequest->detectLanguage($supportedLangs) ?: reset($supportedLangs);
	return $presenter->redirectUrl("/$lang");
});

// Route für die URL https://example.com/cs oder https://example.com/en
$router->addRoute('<lang cs|en|de>', function ($presenter, string $lang) {
	// wir zeigen das entsprechende Template an, zum Beispiel ../templates/en.latte
	$template = $presenter->createTemplate()
		->setFile(__DIR__ . '/../templates/' . $lang . '.latte');
	return $template;
});

// starte die Anwendung!
$container->getByType(Nette\Application\Application::class)->run();

Alles Übrige sind Templates, die im übergeordneten Verzeichnis /templates liegen.

Der PHP-Code in index.php bereitet zuerst die Umgebung vor, definiert dann die Routen und startet schließlich die Anwendung. Der Vorteil ist, dass der zweite Parameter der Funktion addRoute() ein Callable sein kann, das beim Öffnen der entsprechenden Seite ausgeführt wird.

Warum Nette für Microsites verwenden?

  • Programmierer, die Tracy einmal ausprobiert haben, können sich heute kaum vorstellen, ohne sie zu programmieren.
  • Vor allem aber profitieren Sie vom Templating-System Latte, denn schon ab zwei Seiten wollen Sie Layout und Inhalt getrennt haben.
  • Und Sie wollen sich unbedingt auf das automatische Escaping verlassen, damit keine XSS-Sicherheitslücke entsteht.
  • Nette sorgt außerdem dafür, dass bei einem Fehler niemals die technischen PHP-Fehlermeldungen angezeigt werden, sondern eine für den Benutzer verständliche Seite.
  • Wenn Sie Rückmeldungen von Benutzern sammeln wollen, etwa über ein Kontaktformular, ergänzen Sie einfach noch Formulare und die Datenbank.
  • Ausgefüllte Formulare können Sie sich ebenso leicht per E-Mail zusenden lassen.
  • Manchmal kann Ihnen auch das Caching gelegen kommen, zum Beispiel wenn Sie Feeds herunterladen und anzeigen.

In der heutigen Zeit, in der Geschwindigkeit und Effizienz entscheidend sind, ist es wichtig, Werkzeuge zu haben, mit denen Sie ohne unnötige Verzögerungen zu Ergebnissen kommen. Das Nette Framework bietet Ihnen genau das – schnelle Entwicklung, Sicherheit und eine breite Palette an Werkzeugen wie Tracy und Latte, die den Prozess vereinfachen. Es genügt, ein paar Nette-Pakete zu installieren, und der Aufbau einer solchen Microsite wird zum Kinderspiel. Und Sie können sicher sein, dass sich nirgends eine Sicherheitslücke versteckt.