2012-10-25 3 views
5

Quindi, sto facendo un sito a proposito della prima guerra mondiale come un compito scolastico, e voglio che questo appaia in ogni documento:Modelli HTML - php?

<!DOCTYPE html> 

<html> 
<head> 
    <title>1914</title> 
    <script src="modernizr-1.5.js"></script> 
    <link href="styles.css" type="text/css" rel="stylesheet" /> 
    <meta charset="utf-8" /> 

</head> 
<body> 
    <div id="container"> 
    <header> 
    <img src="images/banner.png" alt="World War I" style="border: none"/> 
    <nav> 
     <ul> 
     <a href="index.htm"><li><span>Home</span></li></a> 
     <a href="1914.htm"><li><span>1914</span></li></a> 
     <a href="1915.htm"><li><span>1915</span></li></a> 
     <a href="1916.htm"><li><span>1916</span></li></a> 
     <a href="1917.htm"><li><span>1917</span></li></a> 
     <a href="1918.htm"><li><span>1918</span></li></a> 
     </ul> 
    </nav> 
    </header> 
    <section> 
    <article> 
    <br style="clear: both" /> 
    </article> 
    <aside> 
    </aside> 
    </section> 
    <footer style="font-weight: bold; letter-spacing: .1em"> 
    <a href="citations.htm">Citations</a> &bull; 
    <a href="about.htm">About</a> 
    </footer> 
    </div> 
</body> 
</html> 

Penso che sia un po 'stupido per copiare e incollare tutto questo in ogni documento, e faticosamente entrare e cambiare ogni pagina separatamente se voglio solo cambiare una parola o tag. C'è un modo per metterlo in template.htm (o qualcosa di simile) e prendere codice php o javascript e inserire tutto dal file richiesto all'interno del tag <article>? Non conosco molto php, quindi questo è probabilmente un pezzo di torta per i tuoi guru, ma gradirei l'aiuto.

+0

Hi Code Monkey, Che software stai usando per realizzare il tuo progetto? L'unica ragione per cui chiedo è che la maggior parte degli editor HTML ha una funzione chiamata 'Snippet' che ti permette di aggiungere qualsiasi codice che usi regolarmente e quando vuoi usare il codice devi semplicemente selezionare un'opzione da un menu. Dreamweaver, PHP Designer, PHP Storm, PHPEd e molti altri hanno questa funzione. Se mi fai sapere che cosa stai usando cercherò di guidarti nella giusta direzione – azzy81

+0

Dai un'occhiata al modello di progettazione MVC – JvdBerg

+0

@AronDraper Grazie, ma non sto cercando una soluzione IDE, sto cercando un pezzo di codice che posso inserire nel mio documento. –

risposta

14

utilizzando PHP include:

Salva questo come top.php

<html> 
<head> 
<title><?php echo $title; ?></title> 
<script src="modernizr-1.5.js"></script> 
<link href="styles.css" type="text/css" rel="stylesheet" /> 
<meta charset="utf-8" /> 

</head> 
<body> 
<div id="container"> 
<header> 
<img src="images/banner.png" alt="World War I" style="border: none"/> 
<nav> 
    <ul> 
    <a href="index.htm"><li><span>Home</span></li></a> 
    <a href="1914.htm"><li><span>1914</span></li></a> 
    <a href="1915.htm"><li><span>1915</span></li></a> 
    <a href="1916.htm"><li><span>1916</span></li></a> 
    <a href="1917.htm"><li><span>1917</span></li></a> 
    <a href="1918.htm"><li><span>1918</span></li></a> 
    </ul> 
</nav> 
</header> 
<section> 

Salva questo come bottom.php

<aside> 
</aside> 
</section> 
<footer style="font-weight: bold; letter-spacing: .1em"> 
<a href="citations.htm">Citations</a> &bull; 
<a href="about.htm">About</a> 
</footer> 
</div> 
</body> 
</html> 

Poi le pagine individuali sarebbero in questo modo:

