Textpattern: Tagging

Ich glaube, langsam fange 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.

Einen Sinn muss 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 Plug-ins, um eine Tag-Cloud 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 Plug-ins wird das Trennzeichen mithilfe des Attributs ’separater‘ mitgeteilt. Default ist ein Leerzeichen.⁣

Das Attribut ‚base‘ gibt die Linkbasis für Tags an. Default ist ‚tag‘. Falls eine andere Basis gewünscht wird, muss 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 Tag-Cloud nehmen. ‚threshold‘ gibt ein Mindestauskommen von Tags an. ’scale‘ hat einen Fluss auf die Skalierung.

Hinweis: Der Aufbau der Tag-Cloud 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. 🙂