Zur Navigation

Smart-Tags-Plugin 1 und 2

1 Jörg Kruse

So, ich habe jetzt, wie in diesem Thread gewünscht, ein Smart-Tags-Plugin erstellt. Voraussetzung für eine Verwendung ist PHP 5. Das Plugin könnt ihr folgendermaßen installieren und konfigurieren

Die Installation der Version 3 ist hier beschrieben

Installation der Versionen 1 und 2:

1. Download des Plugins
für Forenversion 1.1 und 1.2: smarttags.tar.gz
für Forenversion 2.0: smarttags-2.0.1.tar.gz

2. das Paket entpacken

3. in der Datei /smarttags/smarttags.php können die Smart Tags eingetragen werden. Ein Eintrag enthält den Begriff und die dazugehörige URL und sieht folgendermaßen aus:
$a_smarttags['Begriff'] = 'http://dein-forum.tld/begriff-t-123-1.html';
In der Datei befinden sich auch noch drei Mustereinträge, die ihr als Vorlage verwenden könnt

4. das Plugin wird mit folgender Zeile in der Datei /includes/config.php aktiviert:
$xincludes[] = 'smarttags';

5. mit der Variable $d_stfreq kann in der Datei /includes/config.php die Häufigkeit der Ersetzung festgelegt werden. Voreingestellt ist der Wert 1, d.h. in jedem Beitrag wird das jeweils erste Vorkommen der eingetragenen Begriffe ersetzt. Beträgt dieser Wert 2, geschieht dies nur in jedem zweiten Beitrag.
$d_stfreq = 2;
Dieser Wert kann auchdezimal angegeben werden
$d_stfreq = 2.5;

6. weitere Anpassungen:
ab Forenversion 1.1.1 muss nichts weiter angepasst werden. In den Versionen bis 1.1.0 müssen noch die Dateien /includes/main/thread/get.php und /includes/main/post/new.php angepasst werden - dies beschreibe ich im folgenden Beitrag

7. die geänderten Dateien hochladen; der Ordner smarttags wird in das Verzeichnis /includes/extra hochgeladen (falls der Ordner extra noch nicht vorhanden ist, diesen erst anlegen)

27.04.2008 10:43 | geändert: 12.02.2016 20:37

2 Jörg Kruse

Anpassungen für Forenversionen bis einschließlich 1.1.0

1. Datei /includes/main/thread/get.php

diesen Abschnitt um das fettmarkierte ergänzen:
        if ($pcstatus == 1) {
            $ptext4html = bbcode(nl2br(str4html($ptext4html)));
            $ptext4html = relexternal($ptext4html);
        }
        if (function_exists('postbbcode')) {
            $ptext4html = postbbcode($ptext4html);
        }

2. Datei /includes/main/post/new.php

diesen Abschnitt ...:
                        if ($signatur4db == '') {
                            $ptext4db = mysql_real_escape_string($_POST['text']);
                        } else {
                            $ptext4db = mysql_real_escape_string($_POST['text']) . "\n\n" . '[sig]' . $signatur4db . '[/sig]';
                        }

... ersetzen durch:
                            $ptext = $_POST['text'];
                            if (function_exists('customizetext')) {
                                $ptext = customizetext($ptext);
                            }
                            $ptext4db = mysql_real_escape_string($ptext);
                            if ($signatur4db != '') {
                                $ptext4db = $ptext4db . "\n\n" . '[sig]' . $signatur4db . '[/sig]';
                            }

27.04.2008 10:55

3 Lionel

Hallo Jörg!
Endlich habe ich unser Forum fertig geupdated und auch das Plugin funktioniert prima. Eine Sache war mir aber noch aufgefallen: Offensichtlich unterscheidet das Plugin zwischen Groß- und Kleinschreibung, was etwas ungünstig ist, da in dem Beitrag das entsprechende Wort mit genau der Groß/Klein-Schreibweise auftauchen muss, wie in der smarttags.php angegeben.
Gibt es eine Möglichkeit, das zu umgehen?

01.06.2008 15:30

4 Jörg Kruse

Hallo Lionel,

ja, das sollte es gehen, Voraussetzung hierzu ist PHP 5.

In der Datei /includes/extra/smarttags/main.php diesen Abschnitt suchen und folgendermaßen durch die beiden fettmarkierten "i"s ergänzen:

                if (stripos($text, $stname) !== false) {
                    $text = preg_replace('/' . $stname . '/i', '' . $stname . '', $text, 1); // only first match
                }

