WebToDate/Offline generátor/Začínáme
Základní funkce a principy
Export do statické podoby
Cílem tohoto modulu je vygenerovat statickou podobu webové prezentace spustitelnou např. z CD. Modul tedy produkuje statické soubory buď ve formě HTML stránek, nebo ve formě původních uploadovaných souborů (obrázků, souborů ke stažení apod.).
HTML stránky exportované modulem jsou mapovány na původní stránky www prezentace 1:1. To např. znamená, že k jedné stránce se zprávou (s původním URL /scripts/detail.php?id=xxx) vzniká právě jeden soubor zobrazující tuto zprávu.
V modulu se nejprve definuje, jaké zprávy či stránky se exportují na základě metadat (např. zvolená část stromu kategorií). Na základě toho modul sestaví seznam položek k exportu, do kterého je možné eventuálně následně ručně zasahovat. Je vhodné si uvědomit, že modul neprochází rekurzivně odkazy ve stránkách a nehledá takovýmto způsobem položky, které by se měly rovněž exportovat, ale pracuje s metadaty. To znamená, že pokud se např. exportuje pouze jedna kategorie, vyexportují se:
- Stránky z této kategorie
- Zprávy z této kategorie
- Všechny soubory ze zdrojů připojené k exportovaným zprávám (nezávisle na kategorii, do které jsou zdroje vložené)
- Všechny soubory odkazované ze stránek, které byly vloženy pomocí funkce Obrázky
- Všechny stránky zobrazující detail zdroje odkazované z výše uvedených typů stránek.
Pokud je tedy např. na nějaké stránce v dané kategorii umístěna zpráva, která nepatří do exportované kategorie, tato zpráva se neexportuje a odkaz na ni bude nahrazen definovaným odkazem pro neexistující položku.
Postup obsluhy
Po instalaci modulu se nejprve definují předvolby (na následujícím otisku obrazovky).
Tyto předvolby v podstatě pouze definují názvy adresářů pro export a jmenné konvence pro exportované soubory. Předvolby se definují jednou provždy a není zpravidla nutné je následně měnit.
První vlastní krok přípravy exportované verze je nadefinování pravidla pro export.
Pravidlo určuje zejména metadata (kategorie, publikace, témata apod.), kterými se export řídí, pravidlo tedy v podstatě určuje výběr obsahu k exportu. Pravidlo zůstává na serveru uloženo a je tedy možné jej použít opakovaně (opakovat export se stejnými kritérii). Pravidel lze vytvořit i více a tak definovat exporty různých částí webové prezentace.
Druhým krokem je automatické sestavení seznamů položek k exportu. Modul na základě nadefinovaného pravidla sestaví několik XML souborů s jednoduchou strukturou, které obsahují seznam zpráv, zdrojů a stránek k exportu.
Tyto XML soubory lze stáhnout ze serveru, změnit jejich obsah a před vlastním exportem opět uložit na server. Tímto procesem lze přidat další položky k exportu (další jednotlivé zprávy z jiných kategorií apod.) nebo naopak nějaké položky odebrat, přičemž do XML souboru lze zapsat i permanentní zákaz exportu (tj. i když se seznam položek k exportu automaticky přegeneruje, zůstane zaznamenáno, že daná položka se neexportuje).
Posledním krokem je pak vlastní export. Ten již pracuje dle seznamů položek k exportu a v zásadě ukládá do dané adresářové struktury HTML soubory a další soubory ze zdrojů či obrázků, v HTML souborech přitom nahrazuje definovaným způsobem odkazy.
Výsledek je uložen v adresářové struktuře popsané v následující podkapitole, celou tuto adresářovou strukturu je pak třeba stáhnout pomocí ftp nebo podobným způsobem, modul způsob stažení vyexportovaných souborů neřeší.
Adresářová struktura exportovaných dat
Modul používá při výchozím nastavení následující adresářovou strukturu:
offlinedata
- offgen
- definitions
- 1
- 2
…
- logs
- exports
- 1
Lpages
Larticles
Lassets
Limages
- 2
Lpages
Larticles
Lassets
Limages
…
Umístění adresářů definitions a logs je pevné, umístění adresáře pro exporty (ve výchozím nastavení exports) lze změnit v předvolbách modulu, kde lze změnit i názvy některých podadresářů jako pages apod. (nikoli ovšem jejich počet a způsob práce s nimi).
Adresáře, které mají v názvu číslo, korespondují s ID pravidla exportu, které je uloženo v databázi a použije se pro daný export. V adresářích definitions/číslo se ukládají definiční XML soubory exportu, v podadresářích adresáře exports/číslo se ukládají jednotlivé exportované soubory podle typů.
Kořenovým adresářem exportované podoby webu je tedy adresář offlinedata/offgen/exports/ID_pravidla/. Pod tímto adresářem se automaticky vytvoří následující adresářová struktura:
Kořenový adresář
- pages
- articles
- assets
- images
Do kořenového adresáře se umístí úvodní stránka celé prezentace. Do složky pages se ukládají všechny stránky ve smyslu stránek WebToDate, do složky articles zprávy WebToDate, složky assets a images obsahují soubory na stejné cestě jako je tomu v dané instalaci WebToDate (čili vytvářejí se zde podadresáře dle potřeby, aby původní cesty zůstaly zachovány).
Dále zde platí
- V adresářích pages a articles se již podadresáře nezakládají, u každé stránky či zprávy je pak jasné, na jaké cestě se nachází.
- Pokud je zdroj ve WebToDate v neveřejné zóně, uloží se do assets, tedy s žádnými zónami se zde nepracuje. Analogicky to platí pro stránku, nastavení toho, že se nachází v privátní zóně, se ignoruje.
- Názvy všech výše uvedených adresářů lze v předvolbách modulu změnit.
Pro soubory (statické HTML stránky) ukládané do adresářů pages a articles je zavedena jmenná konvence, takže je (typicky podle ID zprávy či stránky) vždy předem jasné, jak se daný soubor bude jmenovat. V adresářích assets a images se soubory objevují pod původními názvy, jak byly vloženy do WebToDate.
Základní jmenná konvence je artxxx.htm, kde xxx je ID zprávy a pagexxx.htm, kde xxx je id stránky.
Nahrazování hypertextových odkazů
V typech stránek, které jsou exportovány, mohou být vloženy následující typy odkazů v rámci veřejné části webové prezentace spravované pomocí WebToDate:
- Odkazy na zprávy prezentované přes skript detail.php vložené WebToDate (obsah pole TITLELINK, vloženo při sestavování stránek jako součást jednotlivých zpráv na oblasti či pomocí seznamů).
- Odkazy na zprávy vložené stránkovací lištou (přes stránkovaný seznam příloh)
- Odkazy na zprávy prezentované přes skript detail.php vložené do kódu ručně
- Odkazy na stránky vložené přes generování navigací
- Odkazy na stránky vložené stránkovací lištou
- Odkazy na stránky vložené ručně
- Odkazy na obrázky v adresáři images
- Odkazy na soubory v databázi zdrojů
- Odkazy na detail zdroje (typicky větší fotografie po kliku ve fotogalerii) prezentovaný přes skript detail.php
- Odkazy na soubory stahované dynamicky (ve tvaru /scripts/file.php?id=xxx)
Výše uvedené typy odkazů jsou exportem řešeny tak, aby v offline verzi byly funkční. Kromě toho se zachovávají absolutní odkazy (začínající na http, ftp, apod.), naopak se odstraňují všechny odkazy, které by ve výsledné offline prezentaci funkční nebyly (odkazy na všechny skripty modulů apod.).
Algoritmus vyhledává následující typy URL ve stránkách:
- <a href=…
- <link href=…
- <img src=…
Při náhradě odkazů se počítá s tím, že díky algoritmu generování je předem známé URL daného typu objektu:
- Zprávy - articles/artxxx.htm
- Stránky - pages/pagexxx.htm, resp. default.htm pro úvodní stránku
- Soubory ze zdrojů - assets/cesta_k_souboru
- Obrázky vložené staticky - images/cesta_k_souboru
Následující tabulka obsahuje seznam URL, která se nahrazují cestou odpovídající offline verzi.
| Tvar URL | Náhrada za URL |
| /scripts/detail.php?id=xxx | ../articles/artxxx.htm pokud se jedná o odkaz v souboru v adresáři pages, artxxx.htm, pokud se jedná o odkaz v souboru v adresáři articles apod. |
| Tvar daný konfigurační konstantou DETAILURL | Stejně jako v předchozím případě |
| /scripts/detail.php?pgid=xxx | ../pages/pagexxx.htm pokud se jedná o odkaz v souboru v adresáři articles apod. |
| /assets/… (začátek podle konfigurační konstanty ASSETS_PUBLICFILES) | ../assets/cesta_k_souboru/nazev_souboru pokud se jedná o odkaz z adresáře articles či pages apod. |
| /scripts/file.php?id=xxx | Stejné jako v předchozím případě |
| /images/… (začátek podle konfigurační konstanty WWWIMAGES) | ../images/cesta_k_souboru/nazev_souboru pokud se jedná o odkaz z adresáře articles či pages apod. |
| Adresa začínající lomítkem, která nezačíná na /scripts/, /assets/ a /images/ (tj. adresy staticky generovaných stránek) | Pokud je identifikováno jako stránka generovaná do offline verze, tak ../pages/pagexxx.htm pokud se jedná o odkaz v souboru v adresáři articles apod. |
U zpráv je způsob nahrazování u všech zpráv stejný, u stránek je výjimkou úvodní stránka, která se ukládá do kořenového adresáře. U dynamických adres zpráv se hledá parametr id nebo abbrev, ostatní parametry se (kromě parametrů pro stránkování) ignorují.
Algoritmus ponechává ve stránkách absolutní odkazy (začínající na http://, https://, ftp://, mailto: apod.). Pokud se nejedná ani o jeden případ z tabulky výše ani o absolutní odkaz, je URL nahrazeno odkazem pro neidentifikované URL.
Předpokládá se, že do kořenového adresáře lze umístit soubor (např. notfound.htm), který bude vytvořen ručně a do kterého se zapíše, že dané URL není součástí offline verze. Všechna neidentifikovaná URL jsou nahrazena odkazem na tento soubor, název souboru se nastavuje v předvolbách modulu.
Šablony pro offline podobu
Modul podporuje mapování šablon a předloh. To znamená, že lze v modulu pro libovolnou stránku ze stromu šablon zvolit jako párovou jinou takovou stránku.
Každá stránka ve WebToDate má šablonu, každá zpráva předlohu. Pokud se při generování offline verze z dané položky zjistí, že k předloze / šabloně, která je pro danou položku ve WebToDate zvolena existuje mapovaná stránka, použije se tato mapovaná namísto původní šablony či předlohy. Tím je vyřešeno to, že některé předlohy či šablony mohou obsahovat ve WebToDate objekty, které není žádoucí v exportované verzi použít. Příkladem je např. seznam souvisejících článků vytvářený na základě čistě klíčových slov – takový seznam by mohl vkládat odkazy i na zprávy, které se neexportují (nepatří do výběru definovaného v prvním kroku), což není příliš žádoucí.
Offline generátor a moduly WebToDate
Modul podporuje pouze ukládání stránek výše zmíněných typů. Nelze tedy ukládat žádné stránky jiných modulů, pouze stránky vytvářené samotným WebToDate. Rovněž výstup všech na serveru instalovaných extenzí se ignoruje, extenze se při sestavování stránek vůbec nespouštějí (extenzemi jsou ve WebToDate a modulech řešeny např. seznamy diskuzních příspěvků pod článkem, ankety ve článku, kontrola přístupu k dané zprávě určené pouze registrovaným uživatelům apod.).
Všechny neidentifikované odkazy se nahrazují jedním stejným odkazem nastaveným v předvolbách.
První export obsahu
Po instalaci nastavte předvolby modulu v nabídce Administrace – Předvolby. Ponechejte výchozí hodnoty, pouze do pole Neidentifikovaná URL nahrazovat odkazem zapište název stránky, které se bude zobrazovat po klepnutí na odkaz, který při exportu nebyl nahrazen odkazem na nějakou exportovanou stránku (např. "nopage.htm"). Formulář uložte.
Vyvolejte funkci Administrace – Pravidla exportu. Odkazem Přidat vyvolejte formulář pro vytvoření nového pravidla. V první záložce formuláře Základní zadejte nějaký název pravidla. Zvolte si nějakou kategorii WebToDate k exportu a vyplňte následující pole:
- Výchozí stránka - zvolte zde výchozí stránku vámi vybrané kategorie
- Kategorie – pomocí tlačítka Změnit zobrazte dialog pro výběr kategorií. Klepněte vlevo na vámi zvolenou kategorii, pomocí tlačítka >> ji vložte do seznamu Vybrané kategorie a pomocí tlačítka vč.podkat. nastavte, že se tato kategorie má exportovat včetně podkategorií (za názvem kategorie se objeví písmeno S).
Pravidlo uložte.
Přejděte do nabídky Administrace – Export a klepněte na název pravidla. Ve formuláři klepněte na tlačítko Generovat seznam. V pravém spodním rámci se zobrazí průběh sestavování seznamů. Po doběhnutí procesu bude mít formulář následující tvar, tj. aktivuje se tlačítko Generovat offline verzi.
Klepněte na Generovat offline verzi a vyčkejte doběhnutí procesu exportu.
Vygenerované soubory naleznete v adresáři offlinedata/offgen/exports/ID_pravidla/ instalace WebToDate, kde ID_pravidla je číslo pravidla založeného v předchozím kroku.