⊗ppPmSDFl 437 of 447 menu

Motore basato su file in PHP

Implementeremo un motore per il sito che ci permetterà di creare un file template a cui, in base all'URL, verrà collegato contenuto diverso.

Supponiamo che la struttura della nostra pagina sia la seguente:

<!DOCTYPE html> <html> <head> <title>title</title> </head> <body> <header> header </header> <main> content </main> <header> footer </header> </body> </html>

Inseriamo nel punto in cui dovrebbe avvenire l'inserimento del contenuto un comando da noi inventato per l'inserimento, ad esempio così: {{ content }}. Modifichiamo il template del nostro sito:

<!DOCTYPE html> <html> <head> <title>title</title> </head> <body> <header> header </header> <main> {{ content }} </main> <header> footer </header> </body> </html>

Creiamo ora una cartella view, in cui posizioneremo i file di contenuto. Direttamente in questa cartella o in sottocartelle.

Il primo file sarà così:

<div> content 1 </div>

Il secondo file sarà così:

<div> content 2 </div>

Il terzo file sarà così:

<div> content 3 </div>

Facciamo ora in modo che in base all'URL della barra degli indirizzi venga caricato il file corrispondente. Nel nostro caso, all'URL /page1 corrisponderà il primo file, all'URL /dir/page2 - il secondo, e all'URL /dir/sub/page3 - il terzo.

Iniziamo l'implementazione. Per prima cosa, nel file .htaccess, facciamo in modo che tutti gli indirizzi richiesti, eccetto i file di risorse, vengano reindirizzati alla pagina index.php:

RewriteEngine On RewriteBase / RewriteCond %{REQUEST_URI} !\.(js|css|ico|jpg|png|gif)$ RewriteRule .+ index.php

Nella pagina index.php, otteniamo in una variabile l'URL richiesto:

<?php $url = $_SERVER['REQUEST_URI']; ?>

Poi otteniamo il testo del file del template:

<?php $layout = file_get_contents('layout.php'); ?>

Ora, in base all'URL, otteniamo dalla cartella view il file di contenuto corrispondente:

<?php $content = file_get_contents('view' . $url . '.php'); ?>

Sostituiamo nel testo del template il comando da noi inventato con il contenuto ottenuto dal file:

<?php $layout = str_replace('{{ content }}', $content, $layout); ?>

Stampiamo nel browser il file template con il contenuto sostituito:

<?php echo $layout; ?>

Mettiamo tutto insieme e otteniamo il seguente codice:

<?php $url = $_SERVER['REQUEST_URI']; $layout = file_get_contents('layout.php'); $content = file_get_contents('view' . $url . '.php'); $layout = str_replace('{{ content }}', $content, $layout); echo $layout; ?>

Implementate il motore basato su file descritto.

Italiano
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesia日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Utilizziamo i cookie per il funzionamento del sito, l'analisi e la personalizzazione. I dati vengono elaborati in conformità con la Politica sulla privacy.
accetta tutto personalizza rifiuta