|
V dnešním článku si ukážeme jak zapnout generování přátelských adres v Prestashopu a jak upravit zdrojový kód tak, aby se přátelské adresy vytvářely automaticky z názvu produktů, které ukládáme. Jak jistě víte, při zadávání nového produktu musíme zdouhavě u staších verzí Prestashop vyplňovat nejdříve název produktu a poté znovu vyplnit jak bude vypadat friendly URL pro tento produkt. My si ale pomocí malé úpravy zdrojových souborů ulehčíme práci.
Nejdříve se ale podíváme jak vlastně přátelské adresy zapnout. Najedeme do administračního rozhraní a zvolím Nastavení, zde vybereme položku Přátelské URL (Friendly URL) a zvolíme Ano a nastavení uložíme. Nyní musíme přejmenovat soubor htaccess. Takze najedeme napriklad pomocí Total commanderu na svoje FTP a najdeme v kořenovém adresáři soubor htaccess.txt. Zvolíme přejmenovat a nahradíme ho názvem .htaccess. Nyní obnovíme stránky a měly by se odkazy zobrazovat ve formátu přátelských adres. Jak na automatické generování přátelských adres Nyní si ukážeme jak v administračním rozhraní generovat automaticky přátelské URL. Budeme to dělat jednoduše. Při ukládání nového produktu si vezmeme text v kolonce název, odstraníme všechny mezery a české znaky a uložíme tento řetězec do databáze do sloupce pro přátelské URL. Nejprve si tedy otevřeme soubor admin/tabs/AdminProducts.php . Za admin si doplňte název adresáře v kterém máte administrační rozhraní. Nyní najdeme funkci submitAddproduct na řádku 595 (podle verze se může číslo řádku lišit) a vyhledáme tento řádek ve funkci $languages = Language::getLanguages();
%24languages%20%3D%20Language%3A%3AgetLanguages%28%29%3B A za něj vložíme tento kus kódu: $titulek=$_POST['name_3']; $tbl = array("\xc3\xa1"=> "a", "\xc3\xa4"=> "a", "\xc4\x8d"=> "c", "\xc4\x8f"=> "d", "\xc3\xa9"=> "e", "\xc4\x9b"=> "e", "\xc3\xad"=> "i", "\xc4\xbe"=> "l", "\xc4\xba"=> "l", "\xc5\x88"=> "n", "\xc3\xb3"=> "o", "\xc3\xb6"=> "o", "\xc5\x91"=> "o", "\xc3\xb4"=> "o", "\xc5\x99"=> "r", "\xc5\x95"=> "r", "\xc5\xa1"=> "s", "\xc5\xa5"=> "t", "\xc3\xba"=> "u", "\xc5\xaf"=> "u", "\xc3\xbc"=> "u", "\xc5\xb1"=> "u", "\xc3\xbd"=> "y", "\xc5\xbe"=> "z", "\xc3\x81"=> "A", "\xc3\x84"=> "A", "\xc4\x8c"=> "C", "\xc4\x8e"=> "D", "\xc3\x89"=> "E", "\xc4\x9a"=> "E", "\xc3\x8d"=> "I", "\xc4\xbd"=> "L", "\xc4\xb9"=> "L", "\xc5\x87"=> "N", "\xc3\x93"=> "O", "\xc3\x96"=> "O", "\xc5\x90"=> "O", "\xc3\x94"=> "O", "\xc5\x98"=> "R", "\xc5\x94"=> "R", "\xc5\xa0"=> "S", "\xc5\xa4"=> "T", "\xc3\x9a"=> "U", "\xc5\xae"=> "U", "\xc3\x9c"=> "U", "\xc5\xb0"=> "U", "\xc3\x9d"=> "Y", "\xc5\xbd"=> "Z"); $friendlyurl= strtr($friendlyurl, $tbl); $_POST['link_rewrite_3']=$friendlyurl;
%24titulek%3D%24_POST%5B%27name_3%27%5D%3B%0A%24friendlyurl%3Dstr_replace%28%27%20%27%20%2C%27-%27%2C%24titulek%29%3B%0A%24tbl%20%3D%20array%28%22%5Cxc3%5Cxa1%22%3D%3E%22a%22%2C%22%5Cxc3%5Cxa4%22%3D%3E%22a%22%2C%22%5Cxc4%5Cx8d%22%3D%3E%22c%22%2C%22%5Cxc4%5Cx8f%22%3D%3E%22d%22%2C%22%5Cxc3%5Cxa9%22%3D%3E%22e%22%2C%22%5Cxc4%5Cx9b%22%3D%3E%22e%22%2C%22%5Cxc3%5Cxad%22%3D%3E%22i%22%2C%22%5Cxc4%5Cxbe%22%3D%3E%22l%22%2C%22%5Cxc4%5Cxba%22%3D%3E%22l%22%2C%22%5Cxc5%5Cx88%22%3D%3E%22n%22%2C%22%5Cxc3%5Cxb3%22%3D%3E%22o%22%2C%22%5Cxc3%5Cxb6%22%3D%3E%22o%22%2C%22%5Cxc5%5Cx91%22%3D%3E%22o%22%2C%22%5Cxc3%5Cxb4%22%3D%3E%22o%22%2C%22%5Cxc5%5Cx99%22%3D%3E%22r%22%2C%22%5Cxc5%5Cx95%22%3D%3E%22r%22%2C%22%5Cxc5%5Cxa1%22%3D%3E%22s%22%2C%22%5Cxc5%5Cxa5%22%3D%3E%22t%22%2C%22%5Cxc3%5Cxba%22%3D%3E%22u%22%2C%22%5Cxc5%5Cxaf%22%3D%3E%22u%22%2C%22%5Cxc3%5Cxbc%22%3D%3E%22u%22%2C%22%5Cxc5%5Cxb1%22%3D%3E%22u%22%2C%22%5Cxc3%5Cxbd%22%3D%3E%22y%22%2C%22%5Cxc5%5Cxbe%22%3D%3E%22z%22%2C%22%5Cxc3%5Cx81%22%3D%3E%22A%22%2C%22%5Cxc3%5Cx84%22%3D%3E%22A%22%2C%22%5Cxc4%5Cx8c%22%3D%3E%22C%22%2C%22%5Cxc4%5Cx8e%22%3D%3E%22D%22%2C%22%5Cxc3%5Cx89%22%3D%3E%22E%22%2C%22%5Cxc4%5Cx9a%22%3D%3E%22E%22%2C%22%5Cxc3%5Cx8d%22%3D%3E%22I%22%2C%22%5Cxc4%5Cxbd%22%3D%3E%22L%22%2C%22%5Cxc4%5Cxb9%22%3D%3E%22L%22%2C%22%5Cxc5%5Cx87%22%3D%3E%22N%22%2C%22%5Cxc3%5Cx93%22%3D%3E%22O%22%2C%22%5Cxc3%5Cx96%22%3D%3E%22O%22%2C%22%5Cxc5%5Cx90%22%3D%3E%22O%22%2C%22%5Cxc3%5Cx94%22%3D%3E%22O%22%2C%22%5Cxc5%5Cx98%22%3D%3E%22R%22%2C%22%5Cxc5%5Cx94%22%3D%3E%22R%22%2C%22%5Cxc5%5Cxa0%22%3D%3E%22S%22%2C%22%5Cxc5%5Cxa4%22%3D%3E%22T%22%2C%22%5Cxc3%5Cx9a%22%3D%3E%22U%22%2C%22%5Cxc5%5Cxae%22%3D%3E%22U%22%2C%22%5Cxc3%5Cx9c%22%3D%3E%22U%22%2C%22%5Cxc5%5Cxb0%22%3D%3E%22U%22%2C%22%5Cxc3%5Cx9d%22%3D%3E%22Y%22%2C%22%5Cxc5%5Cxbd%22%3D%3E%22Z%22%29%3B%0A%24friendlyurl%3Dstrtr%28%24friendlyurl%2C%20%24tbl%29%3B%C2%A0%20%0A%24_POST%5B%27link_rewrite_3%27%5D%3D%24friendlyurl%3B Kde name_3 je název inputu ve kterém udáváme Název produktu a link_rewrite_3 je název inputu pro friendly URL (opět se mohou podle verze lišit, názvy snadno zjistíme zobrazením zdrojového kódu stránky). Tímto by jsme měli zajistit, že z názvu produktu například Dámské punčochy 23 se nám do databáze pod přátelskou url uloží řetězec Damske-puncochy-23. Funkce by se dala ještě upravit tak, že pokud by se přátelská URL zadala ručně, nebral by se název produktu v potaz a uložila by se ručně zadaná hodnota. To se dá zajistit pomocí funkce isset: if(! isset($_POST['link_rewrite_3'])|| $_POST['link_rewrite_3']== '') { předchozí kus kódu... }
if%28%21isset%28%24_POST%5B%27link_rewrite_3%27%5D%29%7C%7C%24_POST%5B%27link_rewrite_3%27%5D%3D%3D%27%27%29%20%7B%0A%0A%C2%A0%C2%A0%C2%A0%20p%C5%99edchoz%C3%AD%20kus%20k%C3%B3du...%0A%0A%7D Nakonec ještě dodám, že tento postup platí pro kódování UTF-8, pro jiné kódování se musí volit jiný typ převodu českých znaků. Tento postup byl testován na Prestashop verze 1.1.0.5. V případě dotazů se ptejte v komentářích nebo na fóru. |
Pokud budeš mít v shopu např. 5000 produktů, můžeš pěkně zatížit server a nebo překročit povolené hodnoty databáze. Takže to řešení je super, ale jen pro menší počet produktů.
Nemám to ověřené, ale u některých opensource shopů k tomu dochází a proto jsou většinou generátory xml udělané tak, že si vygeneruješ xml někam do složky na serveru s názvem např. zbozi.xml a robot si načítá již uložený xml.
http://www.redakcni-systemy.com/index.php/prestashop/clanky/42-vytvoreni-xml-souboru-pro-zbozi-cz
Ale moc nechápu tvůj dotaz. Pri tomto návodu si na FTP uložís soubor xml.php a pokaždé když zadás jeho adresu zobrazí se ti ten XML ktery potrebujes. Zbozi.cz pak púredas jenom jeho adresu ve formatu : http://www.tvojedomena.cz/xml.php
stačí funkci upravit takto - 5. řádek:
https://www.linuxsoft.cz/script_detail.php?id_script=335