Cómo escribir microsites

Imagine que necesita crear rápidamente un pequeño sitio web para un evento que se acerca en su empresa. Tiene que ser sencillo, rápido y sin complicaciones innecesarias. Quizá piense que para un proyecto tan pequeño no hace falta un framework robusto. ¿Pero y si usar Nette Framework pudiera simplificar y acelerar precisamente ese proceso?

Incluso al crear webs sencillas no quiere renunciar a la comodidad. No quiere reinventar lo que ya está resuelto. Sea perezoso sin remordimientos y déjese mimar. Nette Framework es excelente también para usarlo como microframework.

¿Qué aspecto puede tener un microsite así? Por ejemplo, todo el código de la web puede estar en un único archivo index.php dentro del directorio público:

<?php

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

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

// crea el contenedor DI a partir de la configuración de config.neon
$configurator->addConfig(__DIR__ . '/../app/config.neon');
$container = $configurator->createContainer();

// configura el enrutamiento
$router = new Nette\Application\Routers\RouteList;
$container->addService('router', $router);

// ruta para la URL https://example.com/
$router->addRoute('', function ($presenter, Nette\Http\Request $httpRequest) {
	// detecta el idioma del navegador y redirige a la URL /en o /de, etc.
	$supportedLangs = ['en', 'de', 'cs'];
	$lang = $httpRequest->detectLanguage($supportedLangs) ?: reset($supportedLangs);
	return $presenter->redirectUrl("/$lang");
});

// ruta para la URL https://example.com/cs o https://example.com/en
$router->addRoute('<lang cs|en|de>', function ($presenter, string $lang) {
	// muestra la plantilla adecuada, por ejemplo ../templates/en.latte
	$template = $presenter->createTemplate()
		->setFile(__DIR__ . '/../templates/' . $lang . '.latte');
	return $template;
});

// ¡ejecuta la aplicación!
$container->getByType(Nette\Application\Application::class)->run();

Todo lo demás serán plantillas guardadas en el directorio superior /templates.

El código PHP de index.php primero prepara el entorno, después define las rutas y por último ejecuta la aplicación. La ventaja está en que el segundo parámetro de la función addRoute() puede ser un callable, que se ejecuta al abrir la página correspondiente.

¿Por qué usar Nette para microsites?

  • Los programadores que han probado Tracy hoy ya casi no se imaginan programar sin ella.
  • Sobre todo, aprovechará el sistema de plantillas Latte, porque incluso con dos páginas querrá separar el layout y el contenido.
  • Y sin duda quiere contar con el escapado automático para evitar vulnerabilidades XSS.
  • Nette también se asegura de que, en caso de error, nunca se muestren los mensajes de error de PHP en bruto, sino una página amable para el usuario.
  • Si quiere recoger opiniones de los usuarios, por ejemplo con un formulario de contacto, puede añadir fácilmente soporte para formularios y bases de datos.
  • También puede hacer con facilidad que los formularios rellenados se envíen por correo.
  • A veces le vendrá bien el almacenamiento en caché, por ejemplo al descargar y mostrar feeds.

En el mundo acelerado de hoy, donde la velocidad y la eficiencia son cruciales, es vital tener herramientas que le permitan lograr resultados sin retrasos innecesarios. Nette Framework ofrece justamente eso: desarrollo rápido, seguridad y un amplio abanico de herramientas como Tracy y Latte que agilizan el proceso. Basta con instalar unos pocos paquetes de Nette y construir un microsite así se vuelve increíblemente fácil. Y puede estar tranquilo de que no hay vulnerabilidades de seguridad ocultas.