CW(1,12B) - Multiarticle(2) - Next a Prev odkazy při dělení, druhá půle výpisu multičlánku
//********Next a Prev*****************************************
$minimum = 1;
$maximum = $pocetvyskytu;
?>
Začínám vykreslovat šablonu.
<!doctype html>
<html lang="cs-CZ">
<head>
<meta charset="utf-8">
<base href="/">
<title><?= $ARTICdata[0]['TEX1nadpis'] ?></title>
Tady kontroluji, jestli daná kapitola má section description a pokud ano, použiji ho přednostně. Pokud ne, použiji pro kapitolu section description ze sloupce METAdescription v databázi, který je shodný pro všechny kapitoly jednoho multičlánku:
<meta name="description" content="<?php
if (isset($SectDesc) and "" != $SectDesc) {
echo $SectDesc;
} else {
echo $ARTICdata[0]['METAdescription'];
}
?>">
PHP příprava Rel Next a Prev pro Google (neviditelně v <HEAD>)
Pro lepší analýzu vašich stránek vyhledávačem, Google nově doporučuje k děleným multičlánkům vždy umisťovat metatagy odkazů na předchozí a následující přidruženou kapitolu.
Zde kontroluji jestli náhodou nenastala ta možnost scénáře, že se nalézám na první kapitole multičlánku. To by znamenalo, že žádný rel="prev" link v hlavičce nebude. Také že musím nastavit rel="next" na další kapitolu, tedy číslovku o jedna vyšší: ($permalink2 + 1).
<?php if (!isset($permalink2) or $permalink2 == 1) { ?>
<link rel="next" href="http://<?php echo $_SERVER['HTTP_HOST'] . '/' . $permalink . '/' . ($permalink2 + 1); ?>"/>
Pokud jsem mezi začátkem a koncem, budu potřebovat rel="prev" o jedna nižší ($permalink2 - 1) a také rel="next" o jedna vyšší ($permalink2 + 1).
<?php } elseif ($permalink2 > $minimum and $permalink2 < $maximum) { ?>
<link rel="prev" href="http://<?php echo $_SERVER['HTTP_HOST'] . '/' . $permalink . '/' . ($permalink2 - 1); ?>"/><link rel="next" href="http://<?php echo $_SERVER['HTTP_HOST'] . '/' . $permalink . '/' . ($permalink2 + 1); ?>"/>
Pokud se nalézám na poslední kapitole (pořadí==maximum), potřebuji už jen link na tu o jedna nižší.
<?php } elseif ($permalink2 == $maximum) { ?>
<link rel="prev" href="http://<?= $_SERVER['HTTP_HOST'] . '/' . $permalink . '/' . ($permalink2 - 1); ?>"/>
<?php
} else {
return;
}
?>
</head>
<body>
<div id="main">
<div id="mobil-footer"><?php include '@3FOOTER.mod.php'; ?></div>
<article>
<?php vykreslitBREADCRUMBS() ?>
<h1><?= $ARTICdata[0]['TEX1nadpis'] ?></h1><h2><?= $ARTICdata[0]['TEX2intro'] ?></h2>
<?php
Nejdříve jsem vypsal hlavní nadpis multičlánku z databáze, nyní vypisuji z DOM vybranou část obsahu (obsah aktuální kapitoly).
Na první kapitole když pořadník permalink2 není uveden, automaticky ho přečísluju na 1, aby skript věděl, že se nalézá v první kapitole.
if (!isset($permalink2)) {
$permalink2 = 1; //přečíslování z nedefinovaného na jedničku
}
Nasávám obsah dané sekce z XPath:
$hodnotaquery = $xpath->evaluate('//section[' . $permalink2 . ']');
foreach ($hodnotaquery as $pole => $node);
Až zde nakonec je výpis obsahu
Tady nakonec je teprve funkce saveHTML, která fyzicky ukrajuje vybranou část obsahu. A tu hned zobrazuji prostým echo:
echo $dom->saveHTML($node);
//************************************************
Next a Prev znovu ve viditelném tělu stránky
//********Next a Prev*****************************************
?>
Opět odkazy Next a Prev, ta samá logika (tentokrát ve viditelném tělu HTML stránky):
<?php if (!isset($permalink2) or $permalink2 == 1) {//porovnání == ?>
<span style="float:right"><a href="http://<?php echo $_SERVER['HTTP_HOST'] . '/' . $permalink . '/' . ($permalink2 + 1); ?>">Dále ⇒</a> </span>
<?php } elseif ($permalink2 > $minimum and $permalink2 < $maximum) { ?>
<span style="float:right"><a href="http://<?php echo $_SERVER['HTTP_HOST'] . '/' . $permalink . '/' . ($permalink2 - 1); ?>">⇐ Zpět</a> <a href="http://<?php echo $_SERVER['HTTP_HOST'] . '/' . $permalink . '/' . ($permalink2 + 1); ?>">Dále ⇒</a> </span>
<?php } elseif ($permalink2 == $maximum) { ?>
<span style="float:right"><a href="http://<?= $_SERVER['HTTP_HOST'] . '/' . $permalink . '/' . ($permalink2 - 1); ?>">⇐ Zpět</a> </span>
<?php
} else {
return;
}
?>
<div style="margin-top: 14px;"><?php vykreslitBREADCRUMBS() ?></div>
</article>
<div id="prav">
<div id="kapitoly">
<h2>Kapitoly článku: </h2>
<?php
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.
Následuje třetí díl 112C.
Zdroje
PHP Manual. XML Manipulation.
https://www.php.net/manual/en/book.dom.php
Xpath cheatsheet. Devhints.io.
https://devhints.io/xpath