Fulltext obsahu šablon – kde vzít HTML pro indexaci

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

Potřebuji napsat fulltextové vyhledávání a do výsledků zahrnout i obsah Latte šablon. Šablony jsou vícejazyčné, stejně tak bude vícejazyčné i vyhledávání v indexu. Vyhledávání bude také privátní/veřejné podle identity uživatele.

Zatím moc nevím, kudy do toho. Přemýšlím o makru, které bude zachytávat HTML výstup šablony do úložiště a to pak budu indexovat. Makro bych ale musel přidat do všech šablon.

Hledám tedy místo, kde se správně napíchnout na HTML výstup. Neřešil jste někdo?

powercz
Člen | 12
+
0
-

Co makro capture? viz dokumentace

Milo
Nette Core | 1283
+
0
-

Zachytit výstup není problém. Řeším, kde HTML efektivně zachycovat aby bylo relevantně indexovatelné.

David Matějka
Moderator | 6445
+
0
-

co takhle sendResponse? https://api.nette.org/…ter.php.html#621
neco jako


public function sendResponse(Application\IResponse $response)
{
	if($reponse instanceof TextResponse) {
		$html = (string)$response->getSource();
		//zpracovat
		$response = new TextResponse($html);
	}
	parent::sendResponse($response);

}

ted si nejsem jistej, jestli je nutny znovu vytvaret TextResponse, ale obavam se, ze kdyby se tak neudelalo, tak se sablona provede 2×..

edit: oprava (string)$response->getSource();

edit2: otestovano, je potreba to vytvoreni noveho textresponse, sablona blbne, kdyz je vykreslovana 2×. funguje to celkem ok, jedinej problem je, ze to zachyti komplet stranku, tzn. i layout. slo by to asi nejak vyresit (ve stylu, ze vytvorim klon template, nastavim prazdnej layout jen s {include #block}, ten si necham poslat do promenny, pak hodim zpet ten puvodni layout a poslu response :) )

Editoval matej21 (27. 3. 2013 16:48)

Milo
Nette Core | 1283
+
0
-

Díky, je to jedna z možností. Problém je ale s cachováním. Nějaká šablona se změní, těžko se to detekuje. Prozatím se kloním k makru v layout šablonách + označení částí co se nemají indexovat HTML komentem.