Jak napsat znovupoužitelné forum

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

Zdravím,
sem v Nette pomerně začátečník a chtěl bych si napsat diskuzní fórum podobné například tomuto. Možná by mohlo být o něco jednodušší. Nalezl jsem v doplňcích ForumControl, ale to je podle mě spíš jako diskuze pod články, ale ne jako plnohodnotné forum s tématy. Důležité pro mě je, abych ho mohl použít třeba i na dalších stránkach.

Napadlo mě napsat to jako další modul aplikace. Napsat to pouze jako presenter mi nepřijde správné řešení. Uvítám každou radu a nakopnutí správným směrem.

Melmen
Člen | 132
+
0
-

Něco podobného jsem dělal nedávno. Není to kompletně dodělaný, ale používat se to dá :) Mám to celé v jednom modulu. Forum i kategorie se vytváří na základě jazyka – stejný princip jako toto fórum. Demo mám tady http://www.doutdes.cz/forum/ , anglickou (testovací) část pak tady http://www.doutdes.cz/en/forum/

Etch
Člen | 403
+
0
-

Také jsme nedávno dělali fórum, které je podobné tomuto. Též jsme šli cestou modulu a hojně tam využíváme komponenty. Navíc jsme chtěli, aby to šlo nějak základně konfigurovat přes config.neon, takže to pak vypadá třeba následujícím způsobem:

divorum:
	factories:

		# Views

		categories:
			class: Divorum\Categories
			setup:
				- setTemplateFile('blabla.latte')
				- addToLeftPanel(@divorum.lastPostsBox)
				- addToLeftPanel(@divorum.onlineUsersBox)

		# Boxes

		lastPostsBox:
			class: \Divorum\Boxes\LastPostsBox

		onlineUsersBox:
			class: \Divorum\Boxes\OnlineUsersBox

Factory „categories“ vrací komponentu, která vykresluje kategorie a fóra k nim náležející. Pokud někdo potřebuje nějaké velké změny, tak napíše a vymění celou komponentu. Pokud chce například někdo jenom pozměnit vykreslování, tak může nastavit jinou šablonu, pomocí metody setTemplateFile. V tomto případě šablona změněna z výchozí na šablonu blabla.latte. Metody addToLeftPanel, addToRightPanel a další zase zařizují ukotvení nějakých dalších komponent do různých panelů.