Efektivnější routování pro eshop?
- Neuronic
- Člen | 12
Ahoj, zajimalo by me zda by se nasledujici routa nedala upravit tak, abych nemusel pred znacky (brands) a stitky (tags) davat do url „/brands/“ nebo „/tags/“. Ted url vypada napr. takhle „/boty/znacky/adidas/stitky/novinka/“, takze se zbytecne url prodluzuje a pro SEO to neni uplne optimalni. Chtel bych dosahnout, aby url vypadala takhle: „/boty/adidas/novinka/“ ale nevim presne zda to v Nette nejak jde nebo jak nejlepe by se to dalo udelat. Asi by pomohl nejaky seznam povolenych tvaru pro brands a tags, ale nevim co kde a jak.
$router[] = new Route('<categories>[/znacky/<brands>][/stitky/<tags>]/', array(
'presenter' => 'Product',
'action' => 'list',
'categories' => null,
'brands' => null,
'tags' => null,
));
- h4kuna
- Backer | 740
ahoj, myslíš toto?
'<categories>[/znacky/<brands>][/stitky/<tags>]/' /*přepsat na*/
'<categories>[/<brands adibas|nake|reeebok>][/<tags novinky|sleva|velky-kamarad>]/' /* je pro toto /boty/adibas/novinka/ */
v presenteru najdes jako
<?php
/** @persistent */
public $brands;
//...
dump($this->brands);
?>
PS: nechtěl jsem dělat reklamu tak jsem ty značky upravil, ale stejně je všichni znaj :)
Editoval matata (7. 2. 2011 15:03)
- Neuronic
- Člen | 12
Nooo takhle me to uz napadlo, ale jestli neni nejaky lepsi zpusob jak to provazat s databazi, zebych tomu <brands> nastavil nejake pole povolenych hodnot :-). Teda takhle jak si to poslal se to nastavuje, ale myslel jsem spis neco ve stylu, ze mu predam pole.
Editoval Neuronic (7. 2. 2011 15:18)
- Filip Procházka
- Moderator | 4668
mělo by fungovat něco jako
use Nette\Application\Route;
$router[] = new Route('<categories>[/<brands>][/<tags>]/', array(
'presenter' => 'Product',
'action' => 'list',
'categories' => null,
'brands' => array(
Route::VALUE => NULL,
Route::FILTER_IN => function ($brand) {
static $allowed = array(
"adibas",
"nake",
"reeebok"
);
return in_array($brand, $allowed) ? $branch : NULL;
}
),
'tags' => array(
Route::VALUE => NULL,
Route::FILTER_IN => function ($tag) {
static $allowed = array(
"novinky",
"sleva",
"velky-kamarad"
);
return in_array($tag, $allowed) ? $tag: NULL;
}
),
));