## Spis treści

Uważniejszy webmaster na pewno już sobie poradził z konstrukcją tej strony, zerkając po prostu do jej źródła i wyciągając plik spisu treści z cache'a przeglądarki. Dla lepszego zobrazowania problemu posłużmy się przykładem tego dodatku.

Podstawą konstrukcji tej strony jest oczywiście układ ramek:

    <frameset rows="100%" cols="27%,*" frameborder="yes">
    	<frame name="left" src="spis.htm" scrolling="auto">
    	<frame name="right" src="wstep.htm" scrolling="auto">
    </frameset>

Lewa ramka nazywa się "left", zaś prawa - "right". Nazwy są istotne dla spisu treści.

W lewej ramce, w ramach BODY, umieszczone jest polecenie APPLET, które wywołuje HTML elp Java Applet:

    <APPLET code="HHCtrl.class" width=240 height=400>
    <PARAM name="Command" value="contents">
    <PARAM name="Item1" value="spis.hhc">
    </APPLET>

Przytoczmy teraz postać pliku ze spisem, czyli spis.hhc, wygenerowanego przez HTML Help Workshop. Jest to oczywiście plik tekstowy HTML. Dla uproszczenia zostawiamy tylko po jednej pozycji na rozmaitych poziomach tego spisu.

    <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
    <HTML>
    <HEAD>
    <meta name="GENERATOR" content="Microsoft® HTML Help Workshop 4.1">
    <!-- Sitemap 1.0 -->
    </HEAD><BODY>
    <OBJECT type="text/site properties">
    	<param name="FrameName" value="right">
    	<param name="Window Styles" value="0x800005">
    	<param name="ImageType" value="Folder">
    </OBJECT>
    <UL>
    	<LI> <OBJECT type="text/sitemap">
    		<param name="Name" value="Wstŕp">
    		<param name="Local" value="wstep.htm">
    		<param name="ImageNumber" value="17">
    		</OBJECT>
    	<LI> <OBJECT type="text/sitemap">
    		<param name="Name" value="Spis treci (contents)">
    		<param name="Local" value="contents.htm">
    		<param name="ImageNumber" value="11">
    		</OBJECT>
    	<LI> <OBJECT type="text/sitemap">
    		<param name="Name" value="Skorowidz (index)">
    		<param name="Local" value="skorowi.htm">
    		<param name="ImageNumber" value="11">
    		</OBJECT>
    	<LI> <OBJECT type="text/sitemap">
    		<param name="Name" value="HTML">
    		</OBJECT>
    	<UL>
    		<LI> <OBJECT type="text/sitemap">
    			<param name="Name" value="HTML dla bardzo poczŚtkujŚcych">
    			<param name="Local" value="..\beginner\beginner.htm">
    			<param name="ImageNumber" value="11">
    			</OBJECT>
    		<LI> <OBJECT type="text/sitemap">
    			<param name="Name" value="OdsyŚacze">
    			<param name="Local" value="..\odsylacz\odsylacz.htm">
    			<param name="ImageNumber" value="11">
    			</OBJECT>
    	</UL>
    	<LI> <OBJECT type="text/sitemap">
    		<param name="Name" value="Lupus Online">
    		</OBJECT>
    	<UL>
    		<LI> <OBJECT type="text/sitemap">
    			<param name="Name" value="PCkurier">
    			<param name="Local" value="http://www.pckurier.pl">
    			<param name="ImageNumber" value="13">
    			</OBJECT>
    		<LI> <OBJECT type="text/sitemap">
    			<param name="Name" value="Enter">
    			<param name="Local" value="http://www.enter.pl">
    			<param name="ImageNumber" value="13">
    			</OBJECT>
    	</UL>
    	<LI> <OBJECT type="text/sitemap">
    		<param name="Name" value="Wyszukiwarki internetowe">
    		</OBJECT>
    	<UL>
    		<LI> <OBJECT type="text/sitemap">
    			<param name="Name" value="Infoseek PL">
    			<param name="Local" value="http://infoseek.icm.edu.pl">
    			<param name="ImageNumber" value="13">
    			</OBJECT>
    		<LI> <OBJECT type="text/sitemap">
    			<param name="Name" value="AltaVista PL">
    			<param name="Local" value="http://www.altavista.pl">
    			<param name="ImageNumber" value="13">
    			</OBJECT>
    	</UL>
    	<LI> <OBJECT type="text/sitemap">
    		<param name="Name" value="Serwisy z oprogramowaniem">
    		</OBJECT>
    	<UL>
    		<LI> <OBJECT type="text/sitemap">
    			<param name="Name" value="SlaughterHouse">
    			<param name="Local" value="http://slaughterhouse.com">
    			<param name="ImageNumber" value="13">
    			</OBJECT>
    		<LI> <OBJECT type="text/sitemap">
    			<param name="Name" value="Windows95.com">
    			<param name="Local" value="http://www.windows95.com/apps/">
    			<param name="ImageNumber" value="13">
    			</OBJECT>
    	</UL>
    </UL>
    </BODY></HTML>

Jak łatwo zauważyć, spis składa się z dwupoziomowego wykazu typu UL, w którym wyższy poziom pełni funkcję folderu dla niższego, czyli odsyłaczy do konkretnych stron. Podany przykład można skopiować i przystosować do własnych potrzeb, rozwijając o dalsze odsyłacze. Dla ułatwienia, tutaj jest zzipowana wersja spisu - spis.zip, który można przykroić do własnych potrzeb.

Polecenie `<param name="FrameName" value="right">` mówi o skierowaniu zawartości do prawej ramki (right), właśnie tej, którą określiliśmy w układzie ramek dla całej strony.

Polecenie `<param name="ImageNumber" value="13">` informuje, jakie ikonki są przypisane do poszczególnych adresów: do dyspozycji mamy "auto" i numery od 1 do 42. Na przykład, value=13 generuje ikonkę strony w Internecie, value=17 - ikonkę ze znakiem informacji itd..

Oczywiście nic nie stoi na przeszkodzie, aby tego rodzaju spis umieszczać nie w układzie ramkowym, lecz na pojedynczych stronach.

Uwaga: jeśli pliki spisu treści i skorowidza generujemy za pomocą HTML Help Workshop, trzeba ręcznie zamienić polskie litery z symboli na "normalne" polskie znaki, w standardzie Windows-1250. Niestety, Netscape ma kłopoty z interpretacją polskich znaków, więc "od biedy" można ich w ogóle nie używać.