2012-10-25 11 views
5

Więc robię witryny o I wojnie światowej jako przypisanie szkoły i chcę to pojawiają się w każdym dokumencie:Szablony 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> 

myślę, że to trochę głupie, aby skopiować i wkleić wszystko do każdego dokumentu, i starannie weź i zmień każdą stronę osobno, jeśli chcę zmienić tylko jedno słowo lub tag. Czy istnieje sposób, w jaki mogę umieścić to w template.htm (lub coś podobnego) i mieć kod php lub javascript wziąć to i wstawić wszystko z żądanego pliku wewnątrz tagu <article>? Nie znam zbyt wielu php, więc to dla was chyba guru, ale byłbym wdzięczny za pomoc.

+0

Cześć małpa kod, Jakiego oprogramowania używasz do tworzenia projektu? Jedynym powodem, dla którego pytam, jest to, że większość edytorów HTML posiada funkcję o nazwie "Snippets", która pozwala na dodawanie każdego używanego kodu regularnie, a kiedy chcesz go użyć, musisz wybrać jedną opcję z menu. Dreamweaver, projektant PHP, PHP Storm, PHPEd i większość innych ma tę funkcję. Jeśli dasz mi znać, czego użyję, spróbuję skierować cię we właściwym kierunku. – azzy81

+0

Zobacz wzór wzorcowy MVC. – JvdBerg

+0

@AronDraper Dzięki, ale nie szukam rozwiązania IDE, szukam fragment kodu, który mogę umieścić w moim dokumencie. –

Odpowiedz

14

pomocą PHP obejmuje:

Zapisz jako 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> 

ten Zapisz 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> 

Zmodyfikowane poszczególne strony byłoby tak:

<?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

poszczególne strony będą nadal zapisywane jako htm lub php? –

+0

Zostaną zapisane jako php, po prostu zauważyłem błąd w górnym szablonie. Naprawiony. –

+0

Czy musisz zadeklarować $ title przed zawarciem umowy? – josephpconley

2

Umieść zawartość w pliku abc.php

a następnie dodać do każdej strony, która ma żądaną zawartość:

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

więc jeśli kod jest:

<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> 

A chcesz, aby część wewnątrz numeru <nav> była powtarzana na każdej stronie, możesz umieścić zawartość między <nav> i </nav> (w tym znaczników) wewnątrz abc.php i obejmują abc.php w pliku tak:

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

To przyniesie pracę, ponieważ nawet trudny kod będzie zawarty na każdej stronie, jeśli chcesz edytować tylko jedną linię na każdej stronie, której nie chcesz może zobaczyć kod, aby to zrobić. – azzy81

+0

Myślę, że źle zrozumiałeś pytanie. Jeśli po prostu skopiuję/wkleję to, co mam do php, czy to nie wystarczy dodać zawartość strony na końcu zawartości php? Prawdziwe pytanie: jak mogę wstawić to, co mam w dokumencie wewnątrz znacznika '

'? –

0

Utwórz plik szablonu jako pojedynczy plik, dokładnie masz go już, ale drukowanie zmiennych PHP w miejscach, w których chcemy treści.

np

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

Następnie napisać funkcję PHP następująco:

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

Teraz można załadować zawartości strony w szablonie po prostu przez wywołanie funkcji i przekazywanie zawartości do niego na każda strona.

Tak więc, na przykład, może 1914.php wyglądać następująco:

<?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); 

?> 

Gratulacje. Masz teraz działający (choć bardzo prosty) system szablonów. Dodaj więcej zmiennych/symboli zastępczych do szablonu zgodnie z wymaganiami.

3

Można rozważyć jedną z tych popularnych silników Szablon:

  • Smarty (staje się przestarzały)

  • Latte (używany głównie przez społeczność Nette)

  • Twig (używane głównie przez społeczność Symfony)

  • Mustache (oficjalne implementacje tego silnika szablonów występować w więcej niż dwa tuziny proramming/języków skryptowych)

I mają tendencję do faworyzowania Mustache, głównie dlatego, że ma an official JS version, an official Ruby version,, an official Java version, itp. Umożliwia korzystanie z tego samego interfejsu i backendu szablonów, co jest bardzo przydatne w przypadku widżetów, które są najpierw renderowane w tle i ponownie wysyłane na pierwszym planie podczas aktualizacji.