Co jsem dnes udělal pro svůj web #7

Mon, 26 Oct 2020 21:58:55 +1100

Než udělám pro svůj web opravdu zásadní věc, bylo by dobré si připomenout změny za posledních několik měsíců. Ano, "dnes" je opět myšleno jako blízká minulost. A tou zásadní věcí nebude nic jiného, než velký redesign, ale právě grafika je věc, kterou bych rád pokryl zase až v dalším článku.

1. Všechno, všecičko je Ajaxem... Téměř.

Tedy úplně všechno ne, například detail článku jsem vynechal. Tam se děje už poměrně dost operací a zatím to pro mě bylo víc trápení, než užitku. Ale to hlavní, tedy 3 typy kategorizace a stránkování už je Ajaxem. Loadovací kolečko ale zobrazuji jenom u stránkování, protože jinak by bylo už moc otravné. Stejně tak komentáře: validace, vkládání i zobrazení je nyní řešeno dynamicky. Opět s jednou malou výjimkou, a tou je přepis stránkování v knize návštěv a jiných hojně komentovaných článcích. To se mi fakt už nechtělo. A když se nad tím zamyslím, všechny Facebooky a podobné mory dnešní doby se chovají úplně stejně: co vložím, to vidím, až na refresh se přepočítá limit aktuálních záznamů.

2. Revize starých textů

I když jsem za posledních 10 let příliš neskriptoval, jen samotným sledováním monstrózního redakčního systému (kde mám občas pocit, že už nabyl vlastního vědomí), jsem se mnohému přiučil. A skrz pár nových zkušeností jsem zrevidoval některé starší články, a to nejen na téma PHP, ale i ty klasické kodérské. A na další se chystám.

Zde jsou některé z nich:

CSS layout, aneb web bez tabulek - tutoriál

Vlastně jsem jenom změnil xHTML za HTML 4.01. XHTML jakožto dávno mrtvý vývojový stupeň už je minulostí, takže proč ho někam cpát. Článek jako takový jsem neměnil, protože je to i hořká vzpomínka na Internet Explorer 6 a spoustu nepříjemných situací, které kvůli němu člověk musel řešit. Sveřepé IDčkování každého divu už se také dlouho nepraktikuje, takže jsem raději změnil ID za classy.
Celý článek

PHP od začátku: dynamické skládání stránek funkcí include

Includovací návod jako takový je stále funkční a jednoduchá webová stránka lze s jeho pomocí vytvořit. Docílení unikátního titulku ovšem nebylo ideální, a tak jsem tuto část článku změnil. Smazal jsem ale druhý díl. Tam už byly konstrukce zbytečně velkolepé. Hlavně to není cesta, kterou se chce začínající programátor ubírat. Je lepší se seznámit z databází hned na začátku, než vymýšlet šílenosti, jak docílit stránek bez ní.
Celý článek

Chytré funkce pro JavaScript

Jeden článek, jedna funkce. Nebo víc funkcí. Proč takhle jednoduché články nepíšu častěji? Zrevidovat ale potřebovaly, a tak můžete využít upravenou práci s GETem či setCookie včetně všech potřebných atributů.
Celý článek

Stránkování v PHP

I stránkovací knihovna prošla rozsáhlou revizí, článek stále najdete ve výpisu na úvodní stránce.
Celý článek

mod_rewrite

Do posledního souhrnného článku k mod_rewrite jsem přidal zápis pro přesměrování z HTTP na HTTPS.
Celý článek

3. Úprava kategorizace

Jak hlavních kategorií, tak tagů. Přidal jsem funkci zařazení článku do více kategorií, kterou jsem zatím vůbec nepotřeboval. Ne, že bych ji najednou musel mít, ale chtěl jsem vymyslet logiku, která by byla pro systém nejvhodnější. Tak proč se na to nepodívat blíž, protože tohle zrovna může být funkce, kterou by mohl využít i někdo další.

Kategorie

Článek má u sebe stále sloupec 'category_id', kde je přiřazené jeho hlavní umístění. ID kategorie zařídí, abych vytáhl pouze články za aktivní kategorie filtrované dle aktuálního jazyka. (Ano, umím více jazyků, byť tuto funkci také nevyužiji.) Články už podle 'lang_id' nerozlišuji, protože každý článek je vázaný na svou kategorii, nemůže být bezprizorní.

Aby článek mohl mít kategorií vícero, přidal jsem vazební tabulku, kde jednoduše uložit 'article_id' a 'category_id'. Tady už žádná filtrace dle jazyka či kontrola sloupce 'active' neprobíhá, protože podmínka je využita pouze v detailu kategorie, kde už mám objekt vytažený a vím, že 'lang_id' sedí. Stejně tak mě nezajímá zanoření v rámci stromu. K tomu slouží základní struktura, a to z logického hlediska.

Seznam kategorií pod každým článkem

SQL dotazy v cyklu jsou zlo, a tak si vytáhnu ID už načtených článků do pole. Pak pošlu jediný SQL dotaz na vazební tabulku s podmínkou WHERE `id` IN (). A v dalším rychlém cyklu rozřadím. Vlastně stejným způsobem, jako řeším tagy, připojené taktéž přes externí tabulku.

Tagy

Tagy také dostaly možnost kategorizace, byť sdílené s články. Tohle vlastně na frontendu nikdy nebude vidět, nicméně to slouží pro mě, abych je mohl v administraci filtrovat. Každý tag se totiž tematicky vztahuje k některé z hlavních kategorií, a já si v tom už prostě musel udělat pořádek. Tagů to bylo víc než 100 a začaly se mi duplikovat. Takže jich pár vylítlo komínem, a já doufám, že má sekundární kategorizace (k čemuž vlastně tagy slouží) je zase o něco logičtější.

3. SSL certifikát, PHP7

Napsal jsem na podporu a poprosil je po převod na PHP7. Systém už byl na localhostu odladěný tak, aby fungoval jak na pětce, tak na sedmičce bez chyb, a tak nebyl sebemenší problém.

Také jsem si konečně pořídil zámeček před url adresu. I když SSL certifikát považuji spíš za módní záležitost... Žádné přihlašování tu nemám, ke komentům vás nikdo nenutí, takže jediná potřebná věc je vstup do vlastní administrace. A tam lezu jen z Faradayovy klece, co mám ve sklepě.