CW(2,1) - NEWSFLASHES
Jelikož jsem se snažil o dekompozici Joomly, mohli jste si všimnout, že používám její terminologii. V této sekci o enginu webu se zabývám funkcemi, které byste řekli, že vlastně do hlavního enginu nepatří, protože jsou okrajovými podružnostmi. Také jsem si to nejdříve myslel. Do doby, než jsem to začal dělat, kdy jsem zjistil, že u doplňkových podružností ta pravá práce teprve začíná. A ono jich je asi třicet, každá řeší úplně jinou věc, která je sama o sobě programátorsky docela husarským kouskem a upřímně řečeno, bez těch třiceti doplňkových funkcí by ten web vlastně nebyl webem, ale pouze něčím jako pasivně prolinkovanou knihou. Něčím jako PDF dokument s klikatelnou osnovou.
Zde se po programatické stránce teprve ukáže, co je vlastně to hlavní. Začněme tím nejlehčím doplňkem a to jsou Newsflashes.
Newsflashes
Z terminologie Joomly to jsou prostě ty bleskové aktuality o nejnovějších příspěvcích, problikávající v postranních sloupcích HTML šablon. Obsahují zpravidla nadpis článku, kratičký odstaveček o tématu a případně datum publikace a jméno autora, které jsem vypustil.
<?php
global $pdo;
Začínám tedy definovat funkci NewsFlashRAND v PHP a jak vidíte, do začátku potřebuji jedinou globální proměnnou, kterou je ovladač databáze (PDO).
Jak tušíte, funkce je random, nasává tedy pevný počet náhodně vybraných článků. Nasaje z DB údaje newsflashek pro pozdější použití v šabloně.
function newsflashRAND() {
global $pdo;
Z databáze načítám pouhá tři pole z 16 náhodně vybraných řádků.
1. TEX1nadpis je v databázi nadpis článku,
2. TEX2intro je úvodní text článku,
3. URLalias je to samé, co v Laravelu slug, v Joomle alias, tedy ta část url za doménou, která jednoznačně definuje článek. Beru pouze ta pole, jejichž Typ v databázi je artic a jejichž Parent je jedna z pěti
sekcí obsahu, které jsem se rozhodl v newsflashkách oznamovat. Doufám, že SQL kód je dostatečně výmluvný:
$dotaz = $pdo->prepare("SELECT TEX1nadpis, TEX2intro, URLalias
FROM CONTENT
WHERE TYP = 'artic' AND PARENT IN ('ZAH', 'PCG', 'SKOLS', 'SVYC', 'RUL')
ORDER BY random()
LIMIT 16");
$dotaz->execute();
$newsflashdata = $dotaz->fetchAll(PDO::FETCH_NAMED);
A pro stručnost to hned rovnou vypíšu (v cyklu všechny):
foreach ($newsflashdata as $dato) {
?>
<h2><a href="<?= $dato['URLalias'] ?>"><?= $dato['TEX1nadpis'] ?></a></h2><p><?= $dato['TEX2intro'] ?></p>
<?php } ?>
<?php
return;
} ?>
Celkem tu můžete mít libovolně kategorií newsflashek např. z jiných kategorií článků, které třeba nevybíráte náhodně, ale sestupně podle data (pět nejnovějších z každé podsekce) a vytahovat k nim jiné atributy, jako třeba datum expirace, po jehož uplynutí se daná newsflashka přestane zobrazovat a na její místo přijde jiná.
Můžete je pojmout jako samostatné kategorie aktualit, např.: redaktorův výběr, náhodných deset, pět nejčtenějších, pět nejnovějších nadpisů, nejnovější komentáře, nejvíce komentované články, ...
S tím vším si jistě vyhrajete dle libosti.