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 https://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.
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.
Komentáře k článku
Když vypnu "Transliterate prior to creating alias" tak problem prestane, pri zapnuti opet nastane...
nejaka rada?
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.
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?
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.
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 :(.
Samozřejmě, že je potřeba rewrite. Ale o tom článek není. Pokud jste špatně pochopil jeho smysl, omlouvám se za nesrozumitelnost.
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
Zkuste poslat screenshot s nastavením.
zde je. nenapadlo me jak je poslat,tak jsem jej ulozil na edisk
http://www.edisk.cz/stahni/97946/pathauto.bmp_960.4KB.html
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
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
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.
Řeším ten stejný problém s diakritikou. Modul pathauto používam již dlouho a nikdy jsem s ním neměl problém. Nedávno jsem měnil poskytovatele hostingu a po jeho změně přestal modul pathauto fungovat, respektive, sice vytvoří url aliasy, ale s diakritikou. Nastavení by mělo být zcela v pořádku, protože ten samý web s pathauto bez problému funguje jak na původním hostingu, tak na locale, kde používám Wamp server. Vyzkoušel jsem již všechny verze modulu i různé verze souboru i18n-ascii.txt, ale bezúspěšně. Prohledal jsem už snad všechny fóra, ale také bez náznaku úspěchu, takže nevím.
Můj dotaz tedy zní, je třeba nějakých dodatečných nastavení na serveru poskytovatele, aby modul fungoval a správně odstranil diakritiku z url? V PHP jsem spíše začátečník.
Předem děkuji za jakoukoli radu.
Použijte Pathauto v aktuální dev verzi, doplňte modul Transliteration a zapněte v nastavení URL aliasů odtraňování diakritiky volbou Přeložit na správný formát. Pak to bude fungovat.
Pri pouziti Transliteration modulu (Pathauato, Drupal 7) mi to nefungovalo. Potom som zistil, ze je treba okrem zaskrtnutia "Transliterate prior to creating alias " najprv vymazat existujuce aliasy: /admin/config/search/path/delete_bulk a az potom dat bulk update: /admin/config/search/path/update_bulk
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"
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...
nato uz treba rewrite v httpd
Díky za článek, hodně mi toto pomohlo.
Lukáš
Pán Polzer, máme na webu zónu pre prihlásených kde si môžu stiahnut subori. Avsak, ked je niekto sikovny, tak si adresu opise, lebo ju napr. Firefox zobrazi dolu v rohu. A tak moze sirit obsah ktorý je iba pre klientov.
Viete o nejakom module, alebo o niecom co by pregenerovalo url adresy? Napr ako to ma linkedin http://lnkd.in/d25ag67
dakujem
Ale vždyť to je jednoduché a nepotřebuje to žádný modul. Nastavte si složku pro privátní soubory a udělejte u obsahu políčko, přes které se budou citlivé soubory nahrávat. Pak si je nebude moci stahovat kdokoli, ale jen ti, kdo nastavíte. Viz https://drupal.org/documentation/modules/file a diskuze pod tím.
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