LevΘ menu

tvorba a ·dr╛ba rozvr╛enφ strßnky

Umφst∞nφ sloupeΦku vlevo - Napln∞nφ a aktualizace obsahu menu

M≤da levΘho sloupeΦku

Dnes u╛ skoro nepotkßte strßnku, kterß by po levΘ stran∞ nem∞la prou╛ek s odkazy. V∞t╣inou vypadß rozvr╛enφ strßnek takto:

N∞jakΘ zßhlavφ
LevΘ menu
odkaz
odkaz
odkaz
odkaz
mail
Hlavnφ text strßnky

Text strßnky je cel² uzav°en² v tabulce. Bla bla bla, spousta moudr²ch v∞cφ.

TakovΘto rozvr╛enφ p°inß╣φ mnoho v²hod, jako nap°φklad p°ehlednost, stejn² motiv p°φbuzn²ch strßnek nebo z·╛enφ hlavnφho textu. N∞kdy se p°idßvß je╣t∞ prav² sloupeΦek, ideßlnφ to mφsto pro reklamy a upoutßvky.

Jak to ud∞lat

V∞t╣ina pou╛φvan²ch postup∙ se dß dob°e ilustrovat p°i omezenφ v²kladu na tvorbu levΘho sloupeΦku. S tφm jsou spojeny dva problΘmy, lΘpe °eΦeno rozhodnutφ:

  1. Jak umφstit sloupeΦek s odkazy vlevo (konstrukΦnφ problΘm)
  2. Jak naplnit a udr╛ovat obsah toho sloupeΦku aktußlnφ p°i p°φpadn²ch zm∞nßch (organizaΦnφ problΘm)

Napln∞nφ a ·dr╛ba velmi zßvisφ na konkrΘtnφch podmφnkßch autora. Umφst∞nφ sloupeΦku odkaz∙ vlevo je problΘm u╛╣φ -- omezuje se na HTML, pop°φpad∞ CSS, tak╛e tφm zaΦnu.

Umφst∞nφ sloupeΦku vlevo

Mo╛nosti:

Rßmy

Z metodiky rßm∙ se vlastn∞ obliba levΘho sloupeΦku vyvinula. Rßmy p°edstavujφ velmi snadnou cestu tvorby a aktualizace levΘho sloupeΦku (a historicky nejstar╣φ). Majφ v╣ak °adu chyb a problΘm∙, kv∙li nim╛ tuto metodu nemohu doporuΦit t∞m, kte°φ berou stavbu webu vß╛n∞. Zßjemce odkazuji na zßklady rßm∙.

Tabulka p°es celou strßnku

Dnes nejoblφben∞j╣φ metoda zφskala mnoho kladn²ch bod∙ svojφ spolehlivostφ, proto╛e se ve v╣ech prohlφ╛eΦφch zobrazuje skoro stejn∞. Drobnou nev²hodou je pomalΘ zobrazovßnφ strßnky (mßm obΦas pocit, ╛e si to nikdo neuv∞domuje), proto╛e celß strßnka se zobrazφ a╛ ve chvφli, kdy se naΦte celß ta tabulka.

P°φklad jednoduchΘ tabulky p°es celou strßnku:

<body>
<table border="0" cellpadding="6" cellspacing="0">


<tr> <td bgcolor="barva" width="150">LevΘ menu</td>

<td bgcolor="barva" width="600">Text strßnky</td>
</tr> </table>
</body>

Detaily tΘto metody lze nalΘzt u designu pomocφ tabulek.

ObtΘkanß tabulka

Tabulky se mohou nechat "plout" ve strßnce, tak╛e je ostatnφ text obtΘkß. ObΦas se toho vyu╛φvß pro vytvo°enφ jednoduchΘho levΘho nebo pravΘho sloupeΦku.

Tabulka s odkazy, vlastn∞ lev² sloupeΦek.

Text strßnky,
kter² obtΘkß tabulku. Zpravidla b²vß del╣φ, tak╛e se dostßvß i do oblasti pod tabulkou, co╛ pon∞kud kazφ dojem.

V HTML k≤du to vypadß n∞jak takhle:

<body>
<table border="0" align="left" width="150" bgcolor="barva"><tr>
<td>LevΘ menu</td></tr></table>
Text strßnky
</body>

