Wie man Microsites schreibt

Stellen Sie sich vor, Sie müssen schnell eine kleine Website für eine bevorstehende Veranstaltung Ihres Unternehmens erstellen. Sie soll einfach, schnell und ohne unnötige Komplikationen sein. Sie denken vielleicht, dass ein solch kleines Projekt kein robustes Framework benötigt. Aber was wäre, wenn die Verwendung des Nette-Frameworks diesen Prozess erheblich vereinfachen und beschleunigen könnte?

Auch bei der Erstellung einfacher Websites wollen Sie nicht auf Komfort verzichten. Sie wollen das Rad nicht neu erfinden. Seien Sie ruhig faul und gönnen Sie sich etwas. Das Nette Framework lässt sich auch hervorragend als Micro-Framework einsetzen.

Wie könnte eine solche Microsite aussehen? Zum Beispiel kann der gesamte Code der Website in einer einzigen index.php Datei im öffentlichen Ordner untergebracht werden:

<?php

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

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

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

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

// Route für URL https://example.com/
$router->addRoute('', function ($presenter, Nette\Http\Request $httpRequest) {
	// Erkennung der Browsersprache und Umleitung auf URL /en oder /de usw.
	$supportedLangs = ['en', 'de', 'cs'];
	$lang = $httpRequest->detectLanguage($supportedLangs) ?: reset($supportedLangs);
	$presenter->redirectUrl("/$lang");
});

// Route für URL https://example.com/cs nebo https://example.com/en
$router->addRoute('<lang cs|en>', function ($presenter, string $lang) {
	// Anzeige der entsprechenden Vorlage, zum Beispiel ../templates/de.latte
	$template = $presenter->createTemplate()
		->setFile(__DIR__ . '/../templates/' . $lang . '.latte');
	return $template;
});

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

Alles andere sind Vorlagen, die im übergeordneten Ordner /templates gespeichert werden.

Der PHP-Code in index.php richtet zunächst die Umgebung ein, definiert dann die Routen und führt schließlich die Anwendung aus. Der Vorteil ist, dass der zweite Parameter der Funktion addRoute() eine Callable sein kann, die ausgeführt wird, wenn die entsprechende Seite geöffnet wird.

Warum Nette für Microsites verwenden?

  • Entwickler, die Tracy einmal ausprobiert haben, können sich heute nicht mehr vorstellen, ohne es zu programmieren.
  • Aber vor allem werden Sie das Templating-System Latte nutzen, denn schon ab 2 Seiten werden Sie Layout und Inhalt trennen wollen.
  • Und Sie wollen sich auf jeden Fall auf das automatische Escaping verlassen, um XSS-Schwachstellen zu vermeiden.
  • Nette sorgt auch dafür, dass im Falle eines Fehlers niemals PHP-Fehlermeldungen angezeigt werden, sondern eine benutzerfreundliche Seite.
  • Wenn Sie Feedback von den Nutzern erhalten möchten, zum Beispiel in Form eines Kontaktformulars, können Sie auch Formulare und eine Datenbank hinzufügen.
  • Sie können ausgefüllte Formulare auch einfach per E-Mail verschicken lassen.
  • In manchen Fällen ist die Zwischenspeicherung nützlich, z. B. beim Herunterladen und Anzeigen von Feeds.

In der heutigen Zeit, in der Geschwindigkeit und Effizienz entscheidend sind, ist es wichtig, über Werkzeuge zu verfügen, die es Ihnen ermöglichen, Ergebnisse ohne unnötige Verzögerungen zu erzielen. Das Nette-Framework bietet genau das – schnelle Entwicklung, Sicherheit und eine breite Palette von Tools wie Tracy und Latte, die den Prozess vereinfachen. Installieren Sie einfach ein paar Nette-Pakete, und die Erstellung einer solchen Microsite wird zum Kinderspiel. Und Sie wissen, dass es keine versteckten Sicherheitslücken gibt.