Opravdu rychlý našeptávač pro Drupal? Stačí jeden modul

Vyhledávače, ale i různé eshopy nabízejí ve vyhledávacím políčku našeptávač. Zadáte pár písmenek a nabídne se výběr odpovídajících hledaných frází nebo produktů. Drupal má několik modulů s touto funkcí, potíž je v tom, že řada z nich je na běžném hostingu nepoužitelná.

Reklama

Za ty roky, co stavím weby na Drupalu, jsem měl už řadu požadavků na vytvoření našeptávače. Nebo českoanglicky autocomplete nápovědy u vyhledávání. Jak chcete. Což o to, v Drupalu něco takového není až moc velký problém.

Problém je použitelnost těchto řešení. Řada z nich totiž staví na modulu Views a tedy na databázi. A všichni víme, jak jsou na tom české hostingy s rychlostí. Žalostně.

Já jsem několikrát použil modul Search Autocomplete. Co do nastavení, funguje perfektně. Napojíte jej prakticky na jakékoli testové políčko, sám o sobě ihned začne fungovat s klasickým vyhledáváním. Výsledky snadno vyfiltrujete pomocí Views, takže v nápovědě se bude zobrazovat jen taková sada dat, kterou chcete.

Vždycky to fungovalo perfektně do doby, než jsem web ze svého vývojového serveru překopíroval na hosting klienta. Našeptávač, který se načítá jednotky sekund, je absolutně k ničemu. Taková interakce, kdy napíšu něco do hledání, jdu kliknout na tlačítko a v ten okamžik se mi pod políčkem něco rozbalí, je spíše k vzteku.

Ano, Search Autocomplete momentálně nabízí také napojení na libovolný jiný zdroj dat pro nápovědu. Můžete jej nakešovat na jiném umístění. Ale musíte si to vyrobit sami.

Mnohem lepší řešení nabízí modul Fast Autocomplete. Funguje podobně, je ale mnohem rychlejší. Data pro našeptávač si totiž ukládá do JSON souborů. Vyvolání našeptávače tak nepotřebuje ani databázi, ani nějakou režii Drupalu. Je tak velice rychlé. Pojďme se mrknout, jak tento modul na webu rozběhnout.

Našeptávač pro Drupal: Fast Autocomplete

Rychlý našeptávač v Drupalu s modulem Fast Autocomplete

Po zapnutí modulu Fast Autocomplete přejděte do administrační části Nastavení > Vyhledávání a metadata > Fast Autocomplete Configuration.

  1. Klepněte na tlačítko Add Fast Autocomplete configuration. Zobrazí se vám formulář pro zadání názvu nového vyhledávání, pojmenujte jej libovolně. Zvolte plugin, který poskytne data. Pravděpodobně budete mít na výběr jenom Basic Node Title Search Plugin. Tedy našeptávač na základě nadpisů obsahu.
  2. Do políčka Inputs to enable Fast Autocomplete on zadejte CSS selektor vyhledávacího pole na webu, ke kterému chcete našeptávač napojit. Například input.form-search pro běžné políčko vyhledávání v Drupalu.
  3. Zvolte si počet položek v našeptávači, text zobrazovaný v případě hledání bez výsledků a také zapněte odkaz pro zobrazení všech výsledků. Ať si uživatelé nemyslí, že pět nabídnutých produktů nebo článků v našeptávači je vše, co v rozsáhlé nabídce vašeho webu najdou. Fast Autocomplete odkaz prolinkuje tam, kam směruje napojený formulář.
  4. Pro vzhled našeptávače je zásadní část The View mode to use for rendering each entity type in the result. Jelikož budeme prohledávat v základu jenom obsah, najděte si v této sekci právě rozbalovačku Obsah a vyberte režim zobrazení, v jakém se články a další obsah objeví v našeptávači.
  5. Dále můžete upřesnit počet znaků, po jejichž zadání naskočí našeptávač, zvýrazňování zadaného slova v ploše našeptávače a další vychytávky. Začátečníkům ještě prozradím, aby pole Result location nechali prázdné. Slouží pro napojení výsledků z vyhledávače jinam než pod políčko se zadaným textem.
  6. Nakonec vespod nastavte maximální stáří dat z našeptávače. Jeden den dozadu asi úplně stačí. Drupal se pak postará o aktualizaci dat sám. Nastavení poté uložte.

