DiVeRgEnT wrote:
> Zdravo drugovi.
>
> Da nema mozda netko kakav php kod za pravljenje sadrzaja na stranici?
>
> Prokleti mobiteli... :-)
>
> Neke interesantne funkcije bi bile:
>
> - da prikuplja sve H tagove unutar <article> taga i stvara od njih TOC
Nasao, radi.
> - da je moguce definirati koje H tagove da prikuplja (recimo ne H1)
Nasao, radi.
> - da je sadrzaj naravno klikabilan (jump to anchor)
Nasao, radi, ali ne kako bih ja htio (slijedeca stavka).
> - da anchor moze biti ID bilo kojeg (tj. u ovom slucaju H) elementa, a
> ne da unutar H tagova moram stavljati <a name=...>, pa da bi skripta
> skuzila gdje da skoci
Nisam nasao.
> - i ne znam da li to php moze, ali vidio sam rjesenja za javascript da
> se tim H tagovima automatski dodjeljuje random ID ukoliko im ja nisam
> jedan dodijelio
Nisam nasao, ali nije toliko ni bitno.
Dakle najbolje sto sam dosad implementirao je mala, superfunkcionalna
skripta i izgleda ovako:
<?php
function TableOfContents($depth)
/*AutoTOC function written by Alex Freeman
* Released under CC-by-sa 3.0 license
*
http://www.10stripe.com/ */
{
$filename = __FILE__;
//read in the file
$file = fopen($filename,"r");
$html_string = fread($file, filesize($filename));
fclose($file);
//get the headings down to the specified depth
$pattern = '/<h[2-'.$depth.']*[^>]*>.*?<\/h[2-'.$depth.']>/';
$whocares = preg_match_all($pattern,$html_string,$winners);
//reformat the results to be more usable
$heads = implode("\n",$winners[0]);
$heads = str_replace('<a name="','<a href="#',$heads);
$heads = str_replace('</a>','',$heads);
$heads = preg_replace('/<h([1-'.$depth.'])>/','<li class="toc$1">',$heads);
$heads = preg_replace('/<\/h[1-'.$depth.']>/','</a></li>',$heads);
//plug the results into appropriate HTML tags
$contents = '<div id="toc">
<p id="toc-header">Contents</p>
<ul>
'.$heads.'
</ul>
</div>';
echo $contents;
}
?>
I tablica se kreira pozivanjem:
<?php TableOfContents(3); ?>
Broj tri (3) definira koliko duboko da trazi podnaslove, uz uvjet da je
H1 izbacen. Znaci generira TOC od H2 i H3 tagova. Odlicno!
Uredno funkcionira, ali je to skripta od prije vise od 10 godina i htio
bih sitnije izmjene napraviti sukladne HTML5 standardima, ali je to za
mene visa matematika. Jer skripta skenira H tagove unutar linka, ili
linkove unutar H tagova, a nema nikakvog smisla da H tag bude unutar,
ili oko linka. Zasto bih od podnaslova teksta radio link? Na sta?? (osim
na naslovnici, ali u tom slucaju nema potrebe za TOC-om)
Medjutim, to trenutno cak ni ne smeta (osim visak koda i visak
procesiranja), jer i moje standardne naslove obavijene samo H tagom on
prepoznaje, nego skripta jednu drugu glupost radi. Tom H tag linku trazi
NAME, tako da kad kliknes na link unutar TOC-a, onda te baci dolje gdje
je sidro. Ali ja sidra kreiram ID-om od H taga, a ne NAME-om od A taga!
I zato nemam nikakve potrebe naslove obavijati u linkove.
Jos jedna glupost koju ova skripta radi je da kreira TOC u obliku
linkova, sto sasvim uredno radi, ali te linkove obavija u (gle cuda) H
TAGOVE!!?? Zasto bi linkovi u TOC-u bili u H tagovima!?? To mi samo daje
dizajnerske probleme, a vjerujem i zbunjuje google. ANCHOR tagovi su
sasvim dovoljni. (Pa i onaj ul-li je visak, ali ok, to znam rijesiti.)
Znaci molim pomoc za:
1) maknuti nepotrebne linije koda koje traze A tagove unutar ili oko H
taga. Treba samo traziti H tag
2) zamijeniti da kod trazi ID od H taga, a ne NAME od A taga.
3) izbaciti iz outputa da ne generira H tagove oko A taga.
Hvala unaprijed!!!!!!!!