====== Syndikace XML ====== https://www.dokuwiki.org/syndication [[dokuwiki|DokuWiki]] zpřístupňuje část svých dat jako XML kanál prostřednictvím souboru [[this>feed.php]]. Kanál lze odebírat pomocí [[wp>Aggregator|čtečky zpráv]]. Funkce XML syndikace byla implementována pomocí vynikající knihovny „Feed Creator Class“ od Kaie Blankenhorna. ===== Možnosti konfigurace/URL ===== Způsob generování kanálu lze nastavit pomocí určitých konfiguračních voleb. Pokud je feed.php volán bez jakýchkoli argumentů, použije tyto volby k vytvoření kanálu. Všechny volby lze také přepsat parametry předanými v URL. ==== Zakázání ==== Ve výchozím stavu je XML kanál DokuWiki dostupný, ale lze jej vypnout v konfiguraci pro zakázání akcí. * **Konfigurační volba:** [[doku>config:disableactions]] * **Výchozí stav:** XML Syndication (RSS) nezaškrtnuto ==== Odkazy ==== Každá položka vytvořeného kanálu bude mít odkaz; tato volba určuje, kam bude odkaz směřovat. * **Konfigurační volba:** [[doku>config:rss_linkto]] * **URL parametr:** linkto * **Výchozí hodnota:** diff * **Možné hodnoty:** ^ Hodnota ^ Cíl odkazu ^ | page | revize stránky platná v okamžiku vytvoření kanálu | | current | aktuálně nejnovější revize stránky | | rev | pohled na konkrétní revizi stránky | | diff | [[doku>diff]] zobrazení změn stránky | ==== Obsah kanálu ==== Co se zobrazuje v tělech položek kanálu, je řízeno touto volbou. * **Konfigurační volba:** [[doku>config:rss_content]] * **URL parametr:** content * **Výchozí hodnota:** abstract * **Možné hodnoty:** ^ Hodnota ^ Obsah položky ^ | abstract | první odstavec stránky | | diff | prostý textový diff změn stránky | | htmldiff | HTML tabulka diffu změn stránky | | html | plně vykreslený HTML obsah stránky | ==== Typ obsahu ==== Určuje, zda se do seznamu položek kanálu zahrnují i média. * **Konfigurační volba:** [[doku>config:rss_media]] * **URL parametr:** view * **Výchozí hodnota:** both * **Možné hodnoty:** both, pages, media ^ Hodnota ^ Obsah položky ^ | both | vypisuje stránky i média | | pages | vypisuje pouze stránky, média nevypisuje | | media | vypisuje pouze média, stránky nevypisuje | ==== Formát kanálu ==== DokuWiki umí vytvářet XML kanály v několika formátech. * **Konfigurační volba:** [[doku>config:rss_type]] * **URL parametr:** type * **Výchozí hodnota:** rss1 * **Možné hodnoty:** ^ Hodnota ^ Formát kanálu ^ | rss | RSS 0.91 | | rss1 | RSS 1.0 | | rss2 | RSS 2.0 | | atom | ATOM 0.3 | | atom1 | ATOM 1.0 | ==== Režim seznamu ==== feed.php lze použít k exportu seznamu posledních změn (výchozí), ale lze jej použít i pro jiné seznamy. * **Konfigurační volba:** žádná * **URL parametr:** mode * **Výchozí hodnota:** recent * **Možné hodnoty:** ^ Hodnota ^ Režim seznamu ^ | recent | vypíše nejnovější položky changelogu s nejnovější nahoře (odpovídá wiki stránce [[recent-changes|Poslední změny]]) | | list | jednoduše vypíše všechny stránky v daném jmenném prostoru (viz níže, jak jej zvolit) | | search | vypíše stránky odpovídající danému dotazu, předanému dalším parametrem ''q'' | ==== Filtrování jmenného prostoru ==== Kanál lze omezit tak, aby zahrnoval pouze stránky z určitého jmenného prostoru. * **Konfigurační volba:** žádná * **URL parametr:** ns * **Výchozí hodnota:** * * **Možné hodnoty:** libovolný platný jmenný prostor V [[#režim seznamu]] ''list'' bude kanál obsahovat stránky pouze z daného jmenného prostoru, bez podřízených jmenných prostorů. V [[#režim seznamu]] ''recent'' jsou podřízené jmenné prostory zahrnuty. Omezení jmenného prostoru není přímo podporováno pro [[#režim seznamu]] ''search''. Místo toho můžete dát omezení jmenného prostoru přímo do dotazu (pomocí syntaxe ''@'') - to však **bude** zahrnovat podřízené jmenné prostory. ==== Řazení položek ==== Způsob řazení stránek v kanálu lze změnit (pouze pro [[#režim seznamu]] ''list''). * **Konfigurační volba:** žádná * **URL parametr:** sort * **Výchozí hodnota:** natural * **Možné hodnoty:** date, natural Ovlivňuje pouze [[#režim seznamu]] ''list''. Přirozené řazení je prosté pořadí, v jakém jsou stránky uloženy. V [[#režim seznamu]] ''recent'' jsou stránky vždy řazeny podle data, jak již název napovídá. ==== Limit položek ==== Lze řídit i maximální počet stránek uvedených v kanálu. * **Konfigurační volba:** [[doku>config:recent]] * **URL parametr:** num * **Výchozí hodnota:** [[doku>config:recent]] * **Možné hodnoty:** libovolné celé číslo Poznámka: Skutečný počet vrácených položek bude dále omezen počtem položek, které splní kritéria kanálu. ==== Zahrnutí drobných úprav ==== Ve výchozím nastavení se v kanálu nezobrazují drobné úpravy. To lze změnit parametrem v URL. * **Konfigurační volba:** žádná * **URL parametr:** minor * **Výchozí hodnota:** 0 * **Možné hodnoty:** 0 nebo 1 ==== Zobrazit pouze nové položky ==== Umožní vypisovat pouze nově vytvořené položky. * **Konfigurační volba:** žádná * **URL parametr:** only_new * **Výchozí hodnota:** 0 * **Možné hodnoty:** 0 nebo 1 ==== Kešování ==== (Ukládání do mezipaměti) XML kanály jsou kešovány, aby se snížila zátěž wiki. Tato volba určuje, jak dlouho jsou keše kanálu platné. * **Konfigurační volba:** [[doku>config:rss_update]] * **URL parametr:** žádný * **Výchozí hodnota:** 5*60 * **Možné hodnoty:** čas v sekundách ==== Shrnutí ==== [[summary|Souhrn]] změny stránky je obvykle zahrnuto v titulku položky kanálu. To může být někdy nechtěné a lze to vypnout. * **Konfigurační volba:** [[doku>config:rss_show_summary]] * **URL parametr:** žádný * **Výchozí hodnota:** 1 * **Možné hodnoty:** 0 nebo 1 ===== Příklady ===== * ''%%http://example.com/dokuwiki/feed.php?type=rss2&num=5%%'' vrátí [[wp>RSS|RSS 2.0]] kanál 5 nejnovějších změn * ''%%http://example.com/dokuwiki/feed.php?mode=list&type=atom&linkto=page&ns=wiki%%'' vypíše všechny stránky v jmenném prostoru „wiki“ jako [[wp>Atom (standard)|ATOM 0.3]] kanál, kde všechny položky odkazují přímo na stránku ===== RSS kanály a ACL ===== Pokud jsou seznamy ACL povoleny, stránky s omezeným čtením se do veřejných kanálů **nezahrnují**. Chcete-li přistupovat ke kanálům omezených stránek, je nutné předat do URL uživatelské jméno a heslo takto: %%''http://example.com/dokuwiki/feed.php?u=username&p=password''%%. :!: Toto není příliš bezpečné a může vést k úniku přihlašovacích údajů. Pokud DokuWiki běží nad ''mod_php'', může fungovat i předání přihlašovacích údajů přes HTTP Basic Auth, které některé čtečky podporují. ==== Přístup přes .htusers ==== V mém nastavení (DokuWiki 2008-05-05 a [[http://liferea.sourceforge.net/|Liferea]]) HTTP Basic Auth nefungoval ihned po instalaci. Zdá se, že k ověření nedocházelo, protože se na něj webový server neptal. Proto jsem jej vynutil vytvořením souboru .htusers (z uživatelských informací DokuWiki) a omezením přístupu k feed.php: Pro vygenerování souboru htusers (používaného Apachem) z uživatelských dat DokuWiki jsem použil tento jednoduchý skript: user@host# cat < update_htusers #!/bin/sh grep -v '^#' users.auth.php | cut -sd\: -f1,2 > .htusers EOF user@host# chmod +x update_htusers user@host# ./update_htusers Do stávajícího .htaccess v hlavní složce DokuWiki přidejte: AuthType Basic AuthName "feed" AuthUserFile path-to-your-htusers-file Order deny,allow require valid-user ===== Viz také ===== * [[rss|Agregace RSS/ATOM kanálů]] pro přidávání externích kanálů na stránky DokuWiki * Plugin [[doku>plugin:feed|Feed]] pro další způsoby exportu příspěvků [[doku>plugin:blog]] přes RSS * Tipy k [[doku>tips:blogging#feed_setup|nastavení kanálu]] při blogování s DokuWiki * Plugin [[doku>plugin:Feedauth|Feedauth]] posílá v kanálu hlavičku „authorization required“, což někteří klienti vyžadují.