Drupal: jak na hezké URL, automaticky a bez problémů s diakritikou

Pokud vytváříte článek v Drupalu, pak jistě toužíte po tom, aby jeho adresa byla pro lidského čtenáře i roboty z vyhledávačů co nejpěknější. WordPress má v tomto výhodu - dělá to vlastně bez jakéhokoli dotazování. Drupal to samozřejmě umí také, ale po svém. Jinými slovy pro uživatele stejně pohodlně, pro vývojáře s většími možnostmi nastavení a tím pádem i složitější přípravou. Jaké jsou tedy možnosti Drupalu pro tvorbu pěkných adres článků?

Jako první předpoklad doporučuji zapnout podporu Čistých URL v /admin/settings/clean-urls. Drupal si vyžádá provedení testu a pokud je v souboru .htaccess správně nastaveno pravidlo pro webový server Apache (většinou vyhovuje výchozí podoba souboru z instalace), pak se zpřístupní zapnutí čistých URL. V adresách budou pouze lomítka, znaky ?q= již neuvidíte.

Čistá URL jsou zpříjemněním, modul Path je však nezbytností pro případ, že nechcete, aby každý ze článků měl adresu ve tvaru /node/XX, kde XX je pořadové číslo jeho vložení. Po aktivaci standardního modulu Path vám Drupal umožní při zadávání každého z článků vytvořit jeho alternativní adresu, alias. Přehled těchto aliasů pak najdete v /admin/build/path.

Ruční vytváření alternativních adres pro články s sebou přináší nutnost pamatovat na dodržování pravidel pro URL adresy. Neměly by obsahovat diakritiku, mezery a různé jiné znaky. Musíte si v ideálním případě vystačit s písmeny anglické abecedy, číslicemi a pomlčkami. Ještě horší situace je pro kategorie a jména uživatelů. Pro ně musíte aliasy vytvářet zcela manuálně v administraci.

Jak z toho ven? Použijte některé z modulů, které vytváření alternativních cest usnadňují. Začátečníkům připomínám, že v alternativní adrese není celé URL, pouze jeho část následující za adresou webu a lomítkem, tedy např. navody, nikoli http://www.maxiorel.cz/navody.

URLify

Nejjednodušším modulem určeným pro automatickou tvorbu aliasů je URLify. Technicky funguje tak, že do stránky přidá JavaScriptový kód, který při vkládání článku sleduje změny v jeho nadpisu a podle toho upravuje zadání adresy. Automaticky odstraňuje diakritiku, mezery a nepovolené znaky, nahrazuje je znaky bez diakritiky nebo pomlčkami. Současná verze již podporuje i české znaky s diakritikou, nicméně za předpokladu, že na začátku nadpisu není velké písmeno (ŠČŘŽ...). V takovém případě je tento znak odebrán a v aliasu se vůbec neobjeví.

Modul URLify jsem dlouhou dobu používal zde na Maxiorlovi (samozřejmě s opravou zmíněného problému). Modul prakticky nezatěžuje načítání stránek a nastavený je během pár okamžiků. Jeho nedostatkem je však skutečnost, že jde jen o pomůcku pro vytváření adresy článků. Stále tu zůstává problém s kategoriemi a uživateli. Málokdo se spokojí s adresami typu /taxonomy/term/99 nebo /user/23.

Pathauto

Kompletní servis pro tvorbu alternativních adres obstarává modul Pathauto. Na rozdíl od předchozího je k dispozici i pro Drupal 6.x. Při zadávání článku neobtěžuje JavaScriptem, adresa je prostě automaticky vytvořena po uložení. Automatiku můžete nicméně vypnout a adresu zapsat ručně. Nejlepší však je, že Pathauto sám vytváří odpovídající aliasy pro názvy kategorií, skupiny ve fóru, nebo pro adresy uživatelských profilů.

Počáteční nastavení modulu je poněkud složitější, ale do budoucna se vyplatí - udělá maximum možného pro optimalizaci adres na webu pro vyhledávače. V obecném nastavení doporučuji ponechat výchozí hodnoty: spojovník jako oddělovač slov a náhradu mezer a změnu písmen na malá. Upravte si maximální délku vytvářené adresy a zvolte Leave the old alias intact. Při změně nadpisu článku se pak jeho adresa nezmění, případně ji upravíte ručně. Změny adres již existujících článků, na které vedou odkazy z jiných webů nebo vyhledávačů totiž způsobí, že se čtenář na článek nedostane.

Pozor na FCKeditor. Pokud jej máte nastaven, objeví se vám pro boxík String to remove a ze seznamu řetězců pro odstranění z adresy udělá odstavec textu. Výsledek bude ten, že Pathauto nebude v některých případech fungovat správně. Proto editor pro toto políčko standardním způsobem vypněte. Mimochodem, v tomto políčku jsou uvedena většinou anglická slova, která je zbytečné dávat do adresy. Pro češtinu si zde můžete doplnit jednopísmenné předložky a spojky.

