Fotogalerie v nette – optimální řešení
- Taps
- Člen | 169
Zdravím, chtěl bych si v nette vytvořit minigaleri. Vzhledem k tomu, že
šablona zůstává stejná a mění se jen fotky tak se chci zeptat zda je
možné abych měl url ve tvaru
„www.moje-adresa.cz/fotogalerie-deti“
„www.moje-adresa.cz/fotogalerie-svatby“
„www.moje-adresa.cz/fotogalerie-momentky“
bez toho aniž bych musel do každé šablony zvlášt vkládat obsah
Nebo jediné řešení je přes „www.moje-adresa.cz/fotogalerie/deti“ ?
Editoval Taps (29. 12. 2012 15:17)
- grogy
- Člen | 147
Dobré odpoledne,
mrkni na https://doc.nette.org/…tion/routing. Pomocí rout si uděláš s URL co budeš potřebovat. (U Tvého problému bych nechal staticky presenter a action a měnil bych jen ID, podle kterého načteš foto).
- Taps
- Člen | 169
Díky, zkoušel jsem tento postup do souboru HomepagePresenter jsem umístil
public function renderFotogalerie($slozka) {
$this->template->slozka = $slozka;
$this->template->images = Nette\Utils\Finder::findFiles('*.jpg')->in(WWW_DIR. '/foto/'. $slozka);
}
v šabloně pak
{foreach $images as $image}
<a n:href="{$baseUri}/foto/{$slozka}/{$image->getFilename()}">
<img src="{$baseUri}/foto/{$slozka}/{$image->getFilename()}" />
</a>
{/foreach}
a odkazy volám tímto způsobem
<a n:href="Homepage:fotogalerie deti" id="galerie"><img class="image1" alt="Dětské fotografie" src="obrazky/deti.jpg"></a>
ale vygeneruje se mi odkaz v tomto tvaru fotogalerie?slozka=deti" místo fotogalerie/deti. Mohl by mi někdo poradit, kde může být problém.
Editoval Taps (29. 12. 2012 17:26)
- Taps
- Člen | 169
@Jan Tvrdík,
zkoušel jsem aplikovat druhé pravidlo, ale to má za následek rozbití
grafiky
$container->router[] = new Route('index.php', 'Homepage:default', Route::ONE_WAY);
$container->router[] = new Route('[<presenter>/]fotogalerie/<slozka>', 'Homepage:fotogalerie');
$container->router[] = new Route('<action>[/<id>]', 'Homepage:default');
- ViPEr*CZ*
- Člen | 817
A co to znamená rozbití grafiky?
Není toto zbytečný:
$container->router[] = new Route('[<presenter>/]fotogalerie/<slozka>', 'Homepage:fotogalerie');
Vždyť presenter bude vždy homepage v tomhle Vašem konkrétním případě. A pokud chcete mít link /fotogalerie/… pak si udělejte FotogaleriePresenter.