Drupal: jak na hezké URL, automaticky a bez problémů s diakritikou
27. 4. 2008, Jan Polzer
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.








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
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?
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...
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?
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?
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 :(.
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
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
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
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