Ve skupině Punctuation settings nastavujete, čím se mají nahradit různé znaky ve větách, jako je tečka, dvojtečka, středník, apostrof atd. Můžete je odstranit nebo nahradit oddělovačem.

Pathauto - nastavení cest

Další skupiny v nastavení modulu Pathauto jsou podobné. S využitím zástupných vzorů z modulu Token (je nutné jej instalovat spolu s Pathauto), nastavíte, jaký má být tvar automaticky vytvářeného názvu článku (berou se v potaz různé typy obsahu), příspěvku ve fóru, profilu uživatele nebo kategorie. Pokud si rozklepnete skupinu Replacement patterns, uvidíte, jaké vzory můžete použít.

Příklad: Pro každý z článků budete chtít automaticky vytvářet adresu, která zohlední typ článku (třeba návod, anketa, bleskovka, tiskovka...) a jeho kategorii. Výsledný alias by měl být například navod/pro-zacatecniky/jak-postavit-dum. Do políčka Default path pattern tedy zadejte [type-name]/[term]/[title]. Ostatní políčka pro jednotlivé typy článků nechejte prázdná - použije se výchozí nastavení. Podobně si můžete upravit aliasy ke kategoriím nebo uživatelským profilům.

Pathauto a diakritika

Nejčastěji řešeným problémem modulu Pathauto je diakritika. Aby totiž znaky v aliasu adresy byly nahrazeny variantou bez diakritiky a nevzniklo něco takového seznam-cz-m%C4%9B-posunuje-st%C3%A1le, pak musíte v Obecném nastavení modulu Pathauto zapnout funkci Transliterate prior to creating alias. Modul pak před vytvořením aliasu všechny znaky převede.

Běžně však funkci zapnout nelze. Vyžaduje totiž soubor, ve kterém budou uvedeny původní a převedené varianty jednotlivých znaků. Soubor s názvem i18n-ascii.txt je nutné umístit do složky modulu Pathauto. Teprve poté se vám volba Transliterate prior to creating alias zpřístupní pro aktivaci.

Zmíněný soubor si můžete sami vytvořit, nebo použít takový, který vytvořil někdo před vámi. V tom případě bude asi ideální ten, který na rozdíl od ukázky v balíčku s modulem obsahuje úplně všechny znaky z kódování UTF-8. Doporučuji vám jeho stažení přímo z Drupal.org, drupal.org/files/issues/i18n-ascii-full.txt.

Doporučuji vám věnovat instalaci modulu Pathauto několik minut, které si vyžádá. Jde o mnohem dokonalejší řešení než je URLify a pomůže vám k lepšímu vzhledu adres v rámci celého webu. Nasadit jej můžete i na již existující web. Dovede totiž vytvořit aliasy i pro stávající články, kategorie, fóra nebo uživatelské profily. Stačí jej o to požádat.

Líbí se vám článek? Dejte mu hlas:
Přidej odkaz na Bookmarky.cz

Re: Drupal: jak na hezké URL, automaticky a bez problémů s diakr

Pri pokusu o Blog - Bulk generate aliases for blogs that are not aliased

Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 75 bytes) in /www/modules/pathauto/pathauto.inc on line 152

---> shaimagal.org <---

Re: Drupal: jak na hezké URL, automaticky a bez problémů s diakr

Když vypnu "Transliterate prior to creating alias" tak problem prestane, pri zapnuti opet nastane...

nejaka rada?

---> shaimagal.org <---
Obrázek uživatele maxiorel

Re: Drupal: jak na hezké URL, automaticky a bez problémů s diakr

Jasně... To je problém toho, že je na serveru nastavena nedostatečná paměť pro běh PHP skriptů. Prováděný úkol je už prostě paměťově přilíš náročný a tak to zkolabuje. Řešením je domluva s poskytovatelem webhostingu.

 

Majitel Maxiorla. Nabízím mimo jiné placené poradenství pro Drupal. Jsem i na Twitteru.

Re: Drupal: jak na hezké URL, automaticky a bez problémů s diakr

ok a kolik pameti potrebuji? abych se ptal na konkkretni cislo...

---> shaimagal.org <---
Obrázek uživatele maxiorel

Re: Drupal: jak na hezké URL, automaticky a bez problémů s diakr

no podle té chyby se Drupalovi nedostalo dalších 75 bytů nad aktuální limit...

 

Majitel Maxiorla. Nabízím mimo jiné placené poradenství pro Drupal. Jsem i na Twitteru.

Re: Drupal: jak na hezké URL, automaticky a bez problémů s diakr

Nebo jinak, jsem si ten soubor upravil a ručne jsem pouzil na prepsani pouze ceske znaky ň, č, ď, atd
pri vytvoreni noveho clanku to funguje v pohode... ale ty stare jsou stale s hacky... presto jsem vsechny sekce "bulkoval", kde je chyba?

---> shaimagal.org <---
Obrázek uživatele maxiorel

Re: Drupal: jak na hezké URL, automaticky a bez problémů s diakr

