Plánovač vydání a vybírací kalendářík v Drupalu

Základní podoba Drupalu na rozdíl od WordPressu nenabízí plánovač vydání. Jakmile vložíte obsah, je buď vydán, nebo vložen bez vydání, nic dalšího nelze nastavit. S pomocí modulu Scheduler plánování zprovozníte. Mám pro vás tip, jak si zpříjemnit zadávání plánovaného data a času vydání jednoduchým kalendáříkem.

Modul Scheduler funguje velice jednoduše. Po jeho instalaci a zapnutí jděte to Správa obsahu|Typy obsahu a pro konkrétní typ obsahu, který chcete vydávat se zpožděním, zapněte podporu Scheduleru (Enable scheduled (un)publishing). Užitečná je volba Alter published on time. Ta zajistí, že po publikování článku se změní datum vložení na datum publikace. Malá, ale často nezbytná pomůcka.

Scheduler funguje ve spolupráci s cronem. Tady bych se chvilku zastavil, protože spousta lidí provozujících Drupal si funkci plánovače vydání špatně vykládá. V momentě, kdy se spustí cron, tak Scheduler zkontroluje, zda existuje článek s přípravou k vydání, jehož datum a čas je nižší, než je aktuální čas. Pokud ano, tak jej vydá. Vzhledem k tomu, že je Scheduler navázán na cron, znamená to, že článek se nevydá přesně v naplánovaný čas, ale až při nejbližším dalším běhu cronu.

Pro příklad. Mám článek naplánovaný na vydání ve 14:13. Cron se mi spouští každou čtvrthodinu. To znamená, že článek se na webu nejdříve objeví v 14:15. Pokud by mi cron běhal každou hodinu, pak by se tento článek objevil až v 15 hodin.

To stejné platí pro vydání na půlnoc. Chcete-li článek vidět hned o půlnoci, pak mu zadejte čas vydání na 00:00:00. Častou chybou je nastavení vydání na čas 00:00:01, tedy sekundu po půlnoci. Cron, který se spustí o půlnoci přesně, tak takový článek nevezme v úvahu a vydá jej až při svém dalším spuštění.

Nezapomeňte, že publikace je přímo ovlivněna časovou zónou webu. Pokud ji nemáte správně nastavenu, může se automatická publikace od skutečného času lišit o hodiny.

Nedokonalost Scheduleru

Pokud jsou mezi vámi tací, co používali modul Scheduler v Drupalu 5, pak si vzpomenou, že mu chybělo pohodlné zadávání data a času. Vyplňovat políčko stylem 2009-09-02 10:00:00 není zrovna uživatelsky přívětivé. Pokud jste v Drupalu nainstalovali modul Javascript Tools, pak vám pod políčkem pro zadávání plánovaného data vydání přibylo tlačítko otevírající javascriptový kalendářík, ve kterém jste datum zvolili kliknutím.

Nic podobného však tento modul pro Drupal 6 nenabízí. Místo toho najdete v modulu Date součástku Date Popup. Ta je původně určena pro CCK políčka s definicí datumu, ale její javascriptový kalendářík je možné provázat i na Scheduler.

Kalendář pro Scheduler v Drupalu 6

Nainstalujte modul Date a ve správě modulů si zapněte Date Popup (a k tomu moduly, na kterých je závislý). Co se týče Scheduleru, musíte v tuto chvíli použít jeho vývojovou verzi, čili 6.x-1.x-dev. Ta stabilní ještě nedovede oba moduly propojit a je nutné ji patchovat. To není pro každého stravitelné, proto moje doporučení na vývojovou verzi - funguje bez problému.

Poznámka: Koukněte se na datum vydání tohoto článku. V době, kdy jej budete číst, klidně může být již nová verze Scheduleru s podporou Date Popup ve stabilní verzi. V době přípravy tohoto článku byla stabilní verze 1.5 a ta Date Popup nepodporovala.

Kromě zapnutí Date Popup (a úpravy časové zóny v nastavení webu) již není potřeba nic dalšího nastavovat. Pro srovnání si můžete prohlédnout, jak vypadalo zadávání plánovaného vydání se samotným Schedulerem:

Scheduler

Scheduler

a po aktivaci modulu Date Popup:

Scheduler a Date Popup

Scheduler a Date Popup

Javascriptový kalendář v Date Popup využívá knihovny jQuery UI. Výchozí vzhled není nic moc, a to jakkoli je oproti původnímu stavu bez kalendáře zlepšením. Pokud byste chtěli použít aktuální verzi knihoven, doinstalujte si modul jQuery UI s potřebnými JavaScripty.

Není to však nutné. Navíc, současná verze Date Popup nedovede převzít téma vzhledu z novějšího jQuery, pouze JavaScripty. Zde je tedy návod, jak upravit vzhled kalendáříku a třeba doplnit i vyznačení aktuálního a zvoleného dne.

