Kapitoly v Drupalu a jejich pojmenování

Jeden ze čtenářů se na mě obrátil s prosbou o bližší popis použití kapitol článku v Drupalu, jejich pojmenování a zobrazení. V Drupalu můžete standardně používat modul Book, který vytváří jakousi elektronickou knihu. Taková kniha se skládá z různých článků a stránek, které na sebe různě navazují a tvoří hierarchickou strukturu. Problém je v tom, že všechny kapitoly a knihy se v administraci objevují v jedné jediné rozbalovací nabídce, což znamená, že po nějaké době je takovýto systém nepřehledný a nepoužitelný. Právě zde přichází ke slovu modul Paging.

Modul Paging, který pro tvorbu kapitol používám, naproti tomu nevyžaduje, aby jeden, kapitolami rozdělený článek, byl zadáván na několikrát. Vše je maximálně přehledné, byť o trochu méně uživatelsky přívětivé, ale myslím, že na to jsou uživatelé Drupalu zvyklí.

Paging si stáhněte z webové stránky projektu na adrese drupal.org/project/paging. Jeho zprovoznění vyžaduje jako obvykle nakopírování souborů do příslušné složky s moduly (např. /sites/all/modules), jeho aktivaci ve správě modulů, aktivaci typů obsahu které budou kapitoly využívat (Administrace | Nastavení webu | Paging) a aktivaci podpory kapitol ve správě filtrů (Administrace | Nastavení webu | Formáty textu).

Poté už stačí, pokud do článku, který chcete kapitolami rozdělit, vložíte značku <!--pagebreak-->. Na místě, kde ji Drupal nalezne, vznikne zakončení stránky a zbytek článku bude dostupný pomocí klasického stránkování.

Jak na názvy kapitol?

Potíž samozřejmě nastává v případě, že si chcete kapitoly nějakým způsobem pojmenovat. V tom případě vám běžná verze modulu Paging stačit nebude. Vřele doporučuji si přečíst diskuzi k tomuto tématu na Drupal.org ve vlákně Pages needs names. Je zde upravená verze modulu (která je zřejmě zahrnuta už i do vývojové verze), která umožňuje kapitoly pojmenovávat.

Přináší několik změn v administraci. Přepněte se na Administrace | Nastavení webu | Paging a podívejte se, co je vyplněno v políčku Separator. Mělo by tam být napsáno pagebreak a doporučuji vám to neměnit. Rozdělování kapitol pak proběhne pomocí nových značek:

[firstpagebreak title=Úvodní strana...]

[pagebreak title=Jedna z kapitol...]

Značky opět vkládáte do textu na místa, kde bude článek zalomen na kapitoly. První značku použijete samozřejmě pouze jednou, označuje úvodní stranu. Pro všechna další zalomení použijte druhý typ zápisu. Pojmenování kapitoly uveďte jako text za title=.

Kapitoly
 
Rozdělování pomocí kapitol v praxi

Upravený modul Paging dále umožňuje, aby se seznam pojmenovaných kapitol objevil jako součást článku, což samozřejmě zpříjemňuje uživatelům prohlížení webu více, než jen sada čísel sloužících jako odkazy na stránky. Výpis kapitol musíte zapnout v Administrace | Nastavení webu | Paging pomocí volby Enable pages listing.

Umístění seznamu kapitol

Seznam kapitol se v upraveném modulu Paging umisťuje pod článek. Pokud se kouknete na různé weby (tedy nejenom drupalovské), kde kapitoly používají, pak si všimnete, že někdy jsou sice kapitoly umístěny dole, velice často je však najdete i v horní části článku. Změna je jednoduchá, musíte jen upravit jeden řádek v souboru paging.module.

Vyhledejte tuto podmínku:

if (variable_get('paging_pagelist_enabled', 1)) {

            $node->content['body']['#value'] .= theme('item_list', $links);

          }

A změňte ji na:

if (variable_get('paging_pagelist_enabled', 1)) {

            $node->content['body']['#value'] = theme('item_list', $links) . $node->content['body']['#value'];          

          }

Jinými slovy namísto toho, aby se seznam kapitol přilepoval na konec těla článku (resp. kapitoly), bude zobrazen vždy na jeho začátku.

Jak tato úprava vypadá v praxi, se můžete podívat například na webových stránkách ExtraHardware.cz.

Kapitoly
 
Výpis kapitol na ExtraHardware.cz

Kapitoly a FCKeditor

Nejnovější verze modulu pro podporu FCKeditoru už umí s kapitolami pracovat. Podporuje však jen první typ zápisu, tedy značku <!--pagebreak-->, což neumožňuje pojmenovávání jednotlivých kapitol. Každopádně je to cesta, jak zpříjemnit zadávání článku, pro vložení rozdělovací značky pak stačí stisknout jediné tlačítko.

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

Výborný návod, díky!

Jinak pokud web ovládají technicky zdadní jedinci, je IMHO FCKeditor nebo TinyMCE k ničemu = těžkopádný a taky prasí kód. Pro všechny běžné články i s obrázky stačí nastavený BUEditor s vazbou na vkládání obrázků s IMCE.

Profile picture for user Jan Polzer

Bohužel ve většině případů, kdy se web tvoří někomu na zakázku, je třeba počítat s tím, že web technicky zdatní jedinci neovládají :-)

 

návštěvník

Jsem nevěděl, že EHW jsou lamy :) a potřebují tu FCKhrůzu... Ale ne, jen ve srandě.-) důležitej je obsah.

Profile picture for user Jan Polzer

ono je to taky hodně o produktivitě. Já tu taky mám FCKeditor. A ne kvůli tomu, že bych nedovedl napsat pár HTML tagů, ale proto, že mi to i při delším načítání administrační stránky urychluje práci.

 

návštěvník

Nevies ako vyriesit nahradenie ciarky kodom %2C? V selecte a item liste mi to funguej dobre ale v normalnom pagingu sa ciarka nahradi kodom. Viem ze aj na extrahardware je rovnaky "problem".

Profile picture for user Jan Polzer

no, to opravdu nevím. Chvíli jsem se tím zabýval, ale bez výsledku. Na základě Tvého dotazu jsem však našel modul Clean Pagination. Na první pohled to vypadá, že je to řešení, na které se ptáš, ale nezkoušel jsem to. Pokud to uděláš, budu rád za informaci o výsledku.

návštěvník

Nainštaloval som si modul paging z drupal.org a po jeho aktivácii mi začalo vyhadzovať nasledovné hlášky ak sa prepnem do režimu úpravy článku.
Warning: MySQL server has gone away query: INSERT INTO watchdog (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (1, 'php', '%message in %file on line %line.', 'a:4:{s:6:\"%error\";s:12:\"user warning\";s:8:\"%message\";s:1104475:\"MySQL server has gone away\nquery: UPDATE cache_form SET data = 'a:40:{s:3:\\"#id\\";s:9:\\"node-form\\";s:3:\\"nid\\";a:2:{s:5:\\"#type\\";s:5:\\"value\\";s:6:\\"#value\\";s:3:\\"110\\";}s:3:\\"vid\\";a:2:{s:5:\\"#type\\";s:5:\\"value\\";s:6:\\"#value\\";s:3:\\"110\\";}s:3:\\"uid\\";a:2:{s:5:\\"#type\\";s:5:\\"value\\";s:6:\\"#value\\";s:1:\\"1\\";}s:7:\\" in \www\includes\database.mysql.inc on line 128
Neviem s tým pohnúť. Neporadil by mi niekto ?

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