Automatická tvorba lokální navigace

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

Chtěl bych se zeptat, jak byste řešili situaci, kdy chci vytvořit něco takovéhoto:
ukazka

Myslím tím lokální navigaci pod hlavním nadpisem. Zda by ji nějak šlo generovat automaticky například ze všech nadpisů h3, které v šabloně následují.

Abych měl v šabloně něco takovéhoto:

<h1>Hlavni nadpis</h1>
{neco specialniho}
<h3>Podnadpis 1</h3>
text
<h3>Podnadpis 2</h3>
text

a namísto něcospeciálního by se vygenerovaly odkazy na ty podnadpisy (pomocí #ID), s tim, ze bych klidně ty h3 musel nejspíš obalit nějakým helperem, aby do nich generoval jednoznačné identifikátory

díky

Ondřej Mirtes
Člen | 1536
+
0
-

Všiml jsem si, že to dělá automaticky místní dokumentace, nejspíš to bude nějaká featura Texy.

Lopata
Člen | 139
+
0
-

Ta dokumentace to nejspíš dělá tím prefixem toc- v těch zahrnutých ID. Pak to asi bude otázka jednoho regexpu…

Editoval Lopata (11. 12. 2009 8:19)

hadzim
Člen | 2
+
0
-

Nerad bych parsoval syblony pred vlastnim vypisovanim…
Myslel jsem spis nejaky elegantni zpusob, jak by se pri vypsani kazdeho h3 (napriklad pomoci nejakeho helperu, nebo makra, neceho podobneho) tento nadpis zaregistroval a nasledne se vsechny tyto zaregistrovane nadpisy promitly zpet do lokalni navigace (problem ale zrejme bude, ze tou dobou je jiz vypsana)

redhead
Člen | 1313
+
0
-

Mám takový nástih, který by mohl fungovat (u nových šablon):

  1. udělat si makro třeba {h3}, které by do nějaké controly zaznamenávalo tyto nadpisy (použití např.: {h3 ‚Nadpis 1‘})
  2. někde pod hlavním nadpisem udělat block ‚navigace‘
  3. na konci šablony do blocku zavolat widget na render té controly
{block #navigace}{/block}

{h3 'Nadpis 1'}
{h3 'Nadpis 2'}

{block #navigace}
	{control navigationControl}
{/block}

Ale není to moc hezké. Možná bude mít někdo lepší nápad.

Davelister
Člen | 28
+
0
-

A co takhle vytvorit si nejaky filtr, ktery si v sablone vyhleda vsechny <h3>xxxx</h3> a nejak(tedka ale nevim jak :)) zpracuje?

redhead
Člen | 1313
+
0
-

To je asi lepší řešení, ale nevím co přesně hadzim myslel tím „Nerad bych parsoval syblony pred vlastnim vypisovanim…“. A navíc helper nebude vědět kam ty výsledky vypsat, ale možná by stačilo opět najít <h2> a vložit to pod něj?.

Jinak by to šlo krásně krásně přes regulární výraz, z kterého to pak vytaháš raz dva.