Slovník pojmů a integrací do obahu na stránce

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

Stojím před ozázkou jak udělat slovník pojmů (o samotný slovník se mi nejdá, to bych zvládnul) aby uměl slovní výrazy obsažené, které budou shodné s výrazy na stránce ještě do stránky označit s odkazem na slovník. Něco typu kontextová reklama.

Napadá mě snad pouze to, že načtu do pole všechny výrazy slovníku z DB. Poté načtu do pole celý text na stránce a pokud se výrazy budou shodovat, tak vepíšu nějaky html tag – ABBR například. Toto celé bych asi řešil javascriptem.

Napadá vás nějaké lepší řešení?

dotTwelve
Člen | 167
+
0
-

Mám jenom malý dotaz, zda-li je tato forma zápisu v šabloně ta správná:

<?php
<script language="javascript">
        terms = [<?php
        foreach ($dictionary as $term) {
            echo '"' . $term . '",';
        }
        ?>];
        links = [<?php
        foreach ($dictionary as $term) {
            echo '"' . String::webalize($term) . '",';
        }
        ?>];
</script>
?>

zda-li to nejde nějak lépe napsat.

Díky!

Editoval dotTwelve (13. 11. 2009 14:54)

JakubKohout
Člen | 92
+
0
-

A co si napsat helper? a pak si jenom pomocí regulárního výrazu upravím daná slova a je to. Jenom by to chtělo použít cache pokud je na stránce více textů pro aktualizaci. Možná by taky nebylo špatný využít singleton aby se výber dat pro slovník z DB v helperu provedl jen jednou a né po každém zavolání.

David Grudl
Nette Core | 8228
+
0
-

dotTwelve napsal(a):

Mám jenom malý dotaz, zda-li je tato forma zápisu v šabloně ta správná:

Pokud $term bude obsahovat uvozovky nebo lomítko, nevygeneruje se správný kód. Vhodnější je použít LatteFilter s automatickou sanitizací:

<script>
terms = {$dictionary};
links = {$webalizedDictionary};
</script>