Die gefundenen Wörter werden hierbei allerdings nicht nur verlinkt, sondern auch hinsichtlich der vorgegebenen Klein- oder Großschreibung geändert.

01.06.2008 16:12

5 Gabi

Hallo Jörg,

ich bin nun auch endlich zum Update gekommen. Lief alles erfreulich problemlos, nur bei den [[Smart Tag]]s tut sich bei mir gar nichts.

Habe ich das richtig verstanden:
smartags/ in das Hauptverzeichnis
/forum/smarttags/
(also nicht in /forum/includes/extra/smarttags/)?

Ich habe sie in /includes/config.php aktiviert mit $xincludes[] = 'smarttags';

Mein Testeintrag ist "Kugelbaum", die beiden Vorlagen habe ich erstmal gelassen
Auf der Seite
http://www.gartendatenbank.de/forum/kugeltrompetenbaum-zurueckschneiden-zwergtrompetenbaum-t-444-1
werden aber bisher weder "Kugelbaum" (oben) noch "Smart Tag" (ganz am Ende) verlinkt.

LG Gabi



02.06.2008 14:57

6 Jörg Kruse

Hallo Gabi,

Habe ich das richtig verstanden:
smartags/ in das Hauptverzeichnis
/forum/smarttags/
(also nicht in /forum/includes/extra/smarttags/)?

Doch, der Ordner smarttags muss in das Verzeichnis /forum/includes/extra hochgeladen werden (so dass er dort das Verzeichnis /forum/includes/extra/smarttags darstellt)

Ich habe sie in /includes/config.php aktiviert mit $xincludes[] = 'smarttags';

Ja, das sollte korrekt sein

Mein Testeintrag ist "Kugelbaum", die beiden Vorlagen habe ich erstmal gelassen
Auf der Seite
http://www.gartendatenbank.de/forum/kugeltrompetenbaum-zurueckschneiden-zwergtrompetenbaum-t-444-1
werden aber bisher weder "Kugelbaum" (oben) noch "[[Smart Tag]]" (ganz am Ende) verlinkt.

Eine automatische Verlinkung erfolgt dann nur bei neuen Beiträgen. Bei älteren Beiträgen könntest du die Verlinkung lediglich manuell erstellen, indem du den Begriff in eckigen Doppelkammern einschließt

[[Kugelbaum]]

02.06.2008 15:07 | geändert: 02.06.2008 15:12

7 Gabi

Hallo Jörg,

vielen Dank für die schnelle Antwort!
Super, jetzt funktioniert es auch bei mir, eine wirklich geniale Funktion! lächel

Es kamen dabei bei mir in dem Beitrag 4 [[Smart Tag]]s vor, wobei allerdings nur die ersten beiden wie vorgesehen automatisch verlinkt wurden.

Die beiden übrigen wurden erst verlinkt, nachdem ich sie nachträglich mit eckigen Klammern versehen habe.

Vielleicht habe ich da in der Hektik noch irgendwas falsch gemacht, komme jetzt im Moment nicht dazu, das noch mal genauer zu testen, melde mich ggf. dann noch mal.

LG Gabi

02.06.2008 18:02

8 Jörg Kruse

Es kamen dabei bei mir in dem Beitrag 4 [[Smart Tag]]s vor, wobei allerdings nur die ersten beiden wie vorgesehen automatisch verlinkt wurden.

Die beiden übrigen wurden erst verlinkt, nachdem ich sie nachträglich mit eckigen Klammern versehen habe.

Handelt es sich hierbei um unterschiedliche Begriffe? Das Plugin taggt jeweils nur das erste Vorkommen eines Begriffes innerhalb eines Beitrages

02.06.2008 18:14

9 Gabi

Zitat von Jörg
Handelt es sich hierbei um unterschiedliche Begriffe?

Ja. Es handelte sich um die Wörter "Kugelbaum", "Kugelbäume", "Veredelung" und "Bodendecker", wobei die ersten beiden auf dieselbe Adresse verweisen.

LG Gabi

02.06.2008 18:19

10 Jörg Kruse

Hast du die Variable $d_stfreq - wie in Beitrag 1 unter Punkt 5 beschrieben - definiert? In so einem Fall würde nur noch ein Teil der Begriffe getaggt.

02.06.2008 18:28