označení aktivní položky ihned po načtení stránky

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

Zdravím, pro označení aktivní položky používám níže uvedený kod.Můj dotaz zní zda je možné níže uvedený kod upravit, tak aby se mi hned po načtení stránka označila položka,bez toho aniž bych musel na položku kliknout . Adresa by byla následující(Homepage:default liga=>1)

<ul class="htabs hide clearfix">
 <?php $hranaLiga = 1 ?>
 {foreach $Tabulkaligy as $liga}

  <li {ifCurrent Homepage:default  liga=>$liga->id} class="active muzi"{/ifCurrent} >
<h3><a href="{link Homepage:default liga=>$liga->id}">{$liga->nazev}</a></h3>
</li>

{/foreach}
</ul>
fojta
Člen | 24
+
0
-

To si musis nastavit v route defaultni hodnoty a pote kdyz nebude liga id zadana bude prehozena default hodnota.

$route = new Route('<presenter>/<action>/<id>', array(
    'presenter' => 'Homepage',
    'action' => 'default',
    'liga' => 1,
));
Taps
Člen | 168
+
0
-

Díky, přesně to jsem potřeboval, ale teď se mi z níže uvedeného odkazu

<h3><a href="{link Homepage:default liga=>$liga->id}">{$liga->nazev}</a></h3>

vygeneruje jen #

Editoval Taps (7. 8. 2012 9:46)

ViPEr*CZ*
Člen | 813
+
0
-

Zkuste místo link dát plink.

Taps
Člen | 168
+
0
-

Při použití

<h3><a href="{plink Homepage:default liga=>$liga->id}">{$liga->nazev}</a></h3>

je problém stejný.
Routování mám nastaveno takto:

    $container->router[] = new Route('index.php', 'Front:Homepage:default', Route::ONE_WAY);

    $container->router[] = $adminRouter = new RouteList('Admin');
    $adminRouter[] = new Route('admin/<presenter>/<action>[/<id>]', 'Homepage:default');

    $container->router[] = $frontRouter = new RouteList('Front');
    $frontRouter[] = new Route('clanky[/<nazev>]', 'Clanky:default');
    $frontRouter[] = new Route('<presenter>/<action>[/<id>]', array(
    'presenter' => 'Homepage',
    'action' => 'default',
    'liga' => 1,
));
ViPEr*CZ*
Člen | 813
+
0
-

Tam by měl být ještě ten modul jestli se nepletu: plink Front:Homepage:default

Taps
Člen | 168
+
0
-

Tato úprava také nefunguje

22
Člen | 1478
+
0
-

jestli jde o přidání třídy active, tak snad takhle:

<li n:class="$presenter->isLinkCurrent('Front:Homepage:', array('liga' => $liga->id)) ? active, muzi">

Editoval 22 (7. 8. 2012 11:09)

Taps
Člen | 168
+
0
-

o třídu mi nejde.Hledal jsem to co napsal fojta, ale ted je problém s tím, že se mi správně negenerují odkazy

ViPEr*CZ*
Člen | 813
+
0
-

Taps napsal(a):

Tato úprava také nefunguje

Nefunguje znamená, že to opět vygenerovalo # ? Že tam je <a href=„#“ … ?
Jinak třída se k prvku na základě určité podmínky dá přiřadit jak psal 22. Mně teď spíš jde o ten odkaz. ;-)

Taps
Člen | 168
+
0
-

Ano, opět se vygenerovalo jen #

22
Člen | 1478
+
0
-

No ale Nette samo o sobě snad kžížek negeneruje, tam se vygeneruje ‚Cannot load presenter…‘, neměl jsi ho tam původně a nemáš to v cache templaty…

ViPEr*CZ*
Člen | 813
+
0
-

Bál jsem se napsat z hlavy tohle… ale taky jsem si to myslel, že to je nějaké divné. Navíc v tom nevidím furt chybu. Díky 22.

redhead
Člen | 1313
+
0
-

Nette křížek generuje v produkčním prostředí, nebo pokud je to změněné v konfiguraci (nějaká statická proměnná mám pocit).

22
Člen | 1478
+
0
-