Je dobrΘ v╣imnout si nastavenφ obtΘkßnφ pomocφ align=left (align=right je obtΘkßnφ z druhΘ strany) a pevnΘ ╣φ°ky, bez nφ╛ by se sloupeΦek asi roztßhnul p°es celou strßnku.

Jakmile skonΦφ obtΘkanß tabulka, nasouvß se hlavnφ text pod lev² sloupeΦek. Tomu lze zabrßnit pouze nastavenφm v²╣ky tabulky se sloupeΦkem na n∞jakou velikou hodnotu, nap°φklad height="1000" nebo 10000. Nep°φjemn² efekt je potom ov╣em extrΘmn∞ velk² prostor pod koncem strßnky, co╛ je d∙vodem, proΦ se toto °e╣enφ mßlo pou╛φvß.

ObtΘkan² div

Tento text byl psßn v dob∞, kdy CSS styly je╣t∞ nebyly moc podporovanΘ v prohlφ╛eΦφch. Dnes (myslφm tφm 2003) se namφsto plovoucφ tabulky dß pou╛φt plovoucφ oddφl = tag <div>. Stylem se mu nastavφ obtΘkßnφ (float) a ╣φ°ka (width):

<div style="float:left; width: 150px">plovoucφ oddφl</div>
text strßnky

Tφm se nahradφ tabulka, ale nevy°e╣φ se to, ╛e se text strßnky cpe pod ten obtΘkan² prvek. ╪e╣enφ ale existuje a toti╛ uzav°φt text strßnky taky do divu a tomu dßt bu∩ taky float: left a ╣φ°ku: 

<div style="float:left; width: 150px">plovoucφ oddφl</div>
<div style="float:left; width: 600px">text strßnky</div>
,

nebo mu dßt margin-left: 150px:

<div style="float:left; width: 150px">plovoucφ oddφl</div>
<div style="margin-left: 150px">text strßnky</div>

Pozicovßnφ

Pomocφ CSS pozicovßnφ lze umφstit libovoln² objekt kamkoli do strßnky. Pokud se hlavnφ text od╣oupne kousek doprava (a╗ u╛ pozicovßnφm nebo nastavenφm margin-left), zbude vedle n∞j mφsto, kam lze umφstit absolutn∞ pozicovan² lev² sloupeΦek.

P°φklad:

<body style="margin-left: 150px">
Text strßnky
<div style="width: 150px; position: absolute; left: 0px; top: 0px">
LevΘ menu
</div>
</body>

Propracovan∞j╣φ p°φklad (trochu jinak strukturovan²) je popsßn u tvorby sloupc∙ pozicovßnφm. (Prav² sloupeΦek lze takhle takΘ ud∞lat, je to trochu t∞╛╣φ.) Pou╛it² tag <div> se pou╛φvß na obalovßnφ v∞t╣φch kus∙ textu.

N∞kterΘ star╣φ prohlφ╛eΦe a editory nerozum∞jφ pozicovßnφ, t∞ch je ale dnes u╛ mßlo. Tak╛e jedin²m dne╣nφm problΘmem tΘto metody je prßzdnΘ mφsto pod boΦnφmi sloupeΦky, ale i to mß °e╣enφ (popsanΘ v sloupcφch pozicovßnφm).

Fantastickß v²hoda tohoto °e╣enφ spoΦφvß v tom, ╛e (narozdφl od tabulek) se sloupeΦky (a p°φpadnΘ hlaviΦky) naΦφtajφ a╛ po hlavnφm textu a zobrazuje se to hned. Dφky tomu Φtenß° nemusφ moc Φekat. Samoz°ejm∞ se sloupeΦky mohou naΦφtat p°edem, prost∞ na po°adφ nezßle╛φ.


 Napln∞nφ a aktualizace obsahu menu

LevΘ menu mß n∞jak² obsah (nejΦast∞ji je tam kupa odkaz∙). Proto╛e ten obsah b²vß na v╣ech strßnkßch stejn², nevyplatφ se psßt ho pro ka╛dou strßnku znovu, ale je t°eba to n∞jak usnadnit. «el, jazyk HTML neumo╛≥uje vlo╛enφ jinΘho souboru do k≤du. Je ale mnoho mo╛nostφ, jak to obejφt:

