Prestashop 1.5 a problém s diakritikou v URL

Vložil: Led 11 2013 by admin

Předchozí verze systému Prestashop mají generování URL řešeno správně. To znamená vezme se nadpis produktu, ze kterého se odstraní diakritika a mezero oddělí pomlčkou.

Příklad správného zobrazení :

Název: Přidání štítků k produktu

Hezké URL: pridani-stitku-k-produktu

Nedávno jsem prováděl zákaznici upgrade systému na nejnovější verzi  1.5. Tohoto problému jsem si nevšiml do té doby, než mě na něj neupozornila ona sama, za což bych ji chtěl poděkovat.

Příklad chybného zobrazení hezké URL:

Název: Práce s čokoládou pro začátečníky

Hezké URL: práce-s-čokoládou-pro-začátečníky, po překopírování URL se zobrazí nesmyslný tvar :

pr%C3%A1ce-s-%C4%8Dokol%C3%A1dou-pro-za%C4%8D%C3%A1te%C4%8Dn%C3%ADky

Jde o to, že nejsou ve zdrojovém souboru vloženy pravidla pro přepisování české diakritiky.

Jak na to?

Tuto chybu opravíme v souboru /js/admin.js . Otevřeme si tento soubor pro editaci a přejdeme na řádek 37-40, zde najdeme funkci str2url. Uvidíte tam tyto řádky:

str = str.replace(/[^a-z0-9\s\'\:\/\[\]-]/g,'');
str = str.replace(/[\u0028\u0029\u0021\u003F\u002E\u0026\u005E\u007E\u002B\u002A\u002F\u003A\u003B\u003C\u003D\u003E]/g,'');
str = str.replace(/[\s\'\:\/\[\]-]+/g,' ');

Tyto řádky odstraníme a místo nich vložíme doplněný kód o tyto řádky


str = str.replace(/[\u0105\u0104\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5]/g,'a');
str = str.replace(/[\u00E7\u010D\u0107\u0106]/g,'c');
str = str.replace(/[\u010F]/g,'d');
str = str.replace(/[\u00E8\u00E9\u00EA\u00EB\u011B\u0119\u0118]/g,'e');
str = str.replace(/[\u00EC\u00ED\u00EE\u00EF]/g,'i');
str = str.replace(/[\u0142\u0141]/g,'l');
str = str.replace(/[\u00F1\u0148]/g,'n');
str = str.replace(/[\u00F2\u00F3\u00F4\u00F5\u00F6\u00F8\u00D3]/g,'o');
str = str.replace(/[\u0159]/g,'r');
str = str.replace(/[\u015B\u015A\u0161]/g,'s');
str = str.replace(/[\u00DF]/g,'ss');
str = str.replace(/[\u0165]/g,'t');
str = str.replace(/[\u00F9\u00FA\u00FB\u00FC\u016F]/g,'u');
str = str.replace(/[\u00FD\u00FF]/g,'y');
str = str.replace(/[\u017C\u017A\u017B\u0179\u017E]/g,'z');
Filed under: Návody, rady a manuály, Novinky, Úpravy

Vložit komentář

*

*

Kontrolní text
*


9 × čtyři =