Přeskočit přímo na text


Modul NodeSymlinks - konečně je tu betaverze

Posledních pár dnů jsem strávil na dolaďování svého nového „dítka“ – modulu NodeSymlinks. Koncept modulu vzniknul někdy před sedmi měsíci, kdy jsem potřeboval, aby se několik stránek zobrazovalo v několika menu zároveň, ale ne tak, jak je standardně v Drupalu zvykem. Potřeboval jsem, aby každá položka v menu byla samostatná a aby měla vlastní drobečkovou navigaci vycházející ze struktury menu. (Trochu ironické je, že v původním projektu jsem nakonec tento modul vůbec nepoužil…)

Příklad

Jak se totiž zachová Drupal pokud máme odkaz na jeden uzel v několika nabídkách?

Dejme tomu, že máme následující strukturu nabídek:

Menu 1

  • Node A
  • Node B
    • Node X

Menu 2

  • Node C
  • Node D
    • Node X

V případě, že klikneme na Node X v Menu 2 se stane následující věc: Drupal při generování menu zjistí, že aktuální URL obsahuje jak Menu 1, tak Menu 2. Položky Node B a Node D tedy nechá rozbalené, položky Node X v obou menu označí jako aktivní. Drobečková navigace se vždy vygeneruje z primárního menu, popř. z menu jiného menu (na to už jsou ale zapotřebí moduly jako MenuTrails). V našem případě by se zobrazilo „Node B → Node X“, 99% uživatelů přitom ale očekává cestu „Node D → Node X“.

Jeden uzel = jedna URL

Za toto trochu podivné chování může zejména filosofie Drupalu „jeden uzel = jedna URL“. To je v 90% případů celkem užitečné a vítané. Jedním ze zásadních argumentů zastánců tohoto přístupu je SEO – weby dostávají od vyhledávacích robotů penalizaci za duplicitní obsah.

Původně jsem měl v úmyslu přilepovat k URL jen „query“ parametry – tzn. parametr ve stylu node/12?pid=10. Bohužel formuláře pro editaci menu s tím neumí korektně pracovat a dále to nemělo vůbec žádný vliv na označování aktivních položek a rozbalování menu. Takže tudy cesta moc nevedla. Buď bych musel patchovat modul menu z jádra Drupalu (a měl bych pramalou šanci, že můj patch bude uznán), nebo bych nechal nejprve nechal menu vygenerovat a až poté opravil výstup, či výstup zahodil a vygeneroval znovu – ale to by bylo zase plýtvání výkonem …

Tuhle stránku neindexuj!

Nakonec jsem někde narazil na informaci, že Google má nějaká doporučení pro webmastery ohledně zacházení s duplicitním obsahem. Aby nedocházelo k penalizaci ze strany Google Bota, stačí mírně upravit hlavičku takovéto stránky a to přidáním instrukce pro robota – tuhle stránku neindexuj! – tagu „META ROBOTS FOLLOW, NOINDEX“.

To mi otevřelo cestu k tomu, abych mohl různým URL přiřazovat stejný obsah.

Jak to tedy funguje?

„Duplicitní“ obsah nebo-li různá URL pro jeden uzel se vytváří na stránce Editace uzlu resp. Vytvořit uzel. Formulář jsem přidal hned pod formulář modulu menu, což má trochu napovědět, že nejdříve je vhodné umístit první odkaz pomocí modulu menu (stránka se zobrazí bez tagu robots noindex) a teprve další odkazy umisťovat pomocí modulu nodesymlinks.

URL prvního umístění pomocí modulu menu je klasická cesta „node/13“. Další URL pro uzly se generují tak, že se za cestu k uzlu přidá ještě parametr obsahující ID položky v systému menu – např. node/13/mid/234. To umožní přesně identifikovat, na který odkaz v menu uživatel kliknul. Rozbalování a označování aktivních cest ve všech nabídkách se pak již chová dle očekávání většiny uživatelů. Z právě jedné aktivní cesty, kterou menu systém bez problémů spočítá, se drobečková navigace určí velmi snadno.

Vývoj

Po zveřejnění modulu někdy v lednu 2009 jsem neměl moc čas se mu věnovat. Koncem května – když byl zrovna semestr v plném proudu – se mi ozval Gordon Luk. Měl pár nápadů jak modul vylepšit a potřeboval ho celkem urgentně pro svůj projekt, ale já neměl vůbec čas … Gordon se tedy rozhodnul udělat vlastní fork NodeMultiParents. Dohodli jsme se ale, že pokud se mi jeho změny budou líbit, zaintegruju je zpět… Tato chvíle nedávno nastala, takže nyní je na světě první (doufám, že stabilní) betaverze ;-)

Na co se hodí?

Modul NodeSymlinks se hodí spíše na menší weby – tam kde menu slouží nejen jako „navigace“, ale i jako hlavní nositel struktury webu. Může nahradit modul taxonomy (kategorie), pokud je zobrazení na více místech webu (a v menu) ten jediný důvod, proč ji používáte.

About the authornení
 

Poslat nový komentář

  • You can use Texy! to format and alter entered content.
  • Povolené HTML značky: <em> <strong> <b> <i> <br> <code> <ul> <ol> <li> <pre> <pre class="php">
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>. Beside the tag style "<foo>" it is also possible to use "[foo]".

Více informací o možnostech formátování

Hledat

Přihlášení

Bezpečnost Drupalu

Z hlediska bezpečnosti je Drupal na velmi vysoké úrovni, díky propracovanému systému hlášení, prověřování a řešení možných problémů.

Čtěte více a odebírejte bezpečnostní aktuality

Poslední komentáře

Kdo je online

Momentálně je online 0 uživatelů a 1 host.

Support

Psychologie - poradenství