Cześć!

Przedstawię dziś Wam prosty, alternatywny sposób na tworzenie podstron w małych serwisach. Dajmy na to mamy dziesięć lub dwadzieścia podstron na stronie – każda różni się tylko treścią, a menu nagłowek i stopka pozostają niezmienne. W takim wypadku nie ma najmniejszego sensu kopiować 10 razy plik index.html lub index.php i w każdej kopii od nowa wprowadzać treść. Pomyślcie co będzie, gdy zechcecie dodać link w stopce na każdej podstronie – musicie edytować wszystkie X podstron ręcznie!

Moje rozwiązanie opiera się na kilku prostych poleceniach w php – przesyłaniu nazwy podstrony metodą get oraz includowaniu odpowiedniej podstrony z treścią. Jedyne wymagania to serwer z obsługą php i opcjonalnie mod_revrite.

Na początek stwórz stronę index.php. Jeżeli masz mod_revrite to linki do podstron w menu niech wyglądają tak: twojastrona.pl/podstrona.html a jeżeli nie to w ten sposób: twojastrona.pl/?id=podstrona

Jak masz mod_revrite to wgraj plik .htaccess do katalogu głównego, a w nim:

RewriteEngine On
RewriteRule ^(.*).html$ index.php?id=$1 [L]

Następnie w pliku index.php w miejscu treści, wstaw kod:

<?php
$id = $_GET['id'];
if(isset($id)){
if(file_exists("data/".$id.".php")){
$plik = "data/".$id.".php";
include($plik);
}else{
echo "Error 404 - brak pliku";
}
}else{
include("data/home.php");
}
?>

Teraz na stronie głównej nie wyświetla się treść, natomiast kod który wstawiłeś będzie szukał treści w katalogu data/home.php – tam właśnie musisz wgrać treść strony głównej. Każda podstrona jaką stworzysz musi znajdować się w folderze data i musi mieć nazwę taką jak nazwa w linku w menu, czyli jak w menu masz link twojastrona.pl/podstrona.html to treść tej podstrony musi być w pliku data/podstrona.php

Tym oto sposobem moesz tworzyć mnóstwo podstron wgrywając pliki z treścią do katalogu data. Jak chcesz zmienić stopkę albo coś w nagłówku wchodzisz tylko w index.php i zmieniasz – zmiany będą widoczne na każdej podstronie. Co ciekawsze system ten nie jest do rozpoznania z zewnątrz.

W pliku index.php pomiędzy <title> a </title> możesz wstawić kod:

<?php
if(!isset($_GET['id'])){
echo'Strona główna';
}else{
echo ucfirst(str_replace('_', ' ', $_GET['id']));
}
?>

będzie on wyświetlał napis „Strona główna” gdy będziesz na stronie głównej, a gdy wejdziesz np. na twojastrona.pl/podstrona.html wyświetli napis „Podstrona”.

Sprawdź czy wszystko jest ok i czy działa, jeśli zrobiłeś zgodnie ze wskazówkami – musi działać :) W przeciwnym razie pisz w komentarzu w czym problem.