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 &rArr;</a>&nbsp;</span>
<?php } elseif ($permalink2 > $minimum and $permalink2 < $maximum) { ?>
<span style="float:right"><a href="http://
<?php echo $_SERVER['HTTP_HOST'] . '/' . $permalink . '/' . ($permalink2 - 1); ?>">&lArr; Zpět</a>&nbsp;&nbsp;<a href="http://<?php echo $_SERVER['HTTP_HOST'] . '/' . $permalink . '/' . ($permalink2 + 1); ?>">Dále &rArr;</a>&nbsp;</span>
<?php } elseif ($permalink2 == $maximum) { ?>
<span style="float:right"><a href="http://
<?= $_SERVER['HTTP_HOST'] . '/' . $permalink . '/' . ($permalink2 - 1); ?>">&lArr; Zpět</a>&nbsp;</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

 

DC home |
Portál vojenských technologií |
Ostatní články |
Organizační

U lidí kdož slibují aniž by měli v úmyslu dodržet slovo, zpravidla posléze zjistíte opakované kriminální jednání.
Fr. Koukolík