haus Posted March 23, 2014 Share Posted March 23, 2014 (edited) Čau lidi, jsem tak trochu začátečník s PS a potřeboval bych poradit jak na url rewrite. Možná to pro vás bude banalita, ale já na to nějak nemůžu přijít. Mám vytvořený modul s novinkami, který mi vypisuje názvy novinek do left_column hooku a obsahuje linky na ně. Po kliknutí na link bych potřeboval, aby se mi zobrazila nová stránka s tou aktuální novinkou a aby měla url v určitém formátu, jako třeba 'prestashop.cz/5-nova-novinka'. Jenže se mi vždycky napíše 404 stránka nenalezena a nevím jak na to. V left column mám taky link na všechny novinky a když na to kliknu, tak mi to sice vypíše všechny novinky ale to je celý html kód, co se vypíše, takže v tomto případě i nějak špatně vypisuju tplko, protože se nenačte zbytek stránky, ale jen to moje tpl. Ještě dodám, že je to modul na verzi 1.6+ Víte někdo jak alespoň na něco z toho, co jsem napsal? Dík moc za případnou pomoc. Edited March 23, 2014 by haus (see edit history) Link to comment Share on other sites More sharing options...
berka.pavel Posted March 24, 2014 Share Posted March 24, 2014 url rewrite musí podporovat konkrétně ten onen modul a nebo musíš ručně přidat do htaccess. k tomu druhému... bez odkazu na kontrétní web se těžko představuje. máš zapnutý log, abys odchytil případné errory? Link to comment Share on other sites More sharing options...
JAKCRABBIT Posted March 30, 2014 Share Posted March 30, 2014 Zkus zapnout/vypnout apache multiview. Link to comment Share on other sites More sharing options...
inweb Posted March 30, 2014 Share Posted March 30, 2014 Nejprve je potřeba aby modul dokázal otevřít onu stránku pomocí dynamické URL jako např. novinky.php?news_id=X. Až toto zabudujete do svého modulu, napište jaký formát dynamické URL jste zvolil a jaký formát přepsané URL k tomu chcete. Napíšu Vám pravidla pro mod_rewrite. Link to comment Share on other sites More sharing options...
haus Posted March 31, 2014 Author Share Posted March 31, 2014 (edited) mám vytvořený pravidlo pro url_rewrite: private $_rewriteRules = array( 'news-detail' => array( 'title' => 'News detail', 'page' => 'modules/blocknews/news-detail.php?id=$1&name=$2&', 'rewrite' => 'aktuality/detail/([0-9]*)_([a-zA-Z0-9-]*)', ), 'news-list' => array( 'title' => 'List news', 'page' => 'modules/blocknews/news-list.php?number=$1&', 'rewrite' => 'aktuality/list/([0-9]*)', ), 'news-all-list' => array( 'title' => 'All news', 'page' => 'modules/blocknews/news-list.php', 'rewrite' => 'aktuality/list', ), ); který pak ukládám do DB v metodě installUrlRewrite foreach($this->_rewriteRules as $rewriteRule) { $args = array( 'page' => $rewriteRule['page'] ); Db::getInstance()->autoExecuteWithNullValues(_DB_PREFIX_.'meta', $args, 'INSERT'); $id_meta = Db::getInstance()->Insert_ID(); $langs = Language::getLanguages(); foreach ($langs as $lang) { $args = array( 'id_meta' => $id_meta, 'id_lang' => $lang['id_lang'], 'title' => $rewriteRule['title'], 'url_rewrite' => $rewriteRule['rewrite'], ); Db::getInstance()->autoExecuteWithNullValues(_DB_PREFIX_.'meta_lang', $args, 'INSERT'); } } V metodě hookLeftColumn pak vypisuji informace o novinkách: foreach($news as $key=>$value) { $news[$key]['link'] = $link->getPageLink('') . 'aktuality/detail/'.$value['id_news'].'_'.Tools::link_rewrite($value['title']); } $smarty->assign(array( 'news' => $news, 'link_list' => $link->getPageLink('').'modules/blocknews/news-list.php', )); V třídě NewsDetailController pak v konstruktoru nastavuji if (Configuration::get("PS_REWRITING_SETTINGS") == 1) $this->php_self = "aktuality/".Tools::getValue('id').'-'.Tools::getValue('name').".html"; parent::__construct(); a v metodě display nastavuji smarty $smarty->assign(array( 'news' => ($news<>null) ? $news : null, 'link_news_list' => $link->getPageLink('').'modules/blocknews/news-list.php', )); stejně tak poté ve třídě NewListController. Tak trochu jsem to okoukal ze starých verzí presty, tak je možné, že někdě něco špatně nastavuji, co PS 1.6. nezkousne. Edited March 31, 2014 by haus (see edit history) Link to comment Share on other sites More sharing options...
inweb Posted March 31, 2014 Share Posted March 31, 2014 najít: 'rewrite' => 'aktuality/detail/([0-9]*)_([a-zA-Z0-9-]*)',nahradit: 'rewrite' => 'aktuality/detail/([0-9]+)_([a-zA-Z0-9\-]*)',najít (plus mínus kosmetika): 'rewrite' => 'aktuality/list/([0-9]*)',nahradit: 'rewrite' => 'aktuality/list/([0-9]+)', Link to comment Share on other sites More sharing options...
haus Posted April 28, 2014 Author Share Posted April 28, 2014 najít: 'rewrite' => 'aktuality/detail/([0-9]*)_([a-zA-Z0-9-]*)',nahradit: 'rewrite' => 'aktuality/detail/([0-9]+)_([a-zA-Z0-9\-]*)',najít (plus mínus kosmetika): 'rewrite' => 'aktuality/list/([0-9]*)',nahradit: 'rewrite' => 'aktuality/list/([0-9]+)', To mi bohuzel nepomohlo. Dokázal jsem si už zobrazit stránku ve správné url ale je potíž že se mi na té stránce zobrazuje pouze ten můj template a nic jinýho. Takže se mi zobrazí novinky, ale nejsou pod css stylama a vůbec chybí zbytek stránky. Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now