Include - struktura serwisu WWW
| DZIAŁANIE: |
|
||||||
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.