[PHP] Automatyczne ładowanie treści
W tym wpisie stworzymy prostą funkcję ładującą treści na stronę. Funkcja ta będzie oparta o instrukcję switch i adekwatnie do tego o jaką stronę użytkownik zapyta, taka zostanie mu wyświetlona. Jeśli strona, o którą zapyta użytkownik nie istnieje, zostanie mu wyświetlony komunikat o błędzie 404.
Kod PHP
<?php
function load_content() {
$page = strip_tags($_GET['page']);
$title = '';
$content = '';
switch($page) {
case 'o-stronie':
$title = 'O stronie';
$content = 'Lorem ipsu...';
break;
case 'kontakt':
$title = 'Kontakt';
$content = 'Lorem ipsu...';
break;
// ...
default:
$title = '404 Not Found';
$content = 'Taka strona nie istnieje.';
}
return ['title' => $title, 'content' => $content];
}
Na początku filtrujemy zmienną $_GET['page'], następnie zmienną $page, do której przypisaliśmy wartość zmiennej $_GET['page'] porównujemy w blokach case do ustalonych wartości. Instrukcja switch pozwala na porównanie tej samej zmiennej z wieloma wartościami, a co za tym idzie pozwala programiście uniknąć użycia instrukcji if i zapisu typu:
if($page === 'pierwsza-strona')
// ...if($page === 'kolejna-strona')
// ...
Funkcja zwraca tablicę z tytułem i treścią danej podstrony, jeśli porównanie się powiedzie lub komunikat o błędzie 404 w każdym innym wypadku. Wywołanie funkcji w miejscu, w którym chcemy wyświetlać treść podstrony może wyglądać tak:
<?php
$content = load_content();
echo $content['content'];
Plik .htaccess
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteRule ^([a-z\-]+)$ index.php?&page=$1 [L]
Aby uzyskać przyjazne linki dopisujemy do pliku .htaccess regułę:
RewriteRule ^([a-z\-]+)$ index.php?&page=$1 [L]
co wymusi przypisywanie ciągu znaków występującego po index.php? i zgodnego z wyrażeniem [a-z\-]+ do zmiennej $_GET['page']. Jeśli do pliku .htaccess nie zostanie dopisana odpowiednia reguła to zapytanie o stronę będzie wyglądało typowo: index.php?page=o-stronie.
Powyższy kod jest tylko prostym przykładem jak można stworzyć dynamiczne ładowanie treści na stronę www.
Komentarze
Prześlij komentarz
Dzięki za komentarz!