Dziedziczenie html w php

0

Witam,

Mam takie pytanie. Otóż robię witrynę z wieloma podstronami i zastanawiam się, czy możliwe jest aby każda podstrona dziedziczyła jakiś domyślny układ html wraz ze stylami css i js. Dokładniej chodzi mi o to, aby nie wpisywać na każdej stronie o rozszerzeniu .php: DOCTYPE -> html, meta, head, itd., tylko żeby automatycznie czerpać te informacji z szablonu a ewentualnie jakieś dodatkowe formularze wpisywać za pomocą 'echo'. Da się coś takiego zrobić?

1

Dwie pierwsze opcje, które przychodzą mi do głowy:

  1. Każda podstrona to plik .PHP, w której na początku robisz coś takiego:
<head>
	<?php
		include 'header.html';
	?>
</head>

W pliku header.html umieszczasz nagłówki, np.:

<meta charset="UTF-8"/>
<link rel="Stylesheet" href="mojPlik.css"/>

Wówczas, gdy będziesz chciał dodać kolejne dane do nagłówka, zrobisz to tylko tu.

  1. IMHO lepszy, ale nieco trudniejszy sposób: Przesyłanie nazwy podstrony przez zmienną GET.

Robisz kilka plików z zawartością, np. blog.html, o-mnie.html i tak dalej, oraz jedną stronę główną index.php zawierającą wszystkie wspólne elementy, np. menu.
Zamiast robić linki:

<a href='blog.html'>Blog</a>
<a href='o-mnie.html'>O mnie</a>

Tworzysz zmienne GET w ten sposób:

<a href='?page=blog'>Blog</a>
<a href='?page=about'>O mnie</a>

Następnie w miejscu, w którym chcesz umieścić zawartość pliku, wczytujesz zmienną $_GET['page'] i dołączasz odpowiedni plik:

<?php
	switch($_GET['page']) {
		case 'blog':
			include 'blog.html';
			break;
		case 'about':
			include 'o-mnie.html';
			break;
		default:
			include 'main.html'; //strona domyślna
			break;
	}
?>

PS.
Lepiej to zrobić ze switchem - jak wyżej - niż dołączać plik po wartości zmiennej:

<?php
	include $_GET['page'].".html";
?>

Wydaje się to znacznie prostsze, ale serwer bez odpowiednich zabezpieczeń pozwoli na dołączenie w ten sposób każdego linku. Taki przykładowy haker mógłby podstawić tam dowolny adres URL ze swoim kodem, który zostałby później odpalony przez serwer. Rezultat opłakany.

1 użytkowników online, w tym zalogowanych: 0, gości: 1