Markus Kniebes Journal urn:uuid:c46fb1ed162bfee30d60838fc152ff1c 2021-21-09T23:40:30 <![CDATA[Textpattern: Tagging]]> urn:uuid:7675 2006-06-03T18:02:00 Ich glaube langsam fang ich an zu nerven. In letzter habe ich häufiger mal was mit Textpattern zu tun und es auch mal wieder lokal installiert, als internes Projektlog für mich.

Irgendeinen Sinn muß ich dem Mac mini doch geben:)

Gibt es eigentlich mittlerweile eine vernünftige Unterstützung für Tagging unter Txp? Falls nicht, kann es recht einfach nachgerüstet werden. In zwei Schritten:

Für einen praktischen, globalen Einsatz ändert man textpattern/publish.php an zwei Stellen, um Keywords als Tags zu nutzen.

case urldecode(strtolower(urlencode(gTxt(\'author\')))):
    $out[\'author\'] = (!empty($u2)) ? $u2 : \'\'; break;
    // AuthorID gets resolved from Name further down

case urldecode(strtolower(urlencode(\'tag\'))):
    $out[\'tag\'] = (!empty($u2)) ? $u2 : \'\'; break;

case urldecode(strtolower(urlencode(gTxt(\'file_download\')))):
    $out[\'s\'] = \'file_download\';
    $out[\'id\'] = (!empty($u2)) ? $u2 : \'\'; break;

Den mittleren Case ab Zeile 259 ergänzen.

//Allow keywords for no-custom articles.
$keywords = \"\";
if ($keywords) {
    $keys = split(\',\',$keywords);
    foreach ($keys as $key) {
        $keyparts[] = \" Keywords like \'%\" .
            doSlash(trim($key)).\"%\'\";
    }
    $keywords = \" and (\" . join(\' or \',$keyparts) . \")\";
}

//Allow tags for no-custom articles.
if ($tag) {
    $keywords .= \" and Keywords REGEXP \'[[:<:]]\" .
        doSlash(trim($tag)) .
        \"[[:>:]]\'\";
}

Ab ca. Zeile 580 den unteren Codeabsatz ergänzen.

Dazu gibt es dann noch zwei Plugins, um eine Tagcloud zu erzeugen und bei jedem Eintrag benutzte Tags anzuzeigen.

Den Änderungen für publish.php ist es egal, welches Trennzeichen zwischen Tags benutzt wird. Den Plugins wird das Trennzeichen mit Hilfe des Attributs \’separator\‘ mitgeteilt. Default ist ein Leerzichen.

Das Attribut \’base\‘ gibt die Linkbasis für Tags an. Default ist \’tag\‘. Falls eine andere Basis gewünscht wird, muß das auch in der publish.php angepasst werden, eg. case urldecode(strtolower(urlencode(\'basis-fuer-tags\'))):

Mit den Attributen \’threshold\‘ und \’scale\‘ kann man Einfluß auf die Tagscloud nehmen. \’threshold\‘ gibt ein Mindestauskommen von Tags an. \’scale\‘ hat ein Fluß auf die Skalierung.

Hinweis: Der Aufbau der Tagscloud liest alle Einträge mit Keywords und durchläuft zwei Schleifen um die Wolke zu erzeugen. Mit der Zahl der Einträge wird der Vorgang rechenintensiv und je nach Hosting sollte man evtl. darauf verzichten die Wolke auf jeder Seite anzuzeigen.

Eine Weiterentwicklung ist evtl. nicht ausgeschlossen. 🙂

]]>
Markus Kniebes kniebes@pm.me