nekonecne vnoreni + posledni stranka + router
- TheNEoo
- Člen | 75
Ahoj všem,
jakým zpusobem řešíte situaci, kdy máte jednu šablonu a zanorujete
stránky, které mají stále stejnou sablonu?.
např.
mam Homepage:default a Homepage:page
zanoreni: neco/hlavni-stranka
(homepage:default id=>1)
další: neco/hlavni-stranka/podstranka_stranka1/
(homepage:default id=>1, id=>2)
dalsí: neco/hlavni-stranka/podstranka_stranka1/podstranka_podstranky/
(homepage:default id=>1, id=>2, id=>3)
a takto zanorovat do konecna.
jde mi o to, ze se jedna stále o stejnou sablonu. Pokud se jedna o poslední stránku, tak pak je sablona homepage:page
Jak takovou situaci resit? Jak co se týče šablony, presenteru i routeru? Netusim, jak na to, ci od ceho se odpichnout.
Editoval TheNEoo (17. 8. 2017 12:55)
- TheNEoo
- Člen | 75
To vím, ale jak toho docílit?
<!-- sem nevkládám asi predesle sranky, ale jen stranku nasledujici? typuji že ano
<a n:href ="Homepage:default id=>id_nasledne_stranky">
Typuji teda ze si budu muset v presenteru udrzovat zanoreni
$values = array(
1 => id_prvni_stranky
2 => id_pod_stranky
3 => id_pod_pod_stranky
etc...
)
a vrouteru? Vubec netusim jak pred informace routeru a pouzit pak filter in a out
- greeny
- Člen | 405
Pokud potřebuješ mít v cestě všechny kategorie nebo whatever co to je, tak si napiš filtr (https://doc.nette.org/…tion/routing#…).
Zjednodušeně:
<?php
$router[] = new Route('<path .*>', [
'presenter' => 'Page',
'action' => 'view',
NULL => [
Route::FILTER_IN => function ($params) {
$lastItem = end(explode('/', $params['path']));
if (!$item = $database->getItemByIdentifier($lastItem)) { // použij nějakou vlastní službu na vytažení těch dat
$params['id'] = $item->id;
unset($params['path']);
}
return $params;
},
Route::FILTER_OUT => function ($params) {
$parents = $database->getParentsById($params['id']); // opět nějaká vlastní služba
$path = '';
foreach ($parents as $parent) {
$path = $parent->identifer . '/' . $path;
}
$params['path'] = $path;
unset($params['id']);
return $params;
},
],
]);
<a n:href="Page:view $page->id">Odkaz na stránku</a> // takhle pak vypadá odkaz
?>
- TheNEoo
- Člen | 75
greeny napsal(a):
Pokud potřebuješ mít v cestě všechny kategorie nebo whatever co to je, tak si napiš filtr (https://doc.nette.org/…tion/routing#…).
Zjednodušeně:
dekuji to je presne ono nedokazal jsem si predstavit ty globalni filtry
Editoval TheNEoo (17. 8. 2017 21:57)
- TheNEoo
- Člen | 75
Ahoj znova všem :)
Dostal jsem se do bodu, který je podobný prispevku od greeny.
Aktuálně když jsem na hlavni strance, tak odkazy vypadaj nasledovně:
localhost (homepage:default)
odkazy:
- localhost/internet
- localhost/iptv
- etc…
pri prokliku na odkaz localhost/internet se dostanu o bod dál, to je správne.
- a mam na stránce odkazy:
- localhost/domacnosti
- localhost/firmy
ovsem je to podstranka odkazu internet, takze odkazy by mely být:
- localhost/internet/domacnosti
- localhost/internet/firmy
nekde me neco utika a nevim co.
dle mě bych měl v šablone n:href předat celou cestu a ne jen id (to jest celou cestu plus id)
Editoval TheNEoo (17. 8. 2017 21:53)