Nezbývá než novou funkci webu vyzkoušet. Zkuste tedy psát do vyhledávacího políčka nebo tam, kde jste Fast Autocomplete napojili a prohlédněte si výsledek. Může to vypadat i nějak takto:

Fast Autocomplete v Drupalu 8

Našeptávač z Fast Autocomplete pohodlně nastylujete a upravéte v CSS, takže bude přesně takový, jaký si řekněte.

Tip: Modul Fast Autocomplete si rozumí také se sofistikovaným modulem pro vyhledávání Search API. O jeho možnostech si povíme zase někdy příště.

Další tipy pro Fast Autocomplete

Jak jste jistě pochopili, díky Fast Autocomplete je možné v Drupalu připravit hned několik různých našeptávačů. Když vezmu nějaký firemní web, můžeme takto obohatit základní fulltextové vyhledávání, ale pak přidat i rychlý našeptávač například do vyhledávače zaměstnanců nebo nějakých pracovníků. Stačí zkrátka připravit více profilů a napojit je na různá políčka. Pro odlišení množiny prohledávaného obsahu byste ale už potřebovali i modul Search API.

Dále bych se zastavil u volby zobrazení dat v našeptávači. V nastavení jsme volili režim zobrazení. Určitě víte, že každý článek či jiný obsah je v Drupalu dostupný ve formě úvodníku a plného zobrazení. V osmičce si ale můžete těchto režimů zobrazení přidat hned celou řadu dalších, vlastních.

Využijte toho právě ve spojení s našeptávačem. V administrační části Struktura > Režimy zobrazení > Režimy zobrazení obsahu klepněte na tlačítko Add view mode a přidejte nový režim zobrazení třeba pro článek. Nazvěte jej třeba autocomplete.

Poté přejděte do Struktura > Typy obsahu > Článek > Správa zobrazení. Vespod zapněte právě vytvořený režim zobrazení autocomplete, nastavení pak uložte. Nahoře se vám objeví záložka Autocomplete, kam se přepněte a nastavte si políčka z článku, která se mají v našeptávači objevit.

Když se vrátíte do nastavení profilu ve Fast Autocomplete a změníte režim zobrazení obsahu na právě vytvořený, je ještě nutné vyčistit již vytvořené JSON soubory, aby se vám změna projevila hned. Na stránce /admin/config/search/fac stačí rozbalit tlačítko u profilu a vybrat volbu Delete json files.

Odlišné zobrazení obsahu na různých místech v Drupalu používám velice rád. Díky šablonování přes Twig v Drupalu 8 mám plnou kontrolu nad tím, jak bude výstup vypadat.

Tagy: 

Reklama

Komentáře

Díky za tip, neznal jsem. Jen přemýšlím, jestli existuje způsob, jak generovat ty JSON soubory pro cache automaticky? Protože chápu-li to správně, tak se generuje až po reálném požadavku a ve výchozím stavu se za 24 hodin smaže. Pokud nemám hodně navštěvovaný web a nebo se nevyhledávají pořád ty stejná slova dokola, tak mi to přijde, že to pomůže minimálnímu množství návštěvníků.

No jak vidíš na tom GIFu v článku, je to poměrně rychlé i tak. Ale souhlas, předgenerování JSON cache by se hodilo. Možná by stačilo nemazat to každý den, ale jednou za týdne. Záleží na návštěvnosti webu.

Tvořím weby. Nabízím poradenství pro Drupal. Jsem na Twitteru.

Přidat komentář