Jump to content

české znaky v URL


mklapal

Recommended Posts

js/admin.js od asi 22 řádku nakopíruj (někde tu je postup rozsáhlejší,ale tohle by žárovku mělo vyřešit)

  str= str.replace(/[\u0161]/g,'s');
 str= str.replace(/[\u0159]/g,'r');
 str= str.replace(/[\u017E]/g,'z');
 str= str.replace(/[\u0148]/g,'n');
 str= str.replace(/[\u010F]/g,'d');
 str= str.replace(/[\u0165]/g,'t');

Link to comment
Share on other sites

vyřešeno, nebyly potřeba žádné úpravy, všechno funguje v pořádku

problém byl že jsem ty produkty importoval z CSV a proto se ty adresy nevytvořili správně

napsal jsem si skript který to opraví po importu výrobků (něco ve stylu "select name from ps_product_lang" a všechny name prohnal přes funkci seo_url(...) a updatoval do DB u daného ID

Link to comment
Share on other sites

  • 3 months later...

Mne to stale nefunguje, vse mam upravene pro vkladani produktu v cestine, ale import jaksi nechce fungovat spravne.
Uz su z toho zoufaly, protoze jinak by import byl super, takto je mi na nic.
Kdyz se podivam na zdrojak nebo vlozim produkt rucne, tak je cestina naprosto bez problemu, jak to udelam pres import, tak se URL udela jak bylo napsane vyse vynechaji se znaky s diakritikou.

Link to comment
Share on other sites

Celá funkce by měla vypadat takto:

function str2url(str,encoding,ucfirst)

{

   str = str.toUpperCase();

   str = str.toLowerCase();



   str = str.replace(/[\u0105\u0104\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5]/g,'a');

   str = str.replace(/[\u00E7\u0107\u0106]/g,'c');

   str = str.replace(/[\u00E8\u00E9\u00EA\u00EB\u0119\u0118\u011B]/g,'e');

   str = str.replace(/[\u00EC\u00ED\u00EE\u00EF]/g,'i');

   str = str.replace(/[\u0142\u0141]/g,'l');

   str = str.replace(/[\u00F2\u00F3\u00F4\u00F5\u00F6\u00F8\u00D3]/g,'o');

   str = str.replace(/[\u015B\u015A]/g,'s');

   str = str.replace(/[\u00F9\u00FA\u00FB\u00FC\u016F]/g,'u');

   str = str.replace(/[\u00FD\u00FF]/g,'y');

   str = str.replace(/[\u017C\u017A\u017B\u0179]/g,'z');

   str = str.replace(/[\u00F1]/g,'n');

   str = str.replace(/[\u0153]/g,'oe');

   str = str.replace(/[\u00E6]/g,'ae');

   str = str.replace(/[\u00DF]/g,'ss');

   str= str.replace(/[\u0161]/g,'s');
    str= str.replace(/[\u0159]/g,'r');
     str= str.replace(/[\u017E]/g,'z');
     str= str.replace(/[\u0148]/g,'n');
     str= str.replace(/[\u010F]/g,'d');
     str= str.replace(/[\u0165]/g,'t');
   str= str.replace(/[\u010D]/g,'c');

   str = str.replace(/[^a-z0-9\s\'\:\/\[\]-]/g,'');

   str = str.replace(/[\s\'\:\/\[\]-]+/g,' ');

   str = str.replace(/[ ]/g,'-');



   if (ucfirst == 1) {

       c = str.charAt(0);

       str = c.toUpperCase()+str.slice(1);

   }



   return str;

}



Pokud vám tam chybí nějakej českej znak, dejte vědět, zdarma doplním.

Link to comment
Share on other sites

Sem retardovanej a negramotnej, ale proste mi to nejde. á, ú v pořádku ale takový č ani smykem.. jo a mam 1.2.5 prestu kdyby se nekdo ptal..


V klidu, jsme dva :o))).
Naprosto zadnou diakritiku mi to neda do URL, vubec nic.
Link to comment
Share on other sites

Burani, tenhle script pusťte na vašem serveru, vyplňte si tam loginy apod...

<?php 

function friendly_url($nadpis) {
   $url = $nadpis;
   $url = strip_tags(html_entity_decode($url));
   $url = iconv("UTF-8","windows-1250"."//TRANSLIT",$url);
   $noalpha = "\xc1\xc9\xcd\xd3\xda\xdd\xe1\xe9\xed\xf3\xfa\xfd\xc2\xca\xce\xd4\xdb\xe2\xea\xee\xf4\xfb\xc0\xc8\xcc\xd2\xd9\xe0\xe8\xec\xf2\xf9\xc4\xcb\xcf\xd6\xdc\xe4\xeb\xef\xf6\xfc\xc3\xe3\xd5\xf5\xc5\xe5\xd1\xf1\xc7\xe7\xba\xaa\x8e\x9e\x9d\x8d\xd8\xf8\x8a\x9a";
   $alpha = 'AEIOUYaeiouyAEIOUaeiouACENUrcenuAEIOUaedouAaOoLlNnCcsSZztTRrSs';
   $url = strtr($url, $noalpha, $alpha);
   $url = strtolower($url);
   $url = preg_replace('~[^a-z0-9_]+~', '-', $url);
   $url = trim($url, "-");
   $url = preg_replace('~[^-a-z0-9_]+~', '', $url); 
   echo $url."\n";
   return $url;
}


//projde všechny výrobky v db
@$spojeni = MySQL_Connect('SERVER' ,'USER', 'PASSWORD');
@MySQL_Select_DB('DATABASE');
if (!$spojeni):
 echo "MySQL fatal error (no database)";
endif;
mysql_query("SET CHARACTER SET utf8");

$sql = "select id_product, name, id_lang from ps_product_lang";
$query = mysql_query($sql);
$num = mysql_num_rows($query);
while ($row=mysql_fetch_assoc($query)):
 $url = friendly_url($row['name']);
 $sql2 = "update ps_product_lang set link_rewrite = '$url' where id_product = {$row['id_product']} and id_lang = {$row['id_lang']}";
 mysql_query($sql2) or die("SQL dotaz nešlo provést");
endwhile;
echo "OK";

?>

Link to comment
Share on other sites

Mně to maká úplně normálně a taky mám verzi 1.2.5.0. Je potřeba stránku, kde zadáváš produkt reoladnout, pokud jsi upravival admin.js a možná by taky pomohlo vymazání obsahu na /html/tools/smarty/compile/.

Jinak na http://www.texaswebdevelopers.com/examples/xmlentities/xml_entities.asp je konvertor, kam zadáš českej znak a po stisknutí convert dostaneš jeho kód. Output format musíš zadat Mixed of decimal/hexadecimal. Takže pokud ti to neumí č, tak konvertor ti vrátí něco jako

č

. Od zadu vezmeš 2. až 4. znak t.j. 10d , přidáš před něj 0 a výsledek je to co musíš přidat pro přepis z č na c 010D. Pak ten řádek vypadá takto:

str= str.replace(/[\u010D]/g,'c');



Jestli v tom nemáš jiný svoje úpravy, zkus můj admin.js

admin.js

Link to comment
Share on other sites

Mně to maká úplně normálně a taky mám verzi 1.2.5.0. Je potřeba stránku, kde zadáváš produkt reoladnout, pokud jsi upravival admin.js a možná by taky pomohlo vymazání obsahu na /html/tools/smarty/compile/.

Jinak na http://www.texaswebdevelopers.com/examples/xmlentities/xml_entities.asp je konvertor, kam zadáš českej znak a po stisknutí convert dostaneš jeho kód. Output format musíš zadat Mixed of decimal/hexadecimal. Takže pokud ti to neumí č, tak konvertor ti vrátí něco jako
č

. Od zadu vezmeš 2. až 4. znak t.j. 10d , přidáš před něj 0 a výsledek je to co musíš přidat pro přepis z č na c 010D. Pak ten řádek vypadá takto:

str= str.replace(/[\u010D]/g,'c');



Jestli v tom nemáš jiný svoje úpravy, zkus můj admin.js



Ale nam se jednalo o import, ne zadavani produktu, tam to slape dobre.
Link to comment
Share on other sites

Burani, tenhle script pusťte na vašem serveru, vyplňte si tam loginy apod...

<?php 

function friendly_url($nadpis) {
   $url = $nadpis;
   $url = strip_tags(html_entity_decode($url));
   $url = iconv("UTF-8","windows-1250"."//TRANSLIT",$url);
   $noalpha = "\xc1\xc9\xcd\xd3\xda\xdd\xe1\xe9\xed\xf3\xfa\xfd\xc2\xca\xce\xd4\xdb\xe2\xea\xee\xf4\xfb\xc0\xc8\xcc\xd2\xd9\xe0\xe8\xec\xf2\xf9\xc4\xcb\xcf\xd6\xdc\xe4\xeb\xef\xf6\xfc\xc3\xe3\xd5\xf5\xc5\xe5\xd1\xf1\xc7\xe7\xba\xaa\x8e\x9e\x9d\x8d\xd8\xf8\x8a\x9a";
   $alpha = 'AEIOUYaeiouyAEIOUaeiouACENUrcenuAEIOUaedouAaOoLlNnCcsSZztTRrSs';
   $url = strtr($url, $noalpha, $alpha);
   $url = strtolower($url);
   $url = preg_replace('~[^a-z0-9_]+~', '-', $url);
   $url = trim($url, "-");
   $url = preg_replace('~[^-a-z0-9_]+~', '', $url); 
   echo $url."\n";
   return $url;
}


//projde všechny výrobky v db
@$spojeni = MySQL_Connect('SERVER' ,'USER', 'PASSWORD');
@MySQL_Select_DB('DATABASE');
if (!$spojeni):
 echo "MySQL fatal error (no database)";
endif;
mysql_query("SET CHARACTER SET utf8");

$sql = "select id_product, name, id_lang from ps_product_lang";
$query = mysql_query($sql);
$num = mysql_num_rows($query);
while ($row=mysql_fetch_assoc($query)):
 $url = friendly_url($row['name']);
 $sql2 = "update ps_product_lang set link_rewrite = '$url' where id_product = {$row['id_product']} and id_lang = {$row['id_lang']}";
 mysql_query($sql2) or die("SQL dotaz nešlo provést");
endwhile;
echo "OK";

?>



Super diky, tohle slape, akorad skoda, ze to nejde primo osetrit v kodu.
Link to comment
Share on other sites

Burani, tenhle script pusťte na vašem serveru, vyplňte si tam loginy apod...

<?php 

function friendly_url($nadpis) {
   $url = $nadpis;
   $url = strip_tags(html_entity_decode($url));
   $url = iconv("UTF-8","windows-1250"."//TRANSLIT",$url);
   $noalpha = "\xc1\xc9\xcd\xd3\xda\xdd\xe1\xe9\xed\xf3\xfa\xfd\xc2\xca\xce\xd4\xdb\xe2\xea\xee\xf4\xfb\xc0\xc8\xcc\xd2\xd9\xe0\xe8\xec\xf2\xf9\xc4\xcb\xcf\xd6\xdc\xe4\xeb\xef\xf6\xfc\xc3\xe3\xd5\xf5\xc5\xe5\xd1\xf1\xc7\xe7\xba\xaa\x8e\x9e\x9d\x8d\xd8\xf8\x8a\x9a";
   $alpha = 'AEIOUYaeiouyAEIOUaeiouACENUrcenuAEIOUaedouAaOoLlNnCcsSZztTRrSs';
   $url = strtr($url, $noalpha, $alpha);
   $url = strtolower($url);
   $url = preg_replace('~[^a-z0-9_]+~', '-', $url);
   $url = trim($url, "-");
   $url = preg_replace('~[^-a-z0-9_]+~', '', $url); 
   echo $url."\n";
   return $url;
}


//projde všechny výrobky v db
@$spojeni = MySQL_Connect('SERVER' ,'USER', 'PASSWORD');
@MySQL_Select_DB('DATABASE');
if (!$spojeni):
 echo "MySQL fatal error (no database)";
endif;
mysql_query("SET CHARACTER SET utf8");

$sql = "select id_product, name, id_lang from ps_product_lang";
$query = mysql_query($sql);
$num = mysql_num_rows($query);
while ($row=mysql_fetch_assoc($query)):
 $url = friendly_url($row['name']);
 $sql2 = "update ps_product_lang set link_rewrite = '$url' where id_product = {$row['id_product']} and id_lang = {$row['id_lang']}";
 mysql_query($sql2) or die("SQL dotaz nešlo provést");
endwhile;
echo "OK";

?>



Sice na lidi stekas ale i tak mas dobry srdce :o)
Link to comment
Share on other sites

  • 1 year later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...