Články

Odkazy

Spřátelené weby

JoomlaDev.eu - Vše o vývoji CMS Joomla

Redakční systém WordPress - Nejlepší redakční systém zdarma - WordPress

Anketa

O jakém RS by jste chtěli více článků
 
Navigace: Úvodní strana Prestashop Články Automatické generování friendly URL (přátelských adres)

Automatické generování friendly URL (přátelských adres)

PDF Tisk Email
Sobota, 30 Květen 2009 09:32

prestashop-přátelské urlV 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 

  1. $languages = Language::getLanguages();
 

A za něj vložíme tento kus kódu:

 

  1. $titulek=$_POST['name_3'];
  2. $friendlyurl=str_replace(' ' ,'-',$titulek);
  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");
  4. $friendlyurl=strtr($friendlyurl, $tbl)
  5. $_POST['link_rewrite_3']=$friendlyurl;
 

 

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:

  1. if(!isset($_POST['link_rewrite_3'])||$_POST['link_rewrite_3']=='') {
  2.  
  3.     předchozí kus kódu...
  4.  
  5. }
 

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.

 
Komentáře (10)
url
10 Středa, 30 Červen 2010 17:14
Kalby
A co konkretne potrebujete?
hezke URL adresy
9 Středa, 30 Červen 2010 08:20
Michaela
mohl by mi někodo pomoci s hezkyma url adresama?
xml zbozi
8 Neděle, 27 Prosinec 2009 21:51
Luky
Ahoj,
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.
Generování XML
7 Pátek, 11 Prosinec 2009 08:41
Administrator
ano je tady na webu:

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
xml zbozi
6 Čtvrtek, 10 Prosinec 2009 16:48
Luky
Děkuji za rychlou reakci. Není tady na stránkách náhodou někde generování xml pro vyhledávání ve zbozi.cz? Všude jsou návody, kdy se xml generuje aktuálně po kliknutí na odkaz, ale nikde jsem nenašel možnost vygenerovat xml aby se soubor uložil na hosting.
na mala pismena
5 Pondělí, 07 Prosinec 2009 19:19
Administrator
Ano lze to,

stačí funkci upravit takto - 5. řádek:

$_POST['link_rewrite_3']=strtolower($friendlyurl);
malá a velká písmena
4 Pondělí, 07 Prosinec 2009 14:01
Luky
Ahoj, lze nastavit, aby v url velká písmena byla převedena na malá?
admin.js funkční řešení pro AJAX
3 Středa, 04 Listopad 2009 09:24
qwiff
Ceske znaky
2 Úterý, 23 Červen 2009 14:01
Administrator
Ahoj bud mas moznost pouzit reseni uvedene v tomto clanku, tim obejdes javascriptovou konverzi ceskych znaku a budes ji provadet pres php, s tim ze vysledek se ti zobrazi az po ulozeni produktu, nebo bys mohl zkusit prepsat funkci str2url na reseni publikovane zde:

https://www.linuxsoft.cz/script_detail.php?id_script=335
admin.js a "ajaxové" generování "ČESKÝCH" znaků?
1 Úterý, 23 Červen 2009 13:37
prom
Je na to nějaké řešení? http://www.prestashop.com/forums/viewthread/19920/#97819

Přidej Váš komentář

BoldItalicUnderlineStrikethroughSubscriptSuperscriptEmailImageHyperlinkOrdered listUnordered listQuoteCodeHyperlink to the Article by its id
Vaše jméno:
Předmět:
Komentář:

Ochrana osobních údajů, Mapa stránek,design a kód Klasdesign, Redakční systémy, rs@redakcni-systemy.com 2009
Wifi router a antény , Moje IP, Studuj FEL, Barevné kontaktní čočky