Menu z databáze a n:href makro pro absolutní odkazy

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

Ahoj,

mám 99% odkazů pro menu v databázi ve správném tvaru pro makro n:href v šabloně, avšak potřebuji občas vložit 1–2 odkazy, které jsou většinou absolutní, vedou mimo web. Nejelegantnější variantou mi připadá posílat tam něco ve stylu: ":API:Redirect null, ‚http://seznam.cz‘ a v metodě pak přesměrovávat podle druhého parametru, jak by jste to řešili vy?

díky

Editoval Landsman (22. 7. 2016 22:57)

GEpic
Člen | 562
+
0
-

Landsman napsal(a):

Ahoj,

mám 99% odkazů pro menu v databázi ve správném tvaru pro makro n:href v šabloně, avšak potřebuji občas vložit 1–2 odkazy, které jsou většinou absolutní, vedou mimo web. Nejelegantnější variantou mi připadá posílat tam něco ve stylu: ":API:Redirect null, ‚http://seznam.cz‘ a v metodě pak přesměrovávat podle druhého parametru, jak by jste to řešili vy?

díky

Já bych to vše posílal prvním parametrem a udělal si pouze druhý jako příznak.

Něco ve stylu:

	public function generateLink($link, $nette = true)
	{
		if ($nette) {
			# Klasika :Modul:Presenter:akce
		} else {
			# Treba http://google.com
		}
	}

Jen dotaz, jakým způsobem řešíš argumenty odkazu? To posíláš také zároveň prvním parametrem?

Editoval GEpic (23. 7. 2016 3:12)

Landsman
Člen | 152
+
0
-

Tzn udělat si ještě jednu metodu, která bude vracet rovnou odkaz a nepoužívat v latte makro n:href. Ano prvním.

GEpic
Člen | 562
+
0
-

Landsman napsal(a):

Tzn udělat si ještě jednu metodu, která bude vracet rovnou odkaz a nepoužívat v latte makro n:href. Ano prvním.

Já nakonec udělal link a i parametry zvlášť, kvůli detekování 'active' linku pro zvýraznění v menu.
A určitě bych zachoval link v nette formátu, pokud je to možné, ostatní (externí) bych ukládal klasicky, pokud pak odkaz začíná http:// nebo https:// … tak víš že se jedná o externí odkaz.

Landsman
Člen | 152
+
0
-

Detekování aktivního linku jsem vyřešil takto:

n:class="explode(':', $item->link)[1] == explode(':', $presenter->getName())[0] ? 'active'"

Editoval Landsman (23. 7. 2016 17:08)

GEpic
Člen | 562
+
0
-

Landsman napsal(a):

Detekování aktivního linku jsem vyřešil takto:

n:class="explode(':', $item->link)[1] == explode(':', $presenter->getName())[0] ? 'active'"

Já mám např. Content presenter kde se mění jen parametr s ID stránky, takže tam by to bylo krátké.