Toto je obecn² p°ehled metod pro vklßdßnφ jak²chkoliv automatick²ch prvk∙, ne pouze levΘho sloupeΦku, ale t°eba i patiΦky nebo zßhlavφ strßnky. Ideßlnφ je mφt obsah sloupeΦku ulo╛en² jenom na jednom mφst∞ (v jednom souboru), aby se ·pravy nemusely provßd∞t vφcekrßt.

Kdo pou╛φvß rßmy, nemusφ se pln∞nφm a aktualizacφ sloupeΦku zab²vat, rßmy to ud∞lajφ samy.

RuΦnφ pln∞nφ a aktualizace

Je to jednoduchΘ -- sloupeΦek odkaz∙ se vytvo°φ na jednΘ strßnce a do ostatnφch strßnek se zkopφruje.

Kdo v╣ak n∞kdy zkusil n∞co desetkrßt kopφrovat, ten chßpe, ╛e ruΦnφ pln∞nφ nenφ ideßlnφ °e╣enφ. Ne╣ikovnost se obzvlß╣╗ projevφ ve chvφli, kdy je pot°eba obsah menu zm∞nit: nßsleduje op∞tovnΘ n∞kolikanßsobnΘ kopφrovßnφ.

P°esto se ruΦnφ aktualizace vcelku Φasto pou╛φvß zejmΘna u web∙, kterΘ jsou malΘ (majφ mßlo strßnek), nebo kterΘ se z°φdka m∞nφ. Je to prost∞ jednodu╣╣φ ne╛ vym²╣lenφ ╣φlenostφ (viz nφ╛e).

Aktualizace editorem

Funguje na stejnΘm principu jako ruΦnφ kopφrovßnφ s tφm rozdφlem, ╛e d°ina je ponechßna stroj∙m. Ve╣kerΘ zm∞ny se provedou v jednom souboru, editor jej nakopφruje do ostatnφch strßnek a na server u╛ se odesφlß jen ΦistΘ HTML.

FrontPage umφ vlo╛it do strßnky obsah jinΘ strßnky nebo souboru a p°i zm∞n∞ vlo╛enΘ strßnky v╣echno zaktualizovat, to jest nakopφrovat. Pou╛φvß na to komponentu Include Page.

Je praktickΘ mφt obsah sloupeΦku ulo╛en² v n∞jakΘm souboru, t°eba sloupecek.html. Editor si potom n∞jakou poznßmkou oznaΦφ, kam se obsah tohoto souboru mß vlo╛it.

Nap°φklad FrontPage si vklßdß tuto poznßmku:

<!--webbot bot="Include" u-include="sloupecek.html" tag="BODY" -->

A po ukonΦenφ vklßdanΘho textu si poznamenß:

<!--webbot bot="Include" endspan -->

TakovΘ nahrazovßnφ jsem v ╛ßdnΘm editoru krom∞ FrontPage neobjevil, ale dß se napsat si na to vlastnφ makro. N∞kdy je oznaΦovßno jako ASI (Author Side Include). Nev²hodou t∞chto °e╣enφ je pouze nutnost shßn∞nφ toho software, kter² to umo╛≥uje. TakΘ se pak ten projekt h∙°e p°ebφrß jin²m sprßvcem, jen╛ pou╛it² software nemß.

P°edgenerovßnφ u autora

Ne ka╛dΘmu se lφbφ FrontPage, a tak existujφ zp∙soby, jak si strßnky "p°edgenerovat". Existujφ na to specializovanΘ programy, nap°φklad PPWizard. Do podobnΘ kategorie pat°φ i p°edgenerovßnφ HTML soubor∙ z XML pomocφ XSLT procesoru. V∞t╣ina lidφ, kte°φ to tak d∞lajφ, si na to napsali vlastnφ program v n∞jakΘm oblφbenΘm jazyce, kter² do strßnek obsah toho vklßdanΘho souboru prost∞ vlo╛φ. 

Po p°edgenerovßnφ se hotovΘ strßnky po╣lou na server. Nehodφ se to pro extrΘmn∞ velkΘ weby se vzdßlenou tvorbou, proto╛e aktualizace p°es FTP pak enormn∞ zat∞╛ujφ linku -- tam se pou╛φvajφ serverovΘ skripty s p°edgenerovßnφm.

