Drupal 7 a úprava vyhledávání – datum publikace a šablona výsledků

Zabudované vyhledávání v Drupalu 7 (i starších verzích) má z mého pohledu jednu podivnou vlastnost. Pod výsledky zobrazuje datum aktualizace obsahu, místo data jeho vydání. Po hromadných úpravách si tak úplně rozhodíte smysluplnost výsledků hledání. Naštěstí to lze vyřešit úpravou šablony.

Upravovali jste někdy při tvorbě tématu vzhledu pro Drupal výsledky hledání? Je to oblast, na kterou se docela často zapomíná. Přitom je úprava stránky s výsledky vyhledávání docela snadná. Nebudu tu rozebírat, jak je upravit pomocí CSS - pokud to nezvládnete, asi byste se do kódování tématu vzhledu pro Drupal neměli vůbec pouštět a vrátit se ke studiu CSS.

Kdy budete chtít výsledky vyhledávání upravovat? Nejjednodušším příkladem je nespokojenost s tím, že jsou odsazeny od okraje. Seznam výsledků hledání je totiž ve skutečnosti číslovaný seznam tvořený HTML značkami OL a LI. Pokud je nenastylujete, jsou odsazeny od levého okraje, což u výsledků hledání považuji za plýtvání místem.

Druhou věcí, která mi vadí, je zobrazování data aktualizace, místo data vydání u nalezených článků. Někdy to může být fajn, ale představte si, že třeba jen měníte obrázek, nebo provedete nějakou nepodstatnou hromadnou úpravu u většího počtu článků - v ten moment začnou výsledky hledání ukazovat datum této aktualizace, což je nežádoucí.

Úprava odsazení výsledků vyhledávání v Drupalu

Abyste na mě až tak moc nenadávali... Co se odsazení výsledků hledání týče, opravdu stačí jen dva jednoduché řádky do CSS v tématu vzhledu a je po problému. Stačí se kouknout do zdrojového kódu (Firebugem nebo podobným nástrojem ve webových prohlížečích) a zjistíte, že odsazení způsobuje nejprve OL obalující všechny výsledky hledání, a poté ještě třída pro text v každé z položek hledání.

Prvního odsazení se tedy zbavíte použitím .search-results{padding: 0px;}, odsazení textu pak vyřeší .search-results .search-snippet-info{padding-left: 0px;}.

Jak upravit datum ve výsledcích hledání v Drupalu 7

O něco složitější je změna data u článků zobrazených ve výsledcích vyhledávání. Pokud byste chtěli strukturu výsledků vyhledávání upravit více, než co se týče data, budete potřebovat šablony search-results.tpl.php (obalovač výsledků hledání, OL) a search-result.tpl.php (šablona pro jednotlivé položky ve vyhledávání, LI). Najdete je ve složce /modules/search, stačí je překopírovat do tématu vzhledu a upravit.

My si dnes vystačíme s tím, že po kouknutí do šablony search-result.tpl.php zjistíme, jakým způsobem se generuje datum pod výsledky hledání. V šabloně je obsaženo v proměnné $info. Všechny proměnné v této šabloně jsou naplňovány pomocí preprocess funkce template_preprocess_search_result(). Odkaz vede na api.drupal.org. Tam se na obsah této funkce můžete kouknout.

Mělo by vám být zřejmé, že k naplnění data dochází na řádku, kde se manipuluje s $info['date']. Drupal zde přiřadí datum poslední aktualizace. Stačí tedy tuto konstrukci upravit. Ve funkci je dostupný rovněž objekt $result['node'] obsahující informace o nalezeném článku. V $result['node']->created je pak jeho datum vydání.

Takže když všechno zkombinujeme dohromady, do souboru template.php v tématu vzhledu svého Drupalu byste měli přidat původní podobu funkce template_preprocess_search_result(), kdy ji přejmenujete na TEMAVZHLEDU_preprocess_search_result. Část s naplňováním $info['date'] pak upravte následovně:

if (!empty($result['date'])) {
  $info['date'] = format_date($result['node']->created, 'short');
}

Resetujte registr témat vzhledu a změna by se měla ihned projevit. Dostupnosti objektu $result['node'] můžete využít i k tomu, abyste do výsledků hledání například doplnili ikonku článku nebo jakékoli další informace z nalezeného uzlu.

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

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