Automatické generování friendly URL (přátelských adres)
Sobota, 30 Květen 2009 09:32
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.
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
A za něj vložíme tento kus kódu:
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:
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