Include zamiast kopiuj/wklej
Data: 2016-11-05, autor: Michał MisztalNie będzie to jakiś odkrywczy wpis. Po prostu przeglądałem pewną stronę. I twórcy tej strony ambitnie postanowili tworzyć ją w czystym htmlu. Problem jest tego typu, że jest tam już kilka podstron. Poza tym na stronie pojawiają się aktualności. A dynamiczna treść nie może być generowana językiem znaczników. Potrzebny jest jakiś język programowania.
Obecny proces tworzenia wygląda tak - piszemy plik index.html i jego zawartość wklejamy jako pliki podstron. Byłoby całkiem znośnie gdyby plik index.html kopiować pod innymi nazwami. Ale nie. I mamy błędy w postaci urwanych nagłówków.
Nie będę też pisał dlaczego taki proces jest zły. Bo bez wątpienia jest. Trzeba przecież pisać tą samą rzecz wiele razy. Mam nadzieję, że sami zainteresowani to przeczytają. Całość nie będzie skomplikowana bo użyję tylko podstawowych funkcji PHP.
OK. Najpierw trzeba stworzyć plik index.php, czyli główny plik. Przydałoby się również stworzyć folder na treść dołączaną do strony czyli np folder /inc. Załóżmy, że w tym folderze będzie main.inc, o-nas.inc i kontakt.inc. Na razie to wygląda tak
/ | index.php | inc | kontakt.inc | main.inc | o-nas.inc
W pliku indeksu umieszczamy podstawowy szablon strony a w pozostałych zawartość która będzie się zmieniać. Logiką zajmie się instrukcja switch(), czyli
<?php
$strona=htmlentities($_GET['strona']);
?>
<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="utf-8">
<title>Tytuł</title>
</head>
<body>
<?php
switch($strona){
case 'kontakt':
case 'o-nas':
include '/inc/'.$strona.'.inc';
break;
default:
include 'main.inc';
break;
}
?>
</body>
</html>
Zasada jest prosta: metodą GET otrzymujemy zmienną $strona. W zależności co w tej zmiennej jest to ta strona zostaję załadowana. Gdy podanej strony nie ma to zostaje załadowana strona z sekcji default. Można to rozwiązać inaczej ale tak jest bezpieczniej i prościej. Aby dostać się do strony korzystamy ze składni strona/index.php?strona=podstrona. Czyli aby załadować stronę o-nas należy wpisać strona/index.php?strona=o-nas.
I to wszystko. Całość jest nieskomplikowana i lekkostrawna.
PS. Dodam tylko twórcom tamtej witryny - nie używajcie spacji (nbsp) do wyrównywania wyrazów. Może u Was jest dobrze ale u innych - nie bardzo.
PPS. Do automatycznego numerowania pozycji listy lepiej posłużyć się faktycznie listą (ul lub ol).
PPPS. No i bgcolor? Poważnie? Może i CDN...