Fotogalerie v nette – optimální řešení

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Taps
Člen | 169
+
0
-

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
+
0
-

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
+
0
-

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)

Jan Tvrdík
Nette guru | 2595
+
0
-

@Taps: Četl jsi, co ti poradil @grogy?

Taps
Člen | 169
+
0
-

@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
+
0
-

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.