Jděte na ThemeRoller, kde se vlevo přepněte do galerie (Gallery) a vyberte si stažení některého z připravených témat vzhledu. Dostanete se do sekce pro stažení, kde vpravo zvolte verzi 1.6 a tlačítkem Download si balíček stáhněte. Na svém webu se přepněte do složky sites/all/modules/date/date_popup/themes. Do adresáře images sem rozbalte obsah složky development-bundle/themes/název/images ze staženého balíčku. Dále do složky sites/all/modules/date/date_popup/themes nakopírujte soubor ui.all z balíčku. Přejmenujte jej na datepicker.css, přičemž původní css soubor smažte. Výsledek může vypadat nějak takto:

Scheduler, Date Popup a jQuery UI

Scheduler, Date Popup a jQuery UI

Máte-li další tipy, jak si kalendářík pro Scheduler vylepšit, sem s nimi.

Tagy

Buďme ve spojení, přihlaste se k newsletteru

Odesláním formuláře souhlasíte s podmínkami zpracováním osobních údajů. 
Více informací v Ochrana osobních údajů.

Autor článku: Jan Polzer

Tvůrce webů z Brna se specializací na Drupal, WordPress a Symfony. Acquia Certified Developer & Site Builder. Autor několika knih o Drupalu.
Web Development Director v Lesensky.cz. Ve volných chvílích podnikám výlety na souši i po vodě. Více se dozvíte na polzer.cz a mém LinkedIn profilu.

Komentáře k článku

návštěvník

Scheduler jsem zatím nezkoušel, ačkoliv u jednoho projektu, na kterém se podílím je do budoucna zvažována podobná funkcionalita. Návaznost na cron mi přijde dost nešikovná a omezující fungování takového systému.

Ještě mě napadá, že by podobná funkcionalita mohla být dosažena pomocí cck pole date v konkrétním typu obsahu a vypisováním obsahu skrze views.

Profile picture for user Jan Polzer

Jistě, že by to šlo i přes Views, ale protože Drupal rozlišuje vydaný a nevydaný obsah, musíte ošetřovat hromadu dalších věcí. Použití cronu je u redakčních systémů dle mého názoru standard. Nebo snad potřebujete plánované vydání kontrolovat každou sekundu? (teda ne, že by cron teoreticky nemohl každou sekundu běhat).

návštěvník

Vše jsem snad učinil jak jsem měl ale vzhled kalendáře se mi nezměnil. Jsou nějaké volby které načítání toho nového vzhledu mohou ovlivnit?

děkuji

návštěvník

Nejsem si jistý ale myslím že ne. Jak to zjistím?

Jestli není problém ve verzích. Volbu 1.6 jsem na stránce jqueryui.com na downloadu již nenašel. I adresářová struktura se mi zdá jiná. Taky verze views už je asi jiná ale nevím jestli má na to vliv.

Děkuji za odpověď.

JK

Profile picture for user Jan Polzer

Jednoduše si tu cache prohlížeče vyprádzněte.

Spusťte si Firebug ve Firefoxu nebo podobný nástroj v jiném prohlížeči a podívejte se, zda tam neskáče nějaká chyba JavaScriptu, jako že nemůže najít potřebný soubor.

návštěvník

Cash vyprázdňuji. Objevil jsem v Drupalu "Nejnovější záznamy v logu" a tam se při mých experimentech objevili nějaký ty "page not found", tak jsem to různě testoval. Určité změny kalendáře jsem dosáhnul ale spíše k horšímu a to i když mi to již neházelo žádnou chybu.

Nevím, už jsem to vzdal.

Díky za snahu.

návštěvník

Zdravím,

chtěl bych se zeptat, jakým způsobem se dá automaticky nastavit nějaký typ obsahu na nevydaný, jestliže obsahuje cck datum a toto datum už vypršelo? Scheduler v tomto případě použít nejde, nebo? Co použít?

Obě Vaše knihy o Drupalu jsou velmi poučné, díky za ně ;)

Přidat komentář

Odesláním komentáře souhlasíte s podmínkami Ochrany osobních údajů

reklama
Moje kniha o CMS Drupal

 

Kniha 333 tipů a triků pro Drupal 9


Více na KnihyPolzer.cz

Sledujte Maxiorla na Facebooku

Maxiorel na Facebooku

Hosting pro Drupal a WordPress

Hledáte český webhosting vhodný nejenom pro redakční systém Drupal? Tak vyzkoušejte Webhosting C4 za 1200 Kč na rok s doménou v ceně, 20 GB prostoru a automatické navyšováním o 2 GB každý rok. Podrobnosti zde.

@maxiorel na Twitteru

Maxiorel na Twitteru