V╣eobecn∞ pova╛uji aktualizacφ pomocφ n∞jakΘho editoru nebo exportnφho programu za ideßlnφ °e╣enφ. 

ServerovΘ skripty

Kdo mß na serveru nainstalovanΘ a povolenΘ serverovΘ skripty, m∙╛e obsah levΘho sloupeΦku vklßdat pomocφ nich. Z nejΦast∞j╣φch serverov²ch technologiφ to dovolujφ SSI (Server Side Include), ASP (Active Server Pages) a PHP (hypertext preprocesor). Strßnky potom ov╣em nelze mφt v souborech s p°φponou html, n²br╛ je t°eba pou╛φt koncovku asociovanou se serverov²m skriptem.

Je dobrΘ si p°ipravit soubor s obsahem levΘho sloupeΦku (sloupecek.html, ale bez HTML hlaviΦek -- jenom Φßst za <body>).

Na mφsto v k≤du, kam mß p°ijφt vklßdan² obsah, se napφ╣e instrukce ve skriptovacφm jazyce. Tuto instrukci najde server p°i odesφlßnφ strßnky, vyhodnotφ ji a vlo╛φ vklßdan² soubor do v²slednΘho k≤du. Tak╛e se vlastn∞ ka╛dß strßnka p°i ka╛dΘm po╛adavku znovu sestavuje.

Technologie p°φpona souboru instrukce
SSI .shtml <!--#include file="sloupecek.html"-->
ASP .asp <!--#include file="sloupecek.html"-->
PHP .php, .phtml a jinΘ <? include "sloupecek.html"; ?>

Jak je vid∞t, pou╛φvajφ ASP pro vklßdßnφ soubor∙ stejnou syntaxi jako SSI (pro jinΘ ·Φely v╣ak odd∞lujφ instrukce znaky <% a %>).

ServerovΘ skripty majφ urΦitΘ nev²hody. Nap°φklad je lze prohlφ╛et pouze na serveru; na domßcφm poΦφtaΦi se nezobrazujφ sprßvn∞, pokud v∙bec (leda p°es softwarov² server). TakΘ trochu zat∞╛ujφ v²kon serveru, t°eba╛e to u╛ dnes nehraje takovou roli jako d°φve.

P°edgenerovßnφ

VelkΘ a d∙le╛itΘ servery, kterΘ musejφ optimalizovat v²kon, pou╛φvajφ serverovΘ skripty na p°edgenerovßvßnφ strßnek. Pokud se zm∞nφ vklßdan² soubor sloupecek.html, projdou se n∞jak²m programem v╣echny strßnky a nahradφ se v nich napevno obsah toho sloupeΦku. Potom p°i po╛adavku na n∞jakou strßnku u╛ ji majφ p°ipravenou a nemusejφ ji znovu sestavovat, co╛ je rychlej╣φ a mΘn∞ to zat∞╛uje server.

Pou╛itφ IFRAME

Iframe je plovoucφ rßm, kter² se m∙╛e vlo╛it n∞kam do strßnky. Do toho rßmu se potom naΦte jinß strßnka (sloupecek.html). V²sledn² efekt se sklßdß a╛ v prohlφ╛eΦi. Toto °e╣enφ vyu╛φvß v²hod klasick²ch rßm∙, ale ned∞dφ jejich slabiny. Jak to vypadß nap°φklad p°i pou╛itφ tabulky p°es celou strßnku:

<body>
<table border="0" cellpadding="6" cellspacing="0">
<tr> <td width="150">
<iframe src="sloupecek.html" width=150 height=900></iframe>
</td> <td width="600">Text strßnky</td>
</tr> </table>
</body>

Jako atributy se pou╛φvajφ jmΘno naΦφtanΘho souboru, ╣φ°ka a v²╣ka. ⌐φ°ku je dobrΘ volit tak, aby se to tam ve╣lo, v²╣ku podle toho, jak vysok² je obsah sloupeΦku. Kdyby se zadaly malΘ rozm∞ry, bude mφt rßm rolovacφ li╣ty. Zobrazovßnφ li╣t a rßmeΦku lze zakßzat p°idßnφm dal╣φch atribut∙ <iframe scrolling=no frameborder=0>.