staré jsou s diakritikou proto, protože už prostě existují. Proto se ta volba jmenuje Bulk generate aliases for nodes that are not aliased. Musely by se nejprve smazat aktuální aliasy ze seznamu.

 

Majitel Maxiorla. Nabízím mimo jiné placené poradenství pro Drupal. Jsem i na Twitteru.

Re: Drupal: jak na hezké URL, automaticky a bez problémů s diakr

co na to rekne google?

---> shaimagal.org <---
Obrázek uživatele maxiorel

Re: Drupal: jak na hezké URL, automaticky a bez problémů s diakr

totéž co ostatní vyhledávače. Bude mít zaindexovanou stránku s určitou adresou a pak zjistí, že stránka neexsituje. Takže ji vyřadí z indexu a časem ji nahradí za stránku s novou adresou bez diakritiky.

 

Majitel Maxiorla. Nabízím mimo jiné placené poradenství pro Drupal. Jsem i na Twitteru.

ciste URL

Tak pokial viem tento modul vie odstranit len to co je za index.php?q=, alebo sa myslim? Na uplne take ciste ako mate tu na webe je predsa potrebne i rewrite v lighttpd resp. apachovi.

s rewrite:
http://www.maxiorel.cz/bleskovky
bez rewrite:
http://www.maxiorel.cz//index.php?q=bleskovky

je to tak ci toto ide zariadit i v module pathauto ? Ak ano tak asi zbytocne pouzivalm rewrite :(.

Obrázek uživatele maxiorel

Re: ciste URL

Samozřejmě, že je potřeba rewrite. Ale o tom článek není. Pokud jste špatně pochopil jeho smysl, omlouvám se za nesrozumitelnost.

Majitel Maxiorla. Nabízím mimo jiné placené poradenství pro Drupal. Jsem i na Twitteru.

dobrý den, potřeboval bych

dobrý den,
potřeboval bych poradit v tomto tématu. Stále i po přejmenování souboru na i18n-ascii.txt a po jeho povoleni v nastaveni pathauto se mi v url objevuje diakritika

Obrázek uživatele maxiorel

Re: dobrý den, potřeboval bych

Zkuste poslat screenshot s nastavením.

Majitel Maxiorla. Nabízím mimo jiné placené poradenství pro Drupal. Jsem i na Twitteru.

Re: dobrý den, potřeboval bych

zde je. nenapadlo me jak je poslat,tak jsem jej ulozil na edisk
http://www.edisk.cz/stahni/97946/pathauto.bmp_960.4KB.html

Obrázek uživatele maxiorel

Re: dobrý den, potřeboval bych

Až teď jsem si pořádně přečetl vaše slova o "přejmenování souboru na...". Co jste vlastně přejmenoval? Potřebný soubor není součástí modulu, musíte si jej stáhnout. Řekl bych, že asi tady bude problém. Stáhněte si jej třeba odtud http://www.maxiorel.cz/sites/all/modules/pathauto/i18n-ascii.txt

Majitel Maxiorla. Nabízím mimo jiné placené poradenství pro Drupal. Jsem i na Twitteru.

Re: dobrý den, potřeboval bych

soucasti modulu je soubor i18n-ascii.example.txt, takze by u nej melo stacit jej prejmenovat na i18n-ascii.txt, jestli tomu spravne rozumim. a nebo pro ceske znaky tento soubor naplnit takhle:

; global transliteration
[default]
á = "a"
é = "e"
í = "i"
ó = "o"
...

je to tak spravne? ani pri pouziti vaseho souboru mi to stale nefunguje

Obrázek uživatele maxiorel

Re: dobrý den, potřeboval bych

Ten example je opravdu jen example, soubor, na který jsem Vám dal odkaz obsahuje všechny znaky národních abeced. Je taky mnohem větší. Je jednodušší jej použít místo úpravy původního vzorového souboru.

Pokud Vám to nejede ani teď, zřejmě je chyba někde ve webu.

Majitel Maxiorla. Nabízím mimo jiné placené poradenství pro Drupal. Jsem i na Twitteru.

transliteration

Nie je dobre/lepsie pouzit modul http://drupal.org/project/transliteration pre zmenu diakritiky, je pouzitelny i pre image, subory a pod, ved kopec ludi posiela subor na server ako "snímok číslo 1.jpg" a "podobne sialenosti"

Jak se zbavit

Zdravím, díky za zajímavý článek i následnou diskuzi...
Vše už jsem podle tohoto návodu rozjel, ale pořád narážím na trochu jiný problém - adresy se mi zobrazují ve tvaru http://neco.domena.cz/neco/xx - neporadil by mi prosím někdo, kde se to dá nastavit, aby se mi tam název subdomény znovu neopakoval a adresa byla ve tvaru http://neco.domena.cz/xx ? Díky moc, nikde to nemůžu najít...

Re: Jak se zbavit

nato uz treba rewrite v httpd

Volby prohlížení komentářů

Vyberte si, jak chcete zobrazovat komentáře a klikněte na „Uložit změny“.