CW(1,12C) - Multiarticle(3) - Prolinkovaná tabulka odkazů ke kapitolám (Osnova)
Tím máme obstaráno vykreslení hlavního vybraného obsahu. Teď ovšem přijde to nejhorší - vytvoření prolinkované tabulky kapitol ve vedlejším sloupci vedle těla článku.
Již dříve jsme si obstarali počet výskytů párového tagu <section></section> a uložili ho do proměnné $pocetvyskytu. Nyní obstarávám seznam kapitol, kde každá nese svůj odpovídající odkaz na sebe a každá je uvedena odkazujícím textem posbíraným ze všech nadpisů <H3> v dané kapitole. Povýšil jsem nadpisy <H3> do této organizační funkce, že z jejich textů se bude formulovat odkaz na kapitolu. V obsahu nadále už musím sekat odstavce pomocí H3 a dodržovat zhruba jejich stejnou velikost.
//***************TABULKA KAPITOL*******
for ($i = 1; $i <= $pocetvyskytu; $i++) {
$nadpisyH3 = $xpath->evaluate('//section[position()=' . $i . ']/h3');
if ($permalink2 == $i) {
echo"<p>⟫ " . $i . ": ";
foreach ($nadpisyH3 as $j => $h3) {
echo $h3->nodeValue . "| ";
}
A udělal jsem to pomocí vnořených cyklů. Doslova: V cyklu for se od první do poslední kapitoly starám o načtení obsahu H3. Když se čtenář nalézá na vyčtené kapitole, tato jediná se nebude zobrazovat jako odkaz ale pouhý textový odstavec (bez odkazu).
Pomocí cyklů foreach zobrazuji buď <p> nebo <a href> textů ze všech nadpisů oddělených znakem svislé čáry a pevné mezery ("| ").
Vytvoření odkazu řeším pomocí superglobální proměnné $_SERVER['HTTP_HOST'] zřetězené s permalinkem, který mám definován jako nejzásadnější proměnnou celého webu už v Article routeru.
} else {
echo"<p><a href='http://" . $_SERVER['HTTP_HOST'] . '/' . $permalink . '/' . $i . "'>⇒ " . $i . ": ";
foreach ($nadpisyH3 as $j => $h3) {
echo $h3->nodeValue . "| ";
}
}
}
?></div>
</body>
</html>
Konec šablony a máme klikatelnou osnovu kapitol:
Zakončuje předchozí dva díly 112A a 112B.
Zdroje
PHP Manual. XML Manipulation.
https://www.php.net/manual/en/book.dom.php
Xpath cheatsheet. Devhints.io.
https://devhints.io/xpath