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.
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.
Přidat komentář