Context Links á la Amazon - Smarty

emptynick

Erfahrenes Mitglied
Hallo,

ich möchte auf meiner Seite ein kleines selbstprogrammiertes Wiki einfügen.
Das stellt ja auch alles kein Problem da, aber ich möchte dass in den Texten (die auf meiner Homepage, nicht die vom Wiki selber) Wörter die zu einer entsprechenden Kategorie gehören mit dem Wiki verlinkt werden.
Automatisch versteht sich da die Texte bei mir dauernd geändert/erweitert werden.

Ich benutze die Template Engine Smarty, ich bin aber leider kein Profi in Sachen Smarty.
Rein theoretisch hätte ich mir die Umsetzung wie folgt vorgestellt:

Array mit den Keywords,
->per eregi_replace dann das Keyword durch ein <a href"wiki.php?articel=xy"> ersetzen

Das wärs eigentlich schon, aber das Problem kommt ja auch erst jetzt:

Wie ist es möglich innerhalb der Smarty Klasse diesen MySQL Befehl, bzw. die while Schleife auszuführen?
In der Funktion assign() werden ja die Variblen definiert, also müsste rein theoretisch das jeweilige Template nach der Bezeichnung durchsucht werden. Dort ist aber leider nichts dergleicher zu finden.

Weiß auf dem Gebiet einer Rat oder gibt es vielleicht eine viel einfacherere Methode wie Javascript etc?

Vielen Dank im Vorraus und viele Grüße

emptynick
 
Hi,

keine while Schleife, aber foreach ist möglich, wenn du z.B. ein mehrdimensionales Array übergibst. (Das bereitest du dann am einfachsten in einer While-Schleife in PHP vor.)

http://smarty.php.net/manual/de/language.function.foreach.php

RegEx gibts auch als Smarty Funktion:
http://smarty.php.net/manual/de/language.modifier.regex.replace.php

Am besten (auch am performantesten) wäre es aber, wenn du das komplett in PHP abhandeln würdest und smarty nur zur Ausgane nutzt.


Gruß

.:lay-z-cow:.
 
Also generell würde es so gehen:

PHP:
$keywords = mysql_query("SELECT * FROM wiki_posts");
while($row = mysql_fetch_array($keywords)){
$keywords = $row['keywords'];
$keywords = explode("," $keywords);
foreach($keywords AS $out){
$INPUT = eregi_replace($out, '<a href="wiki.php?mode=article&id='.$row['id'].'"'>Text</a>, $INPUT);
}
}

Doch muss die Variable INPUT dann mit dem Text des Templates belegt sein und nach dieser Variable suche ich jetzt schon seit einiger Zeit.
Gestoßen bin ich da auch die Variable params['contents'], aber da passiert bei mir leider garnichts. Auch nicht wenn ich die Variable einfach ausgebe.

Gibt es denn eine Alternative á la Javascript etc?

MfG
 
Zurück