<?php $title = '1914'; include("top.php");?> 
//This would be where you would make the changes that need to be made on each page. 

<article> 
<br style="clear: both" /> 
</article> 

<?php include("bottom.php");?> 
+0

le singole pagine verrebbero comunque salvate come htm o php? –

+0

Sarebbero stati salvati come php, ho appena realizzato che c'era un errore nel modello principale. Fisso. –

+0

Hai bisogno di dichiarare $ title prima dell'inserimento? – josephpconley

2

Mettere il contenuto in un file abc.php

e quindi aggiungere questo per ogni pagina che si desidera che il contenuto desiderato in:

<?php 
include("abc.php"); 
?> 

Così, se il codice è:

<nav> 
     <ul> 
     <a href="index.htm"><li><span>Home</span></li></a> 
     <a href="1914.htm"><li><span>1914</span></li></a> 
     <a href="1915.htm"><li><span>1915</span></li></a> 
     <a href="1916.htm"><li><span>1916</span></li></a> 
     <a href="1917.htm"><li><span>1917</span></li></a> 
     <a href="1918.htm"><li><span>1918</span></li></a> 
     </ul> 
    </nav> 
    </header> 
    <section> 
    <article> 
    <br style="clear: both" /> 
    </article> 
    <aside> 
    </aside> 
    </section> 

E si desidera che la parte all'interno di <nav> venga ripetuta in ogni pagina, è possibile inserire il contenuto tra <nav> e </nav> (compresi i tag) all'interno abc.php e comprendono abc.php nel file come questo:

<?php 
    include("abc.php"); 
?> 
    </header> 
    <section> 
    <article> 
    <br style="clear: both" /> 
    </article> 
    <aside> 
    </aside> 
    </section> 
+0

Questo non funzionerà perché anche il codice sarà difficile in ogni pagina se si desidera modificare solo una riga in ogni pagina che non si in grado di vedere il codice per farlo. – azzy81

+0

Penso che tu abbia frainteso la domanda. Se copio/incolli ciò che ho in php, non aggiungerei semplicemente il contenuto della pagina alla fine del contenuto del php? La vera domanda: come posso inserire ciò che ho nel documento all'interno del tag '

'? –

0

Creare il file di modello come un singolo file, esattamente lo avete già, ma le variabili stampa PHP nei luoghi in cui si desidera il contenuto.

esempio:

.... 
<article> 
<?php print $mainContent; ?> 
</article> 
.... 

quindi scrivere una funzione PHP come segue:

<?php 
function insertContentIntoTemplate($mainContent) { 
    require_once('/path/to/template.php'); 
} 
?> 

Ora è possibile caricare il contenuto della pagina nel modello semplicemente chiamando la funzione e passando il contenuto in esso per ogni pagina.

Così, per esempio, 1914.php potrebbe assomigliare a questo:

<?php 
require_once('/path/to/insertFunction.php'); 

//the text could be loaded from a DB, or from another file, or just as a plain string like this: 
$text = "The year was 1914, and the war was just starting."; 

insertContentIntoTemplate($text); 

?> 

Congratulazioni. Ora hai un sistema di template funzionante (anche se molto semplice). Aggiungi più variabili/segnaposto al tuo modello come richiesto.

3

Si potrebbe prendere in considerazione uno di questi motori di modelli popolari:

  • Smarty (diventando obsoleto)

  • Latte (usato principalmente dalla comunità Nette)

  • Twig (utilizzato soprattutto dalla comunità Symfony) (esistono implementazioni ufficiali di questo motore di template in più di due dozzine di proramming/linguaggi di scripting)

  • Mustache

tendo a favorire Mustache, principalmente perché ha an official JS version, an official Ruby version, an official Java version, ecc. Consente di utilizzare gli stessi modelli di frontend e backend, che è molto utile per i widget che vengono prima sottoposti a rendering in background e resi nuovamente in primo piano agli aggiornamenti.