Include - struktura serwisu WWW

DZIAŁANIE:
GÓRNA CZĘŚĆ

GÓRNA CZĘŚĆ

GÓRNA CZĘŚĆ

LEWA CZĘŚĆ

ZAWARTOŚĆ SERWISU
GÓRNA CZĘŚĆ

Jakaś STOPKA

 

Kod:

Ewentualne Objaśnienia:

Czasem pewnie zastanawialiście się jak są zbudowane serwisy, które po ich samym wyglądzie wskazują na użycie czegoś takiego jak HTMLowe ramki. Jednak nagle patrzycie w kod takiej strony i widać, że żadnych ramek tam nie ma! Więc co ? Albo to złudzenie albo jednak serwis jest oparty o kilka dokumentów ? Zgadza się !! Jest to technika bardzo łatwa do wykonania w języku PHP.
Pamiętacie niedawno omawianą funkcję include ? No właśnie !! Pozwala ona w dowolnym miejscu serwisu WWW wstawić jakiś ( jego zawartość ) plik czyli inną stronę.

Przyjrzyjmy się więc powyższemu przykładowi.
Jest to kod, który powoduje wyświetlenie informacji z 3 różnych pod plików oraz pliku głównego. Jak widać jest to struktura serwisu WWW z podziałem jakby na:
- górną część - jakieś logo itp;
- lewą część - menu czy jakieś statystyki;
- środek - zawartość serwisu;
- dolna część - jakaś stopka czy coś;

Wiadomo efekt taki można również uzyskać poprzez ramki. Ale myślę, że każdy wie że nie jest to najlepsze rozwiązanie z wielu powodów.
Dlatego można to łatwo zrobić przy pomocy języka PHP.

Popatrzmy na powyższy kod:
Jak widzicie przy pomocy zwykłego HTMLa stworzyłem tabele podzieloną na "te części" serwisu, czyli góra, lewa, środek, dolna część. Znaczenie znaczników HTMLowych oczywiście nie będę Wam tutaj omawiał, liczę na to że tyle to każdy wie.
I teraz w każdej części ( poza środkiem - o tym za chwilę ) mamy niemal taki sam kod PHP.
Więc jak to działa popatrzmy:
- mamy pierw coś takiego:

if(!isset($dolna))
{
$dolna="3";
}

Jak widać pojawia się tutaj funkcja isset. Co ona oznacza ? Funkcja isset sprawdza czy zmienna została utworzona. Zwraca  wartość true jeśli istnieje lub false jeśli zmiennej nie ma. Wyjątek stanowi sytuacje gdy zmienna ma "wartość" NULL - wtedy funkcja isset zwraca false.
W instrukcji warunkowej if przed funkcją isset mamy znak '!' ( wykrzyknik ). Oznacza on negację ( zaprzeczenie ).
Tak więc popatrzmy: kod ten sprawdza czy zmienna $dolna została utworzona, jednak warunek jest zanegowany więc: jeżeli zmienna $dolna nie została utworzona to podstaw pod nią wartość 3.

- dalej mamy kod:

if(file_exists("$dolna.htm"))
{
include("$dolna.htm");
}
else { echo "Przepraszamy ale nie można wyświetlić tej strony!";
}
?>

Znowu pojawia się nam coś nowego mianowicie składnia: file_exists. Dzięki niej możemy sprawdzić czy plik istnieje ( został utworzony wcześniej przez nas ). Tak więc dalsze działanie myślę, że jest proste - instrukcja warunkowa if sprawdza czy istnieje plik $dolna.htm - czyli skoro zmienna $dolna jak już mówiliśmy ma wartość 3 - więc sprawdza czy istnieje plik 3.htm. Oczywiście zmienną dolna można było także nazwać inaczej, a rozszerzenie mogłoby być tego pliku html albo inne - wszystko jak widać można zmienić w kodzie.
Jedziemy dalej. Jeżeli istnieje ten plik ( 3.htm ) no to finkcja include wstawia nam go do serwisu, jeżeli plik ten nie istnieje wyświetla się nam komunikat, że nie można wyświetlić strony.
Popatrzcie uważnie w kod! Jak widać informacja o niemożliwości wyświetlenia strony jest napisana za pomocą instrukcji echo, a nie print, z które dotychczas korzystałem. Są to bardzo podobne funkcje, można było tutaj również skorzystać z print. Osobiście wole używać print, są jednak pewne różnice, ale o tym może później.

I teraz jak widzicie w każdej części jest ten sam kod PHP tylko z innymi nazwami zmiennych oraz ich wartościami, zależnymi od nazwy pliku ( pod strony ).

Jak widać część lewa, dolna oraz górna jest wstawiana z zewnętrznych plików natomiast środek jest zmienny. Tak więc każda pod strona serwisu wygląda "tak samo" tylko ma inną zawartość środka.
Niektórzy robią inaczej mianowicie tak iż to lewa część i na przykład górna i dolna są bezpośrednio z wywołanego pliku a tylko środek jest z zewnętrznych plików. Czyli na odwrót jak ja pokazałem. Która metoda jest lepsza ? Ta druga wydaje się lepsza tak w sumie i wymaga mniej załadować z zewnętrznego pliku ( tylko 1 - natomiast moja metoda aż 3) , ale jest jedno ale... właśnie chodzi o wyszukiwarki. Jeżeli ktoś znajdzie pod stronę jakąś w wyszukiwarce i wejdzie na serwis oparty na moim sposobie wyświetli się mu zarówna ta pod strona jak i reszta czyli menu itd. Natomiast w sposobie drugim wyświetli się sam plik z zawartością pod strony. Warto pomyśleć jak zbudować strukturę serwisu WWW. Można dowolnie kombinować, może sami wpadniecie na jeszcze ciekawsze rozwiązania.

Warto też zwrócić uwagę, że ja w przykładzie strukturę oparłem o tabele. Zawsze można korzystać z bloków DIV i wszelkich innych technik to już zależy od waszych przyzwyczajeń, umiejętności itd. Przy tabelach należy pamiętać o odpowiednich ich rozmiarach ustawieniach valign itd... Warto też Każdą część zrobić w osobnej strukturze <table></table> a nie jak na przykładzie w jednej tabeli. Dlaczego ? Wierzcie mi na słowo, że czasem wtedy się dzieją różne dziwne rzeczy :)
Warto też zapamiętać, że jeżeli korzystamy ze styli CSS to wystarczy go dołączyć ( nie będę pisał jak to chyba wiecie ) tylko do jednej pod strony wstawianej poprzez include, a wtedy styl zostanie automatycznie zastosowani do każdej części serwisu WWW.