Jo, máš pravdu, nějak mi nedocvaklo, že někdo vyvíjí na produkci, takže v bootsrapu zkus upravit:

// Enable Nette Debugger for error visualisation & logging
$configurator->setDebugMode();
$configurator->enableDebugger(__DIR__ . '/../log');

pak zkus, jestli se ti chytí routa třeba na:

<a href="{link Homepage:}"></a>

edit: mod_rewrite ti funguje?

Editoval 22 (7. 8. 2012 12:29)

Taps
Člen | 168
+
0
-

když jsem použil tento zápis

    $frontRouter[] = new Route('<presenter>/<action>[/<liga>]', array(
    'presenter' => 'Homepage',
    'action' => 'default',
    'liga' => 1,

));

tak se mi vygeneroval link homepage/default/2, takže chyba bude asi někde na úrovni routování. Mod rewrite mi v pořádku funguje. Potřebuji aby link byl ve tvaru ?liga=2

22
Člen | 1478
+
0
-

by tě měla stačit default routa:

$frontRouter[] = new Route('<presenter>/<action>[/<id>]', array(
	'presenter' => 'Homepage',
	'action' => 'default',
	'liga' => 1
));

Editoval 22 (7. 8. 2012 13:07)

Taps
Člen | 168
+
0
-

to ano, ale já potřebuji defaultní hodnotu liga

'liga' => 1,

tu když zadám do routování, tak se v odkazu vygeneruje jen #

Editoval Taps (7. 8. 2012 13:01)

22
Člen | 1478
+
0
-

tak si tam dodej ten parametr, sice v url není vidět, ale přes $this->getParameter('liga') se k ní dostaneš.. upraveno výše, pak ta routa generuje i link:

<a href="{link Homepage: liga => 2}">Link &raquo;</a>

teď jsem to zkoušel…

Editoval 22 (7. 8. 2012 13:07)

Taps
Člen | 168
+
0
-

ano, to v presenteru mám, akorát pokud nenastavím v routě

'liga' => 1,

tak nedojde k defaultnímu označení položky

22
Člen | 1478
+
0
-

tak můžeš třeba do HomepagePresenteru:

	/** @persistent */
	public $liga = 1;

	public function startup()
	{
		parent::startup();
		$this->getParameter('liga') ? $this->liga = $this->getParameter('liga') : NULL;
	}

a pojede ti to na default routu, bude ti to generovat /?liga=1 na odkazu a správně vyhodnotí i isLinkCurrent()

edit: pro úplnost, bude se to matchovat s touhle routou:

$frontRoute[] = new Route('<presenter>/<action>[/<id>]', array(
	'presenter' => 'Homepage',
	'action' => 'default',
));

Editoval 22 (7. 8. 2012 14:14)

Taps
Člen | 168
+
0
-

Tím pádem pak budu muset resetovat persistentní parametr u jednotlivých odkazů že ? Není to zbytečně komplikované ?

Editoval Taps (7. 8. 2012 13:49)

22
Člen | 1478
+
0
-

Proč resetovat parametr? Přece potřebuješ jeho hodnotu na tom presenteru a pokud se odkážeš jinam, kde persitent není, tak ne.

Taps
Člen | 168
+
0
-

Vzhledem k tomu,že ten odkaz je na všech stránkách tak persistentní parametr budu muset dát do BasePresenteru.

22
Člen | 1478
+
0
-

Nějak se v tom ztrácím.. odkaz vede vždycky, na stejné místo, i když je na všech stránkách, ne? Takže isLinkCurrent bude pravdivé akorát také na jednom místě, tedy na HomepagePresenteru, nikde jinde ho nepotřebuješ imho. A na HomepagePresenteru je jen kvůli správné detekci aktivního menu..

Taps
Člen | 168
+
0
-

Můžeš mi poslat kontakt na tebe ?poslal bych ti živou ukázku. Ten odkaz je umístěn i na jiných stránkách

22
Člen | 1478
+
0
-

zabal to a hoď mi to někam na uloz.to třeba

Taps
Člen | 168
+
0
-

OK, ale web nechci zatím veřejně šířit.

22
Člen | 1478
+
0
-

tak mi ho pošli na mail wot2222<at>seznam.cz