Jestli budou ve vklßdanΘ strßnce odkazy (a to v∞t╣inou jsou), je t°eba za°φdit, aby se zobrazovaly v celΘm okn∞. Do hlaviΦky souboru vklßdanΘ strßnky (sloupecek.html) je t°eba p°idat °ßdek

<base target="_parent">,

jinak se budou odkazovanΘ strßnky objevovat v tom levΘm sloupeΦku.

Zßsadnφ nev²hodou tohoto °e╣enφ je fakt, ╛e Netscape 4.x tag <iframe> nepodporuje. Tam je t°eba pou╛φt alternativnφ odkaz a stejn∞ to nenφ ono. Jedinou ·t∞chou m∙╛e b²t stßle men╣φ poΦet u╛ivatel∙ tohoto prohlφ╛eΦe. Prostudujte si kdy╛tak podrobn² popis plovoucφch rßm∙.

Vklßdßnφ obsahu JavaScriptem

JavaScript je programovacφ jazyk upraven² specißln∞ pro kouzla s webov²mi strßnkami. Je to klientsk² skript, co╛ znamenß, ╛e jej provßdφ a╛ klient, to jest poΦφtaΦ u Φtenß°e. Krom∞ jin²ch v∞cφ umo╛≥uje naΦφtßnφ skriptov²ch soubor∙ a zapisovßnφ do strßnky.

Obsah sloupeΦku v tomto p°φpad∞ nenφ ulo╛en v html souboru, ale v souboru JavaScriptu s p°φponou .js. Soubor mß oproti HTML trochu jinou (komplikovan∞j╣φ) syntaxi.

Ukß╛u na p°φkladu. Takto vypadß soubor sloupecek.js:

document.write("<a href='index.html'>Hlavnφ strßnka</a><br>");
document.write("<a href='druha.html'>Druhß strßnka</a><br>");
document.write("<a href='kontakt.html'>Kontakt</a><br>");

P°φkaz JavaScriptu document.write zapisuje do proudu dokumentu (uvnit° p°φkazu se nesmφ zalomit °ßdka). Soubor lze samoz°ejm∞ roz╣i°ovat o dal╣φ instrukce JavaScriptu.

Do strßnky se na mφsto levΘho menu vlo╛φ tento HTML tag:

<script language=JavaScript src="sloupecek.js"></script>

P°i zobrazovßnφ strßnky jej prohlφ╛eΦ pov╣imne, stßhne si soubor sloupecek.js a provede skriptovΘ instrukce (to jest zapφ╣e na danΘ mφsto do strßnky odkazy). Vtip je samoz°ejm∞ v tom, ╛e jeden soubor skriptu m∙╛e b²t takto naΦten do vφce strßnek.

Nev²hody skriptovΘho °e╣enφ:

Pokud se do JavaScriptu napφ╣ou slo╛it∞j╣φ instrukce, dß se takto v n∞kter²ch prohlφ╛eΦφch dosßhnout i efektu rozevφracφho menu (n∞kde to opi╣te).

Menu klikacφ mapou

Zde jsem d°φve publikoval p°φklad, ve kterΘm se naΦφtala definice obrßzkovΘ mapy z jednoho souboru do druhΘho. M∞l jsem to testovanΘ jenom ve starΘm Netscape a dnes u╛ to prakticky nefunguje.

Vizte tΘ╛: Design pomocφ tabulek, Sloupce CSS pozicovßnφm, Zßkladnφ definice rßm∙, Div a span, ProblΘmy rßm∙, Iframe, Programovßnφ strßnek, Jak zaΦφt s PHPJavaScript
Odkazy mimo: Zßklady sprßvnΘ navigace, Kontextovß navigace, 6 zßkladnφch styl∙ navigace  (v╣e Sova v sφti)

o tvorb∞, ·dr╛b∞ a zlep╣ovßnφ internetov²ch strßnek

Pφ╣e Yuh∙, dusan@pc-slany.cz

Hledßnφ:

Jak psßt web: www.jakpsatweb.cz

Pφ╣e Yuh∙: http://dusan.pc-slany.cz, mail: dusan@pc-slany.cz

Poslednφ aktualizace 10.12.2003