Po několika hodinách práce jsem vytvořil dva soubory:
archiv.php
- generuje výpis z archivu vybraného/aktuálního měsíce a roku.kalendar.php
- vlastní soubor s kalendářem, ve kterém se zobrazují odkazy na nalezené články.
Postup instalace Kalendáře.
Uložte soubory archiv.php
do složky require
a kalendar.php
do upload/php
. Dále musíme zajistit, aby se nám zobrazoval nový modul "Archiv". Otevřete soubor index.php
a přidejte další položku do Switche za poslední položku case "topic"
:
Pokud by tato úprava byla pro někoho složitá, tak upravený soubor index.php
jsem přiložil do balíčku se skripty.
Vytvořte si nový "Box" a nazvěte ho například "Archiv". Do boxu vlože HCM modul na spuštění PHP kódu. Zadání může vypadat například takto:
Kalendáři je také potřeba nastavit rozměry, fonty a barvy. Nastavení stylů proveďte v souboru system.css
. Kalendáři je přiřazena třída kal
.
Popis kalendáře a archivu.
- Při otevření kalendáře se automaticky vyhledávají články pro daný měsíc a rok.
- Pokud je nalezen článek, je v kalendáři vyznačen, tak jak je nastaveno v
system.css
. V mém případě je to tmavě zelená buňka tabulky kalendáře. - Po najetí myší na nalezený článek (zvýrazněnou buňku) se zobrazí název článku.
- Po kliknutí na nalezený článek v kalendáři bude uživatel přesměrován na daný článek.
- Pokud je v daném dni více článků, tak se po kliknutí na odkaz zobrazí výpis všech článků z daného dne.
- Název měsíce a číslo roku tvoří jeden odkaz po jehož stisknutí se zobrazí výpis z archivu.
- Šipky v levém a pravém horním rohu slouží k listování v kalendáři/archivu.
Kalendář je testovaný pro verzi 7.4.1, takže vám určitě poběží i na verzi 7.4.0. Na starších verzích jsem to nezkoušel. Soubory s archivem ke stažení: Nejste přihlášen(a).
Komentáře
Rozhodl jsem se implementovat pro své potřeby, ale...
Nejnutnější jsem přepsal pro novou verzi (7.5.3) a po rozchození (bez zásahu do systému) jsem se zděsil.
Stávající verze pro jeden kalendář čítala neuvěřitelných 42 až 49 zbytečných dotazů do databáze a to pokud nebyl v daném měsíci vydán žádný článek.
Za předpokladu, že každý den bude vydán článek je tento počet dotazů neskutečných 80!
Po překopání kalendáře se mi povedlo vše zredukovat do jednoho jediného dotazu a tedy podstatně snížit nároky.
Optimalizaci kódu sice ještě nemám dopracovanou, ale snad by mělo být hrubě hotovo.
Kalendář se vkládá jako klasický HCM modul a pro zobrazení článků je využíváno rozšíření, které je součástí kalendáře.
Stačí jen pouhé nakopírování souborů na FTP a umístit HCM modul dle standardů CMS na Vámi vybrané místo.
Byla dopracována podmínka pro nezobrazení nevydaných článků, ...
Byla nahrazena "problémová" funkce cal_days_in_month.
Kdo by měl zájem testovat, pište.
Ukázka zde.citovat
Když jsem zadal tento kód,:
$query=mysql_query("SELECT id,title,time FROM `"._mysql_prefix."-articles` WHERE visible=1 AND public=1 AND home1=60");
nevypsalo mi to ani jeden článek v kalendáři, mimo právě kategorie id 60 a dnešního příspěvku.
Jak to lze provést? Jestli to ovšem vůbec lze..citovat
$query=mysql_query("SELECT id,title,time FROM `"._mysql_prefix."-articles` WHERE visible=1 AND public=1 AND home1!=60");citovat
A pokud budu chtít ofiltrovat více kategorií, tak jak mám postupovat?citovat
Mám problém: pokud nastavím článek s budoucím datem, zobrazí se mi jen, pokud jsem přihlášený uživatel. Pokud se odhlásím, vypíše to hlášku "Vámi požádovaná stránka nebyla nalezena."
Nevíte, co s tím? citovat
Dík za rozluštění problému
citovat
$query=mysql_query("SELECT id,title,time FROM `"._mysql_prefix."-articles` WHERE visible=1 AND public=1 AND home1=2");
citovat
http://sunlight-cms.net/index.php?m=topic&id=2481citovat