Autor Zpráva
Moriturus
Profil
Dobrý den,
chtěl jsem se zeptat, jak je možné pomocí HTML5, CSS3 nebo Javascriptu zařídit, abych měl na všech stránkách stejné menu, nebo jakýkoli jiný obsah, aniž bych ho musel měnit pokaždé na všech stránkách vzlášť.
Děkuji
jenikkozak
Profil
Skládání stránek z kousků
Kubo2
Profil
Moriturus:
Na Polopatě.JakPsátWeb.cz o include, jeho využití + druhá časť (o využití).


Polopatickú stránku je možné zostaviť asi takto (na polopate.jakpsatweb.cz je to obšírnejšie popísané):
<?php
// súbor index.php
header("Content-Type: text/html", true, 200);

// vytvoríme si dočasnú funkciu na renderovanie stránky
$pageGenerator = function($contentFilename, $exit = true) {
  $pageStart = file_get_contents("./meta/head.html");
  $pageContents = file_get_contents($contentFilename);
  preg_match("~<!--\s*TITLE:\s*\"(.+)\"\s*-->~i", $pageContents, $titleComment);
  $pageContents = str_replace($titleComment[0], '', $pageContents);
  $pageStart = preg_replace("~(<title>).*(</title>)~si", "$1$titleComment[1]$2", $pageStart);
  echo $pageStart;
  echo "\n";
  readfile("./meta/menu.html");
  echo $pageContents;
  readfile("./meta/footer.html");
  if($exit) {
    flush();
    exit;
  }
};

// zistíme meno požadovanej stránky, ochránime sa pred útokmi typu ../index či ../config
$pageName = isset($_GET['page']) ? str_replace("/", '', trim($_GET['page'])) : false;

// ak nie je adresa v tvare index.php?page=..., vkladáme domovskú stránku
if(!$pageName) $pageName = "home";

// zistíme skutočné meno súboru 
//(adresár pages/ v je podadresár adresára s index.php, ktorý je práve spracovánvaný)
// ako príponu si môžeš zvoliť tú, akú majú *všetky* súbory v adresári pages/
// t.j. zameň .php na konci názvu súboru za ľubovoľný text
$pageFile = "./pages/$pageName.php";

// ak stránka neexistuje, vlož 404ku a skonči
// toto si môžeš prepísať, aby 404ka tiež bola generovaná ako ostatné stránky
// t.j. s vkladaným menu aj hlavičky a/či pätičky
if(!file_exists($pageFile)) {
  @header("Connection: close", true, 404);
  @require("./pages/404.html"); # 404.html má byť kompletná stránka
  exit;
}

// renderujeme stránku s pomocou funkcie, ktorú sme si napísali
$pageGenerator($pageFile);

Pôvodne som chcel napísať malý skriptík, ale nejako som sa rozpísal. Tak som k tomu prirobil aspoň malú dokumentáciu:

Filesystém by si mal mať nasledovný:
• /
  • index.php
  • meta/
    • head.html
    • menu.html
    • footer.html
  • pages/
    • 404.html
    • ...
  • .../

# /

Koreň dokumentov.

# /index.php

Sem patrí vyššie uvedený kód.

# /meta/

Adresár so súbormi pre hlavičku stránky a pätičku stránky. Mali by sa volať /meta/head.html, /meta/footer.html a /meta/menu.html. Mali by mať takú štruktúru, aby po zložení vytvorili bezchybnú stránku, t.j. head.html by mal obsahovať <!doctype>, otváraciu značku <html>, hlavičku <head>... <title>Document</title></head> a začiatok <body> s grafickou hlavičkou.
Naopak footer.html by mal všetko ukončovať.
menu.html má obsahovať menu.

# /pages/

Obsahuje súbory s príponou, ktorú si určíš v skripte. Tieto súbory majú byť prostý text, doplnený o HTML značky, nie kompletné HTML stránky.

# /pages/404.html

Jediný súbor, pre ktorý je nutnosťou, aby bol kompletná HTML stránka. Obsahuje chybovú stránku 404.

Funguje to približne tak, že ak si požiadaš o stránku http://tvoja-domena.cz/index.php?page=nazov-stranky, skript sa pokúsi vygenerovať stránku s obsahom zo súboru http://tvoje-domena.cz/pages/nazov-stranky.php (PHP kód v súbore sa nespracuje) a s titulkom, ktorý umiestniš kdekoľvek do tohoto súboru do <!-- HTML komentára -->.
Tento komentár musí byť v nasledujúcom tvare:
<!-- TITLE: "Titulok výslednej stránky" -->
a v súbore /meta/head.html by mal byť aspoň prázdny zápis titulku <title></title> - tento titulok sa vo výslednom kóde nahradí za <title>Titulok výslednej stránky</title> alebo všeobecne povedané za text medzi úvodzovkami v zmienenom HTML komentári. Tento komentár sa z výsledného kódu odstráni.

Pri neexistencii súboru s menom zodpovedajúcom GET parametru page sa zobrazí predpripravená stránka /pages/404.html, skript pošle HTTP/1.1 404 Page Not Found a skončí.

V prípade, že sa súbor index.php zavolá bez parametru page alebo je parameter page prázdny, vloží sa domovská stránka /pages/home.php.

A to je asi tak všetko.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: