Liebe Foren-Mitglieder.
In diesem Beitrag werden Euch ein paar Möglichkeiten vorgestellt, wie Ihr im Beitragseditor möglichst einfach Querverweise auf andere Beiträge erzeugt und wie alte Beiträge, die kaputte Links enthalten, mit wenigen Handgriffen korrigiert werden können.
Probleme
Fast alle, die schon mal die Suchfunktion benutzt haben, um in den Tiefen des Forums zu stöbern, dürften in Beiträgen, die vor dem 2006-02-26 geschrieben wurden, über kaputte Links auf andere Forenbeiträge gestolpert sein. Statt im jeweiligen Beitrag zu landen, wird einem dann nur die Portal-Seite des Forums angezeigt. In anderen Fällen (und das gilt auch für Beiträge lange vor dem obigen Stichdatum) erscheint statt des betreffenden Beitrags das Eingangs-Posting des zugehörigen Threads. Bei längeren Threads, die nicht selten im Thema hin- und herspringen, erschließt sich einem dann oft nicht der Zusammenhang zum Ausgangs-Posting, und man muß sich mühsam durch den ganzen Thread arbeiten, um irgendwo das zugehörige Wissenshäppchen aufzuschnappen.
Ersteres Problem liegt an einer Umorganisation des Forums im Zuge der Software-Umstellung im Februar dieses Jahres. Dabei wurden (fast) alle Links um die Zeichenkette "forum/" ergänzt, was logischerweise in alten Beiträgen nicht reflektiert wird. Vorher begann die URL (universal resource locator) der meisten Foren-Links mit "http://www.minolta-forum.de" direkt gefolgt von "/index.php", heute stattdessen mit "http://www.mi-fo.de/forum/index.php". Fügt man alten Links in der Adreßzeile des Browsers per Hand dieses "forum/" hinzu (und ändert man - seit 2008-02 - "http://www.minolta-forum.de" in "http://www.mi-fo.de", so funktionieren auch die "alten" Links wieder. Viele wichtige alte Beiträge, auf die immer wieder verwiesen wird, sind von den jeweiligen Autoren inzwischen manuell angepaßt worden, aber bei weit mehr als hunderttausend Beiträgen kann das immer nur die Spitze des Eisbergs bleiben. Die alten Hasen wissen, wie sie damit umgehen müssen, viele Newbies stolpern aber immer wieder über diese ärgerliche Falle.
Das zweite Problem ist browserspezifisch und betrifft nicht die Leute, die mit Firefox oder Internet Explorer unterwegs sind, wohl aber die, die Opera, NetScape Navigator oder diverse ältere Browser benutzen. Alte Links wurden oft in einer Syntax angegeben, die auf "&#entry179255" o.ä. endete, was leider nicht von allen Browsern 1:1 an den Web-Server des Forums weitergereicht wird. Das führte dann dazu, daß der Server nicht alle angehängten Argumente in der Adresse verarbeiten kann und man zwar im richtigen Thread, aber eben nicht im richtigen Beitrag landet.
Aufbau der Foren-Links
Eine Syntax, die sich als kompatibel mit allen bisher getesteten Browsern erwiesen hat, ist die folgende:
http://www.mi-fo.de/forum/viewtopic.php?t=14816&view=findpost&p=179255
wobei "14816" ein Platzhalter für die ID des Themas (Thread/Topic) ist und "179255" durch die ID des jeweiligen Beitrags (Posting/Entry) ersetzt werden muß.
Und wie findet man die zugehörige Thread-ID und Posting-ID heraus? Ganz einfach: Durchsucht einfach den Link in der Adreß- bzw. Statuszeile Eures Browsers nach den entsprechenden Argumenten. Thread-IDs werden mit "showtopic=", "&t=" oder "&tid=" eingeleitet, Posting-IDs mit "&p=", "&pid=", "&gopid=" oder "#entry".
Links in dieser Syntax werden generiert, wenn Ihr z.B. rechts oben in der Ecke eines jeden Beitrags auf "Beitrag #" klickt. Diese Links kann man dann per Copy & Paste speichern und im Beitragseditor manuell - oder komfortabler über den Knopf "Hyperlink einfügen" - in den aktuellen Beitrag einfügen. (Unter Windows und vielen anderen Systemen geht das z.B. mit STRG+C und STRG+V oder über die rechte Maustaste.) Das funktioniert allerdings generell nur für die, die JavaScript aktiviert haben (wovon ich Euch aus Sicherheitsgründen eigentlich eher abraten möchte). Für die, die lieber ohne JavaScript arbeiten wollen, ist das viel zu tippen.
EDIT: Alternativ dazu steht seit dem 2007-04-Update der Foren-Software auch offiziell die Möglichkeit zur Verfügung, einfach den Link unter diesem "Beitrag #" mittels rechter Maustaste und "Link kopieren" in die Zwischenablage zu kopieren (eine Änderung, die Invision auf unsere Anregung hin in die Software eingebaut hat - wir hatten die Software schon länger entsprechend gepatcht.)
Es gibt auch noch ein paar Vereinfachungen:
Makros
Je nachdem, wieviel Einfluß Ihr auf das Ergebnis nehmen wollt, ist der ein oder andere der folgenden Tips mehr oder weniger gut für Euch geeignet.
Zunächst einmal gibt es ein paar spezielle Makros, die im Moment des Speicherns im Editor bestimmte Zeichenketten expandieren. Gespeichert wird der expandierte Text, d.h., wenn Ihr später Euren Beitrag revidiert, werdet Ihr keine Spuren des Makros mehr vorfinden und habt volle Kontrolle über jedes einzelne Zeichen. Derartige Makrofunktionen werden bei uns im Forum konventionsgemäß mit dem At-Zeichen ('@' eingerahmt, um Verwechslungen mit normalem Text zu vermeiden.
Hier die Liste der Makros und daneben der expandierte Text, der stattdessen gespeichert wird:
@#1@ --> http://www.mi-fo.de/forum/viewtopic.php?t=
@#2@ --> &view=findpost&p=
@*1@ --> [xlink="http://www.mi-fo.de/forum/viewtopic.php?t=
@*2@ --> &view=findpost&p=
@*3@ --> "]
@*4@ --> [/xlink]
Nebenbei: Bei der zweiten Gruppe Makros kommt ein sog. BBCode zum Einsatz - dazu weiter unten mehr. Das erste Set ist seiner Einfachheit halber in der Praxis wohl vorzuziehen.
Einen Link in der obigen Syntax kann man also mit deutlich weniger Tipparbeit wie folgt erzeugen:
Syntax:
@#1@Thread-ID@#2@Posting-ID
Beispiel:
@#1@14816@#2@179255 --> http://www.mi-fo.de/forum/index.ph...st&p=179255
Wollt Ihr statt des sichtbaren Links eine zusätzliche Umschreibung angeben, wird es etwas komplizierter:
Syntax:
@*1@Thread-ID@*2@Posting-ID@*3@Description@*4@
Beispiel:
@*1@14816@*2@179255@*3@Beispiel-Link@*4@ --> Beispiel-Link
BBCodes
Wer es einfacher haben will, kann auf spezielle sog. BBCodes (Bulletin Board Codes) ausweichen. Diese ähneln entfernt den Auszeichnungselementen von HTML und werden immer in eckige Klammern eingerahmt, um nicht mit normalem Text zu kollidieren. Im Gegensatz zu obigen Makros werden sie (mehr oder weniger) "so wie sie sind" gespeichert und erst beim Anzeigen des Beitrags von der Foren-Software vollständig interpretiert und expandiert. Damit gebt Ihr zwar einen Teil der Kontrolle über die Darstellung Eures Beitrags an die Foren-Software ab, müßt Euch dafür aber auch nur noch eine sehr einfache Syntax merken. Zudem würden solche Konstrukte zentral aktualisiert werden können, wenn sich später an der eigentlichen Syntax der Foren-Links (s.o.) wieder etwas ändern sollte. Diese BBCodes sind also generell sehr zu empfehlen. Für die hier diskutierten Zwecke dürften die folgenden BBCodes aus dem Repertoire der bei uns implementierten Codes die Einfachsten sein:
Bei den folgenden vier BBCodes (ohne vorangestelltes 'x' wird beim Klick auf den Link (in der Regel) kein neues Browser-Fenster geöffnet. Um zum alten Beitrag zurückzukommen, könnt Ihr einfach den Zurück-Knopf Eures Browsers benutzen.
Syntax:
[thread]Thread-ID[/thread]
[article]Posting-ID[/article]
[forum]Forum-ID[/forum]
Oder etwas komplizierter:
[topic="Thread-ID"]Description[/topic]
[post="Posting-ID"]Description[/post]
Beispiele:
[thread]14816[/thread] --> http://www.mi-fo.de/forum/viewtopic.php?t=14816
[article]179255[/article] --> http://www.mi-fo.de/forum/index.php?act=findpost&pid=179255
[forum]24[/forum] -> http://www.mi-fo.de/forum/viewforum.php?f=24
[topic="14816"]Verweis auf Thema A[/topic] --> Verweis auf Thema A
[post="179255"]Verweis auf Beitrag B[/post] --> Verweis auf Beitrag B
Bei den nachfolgenden vier BBCodes (mit vorangestelltem 'x' für "external" erfolgt beim Klick auf den Link die Darstellung (in der Regel) in einem neuen Browser-Fenster, so daß man schnell zwischen den Fenstern wechseln kann und nicht den Faden im alten Posting verliert. Abgesehen davon gleichen diese BBCodes den vier oben vorgestellten Codes.
Syntax:
[xthread]Thread-ID[/xthread]
[xarticle]Posting-ID[/xarticle]
Oder etwas komplizierter:
[xtopic="Thread-ID"]Description[/xtopic]
[xpost="Posting-ID"]Description[/xpost]
Beispiele:
[xthread]14816[/xthread] --> http://www.mi-fo.de/forum/viewtopic.php?t=14816
[xarticle]179255[/xarticle] --> http://www.mi-fo.de/forum/index.php?act=findpost&pid=179255
[xtopic="14816"]Verweis auf Thema A[/xtopic] --> Verweis auf Thema A
[xpost="179255"]Verweis auf Beitrag B[/xpost] --> Verweis auf Beitrag B
Für Sonderfälle gibt es noch zwei Codes zum Erzeugen von Links auf reduzierte Ansichten:
[thread-lofi]14816[/thread-lofi] --> http://www.mi-fo.de/forum/lofiversion/index.php/t14816.html
[forum-lofi]24[/forum-lofi] --> http://www.mi-fo.de/forum/lofiversion/index.php/f24.html
Soweit also das "Handwerkszeug" für das manuelle Erzeugen von Querverweisen.
Implizite Link-Umwandlung
Habt Ihr einen vollständigen Hyperlink (ob forenintern oder auf eine externe Ressource verweisend ist dafür unerheblich), den Ihr in einen Beitrag einbauen wollte, dann reicht es dafür in der Regel aus, dem Link ein "http://" voranzustellen. Beim Speichern werden solche Zeichenketten dann automatisch erkannt und mit dem BBCode ... eingerahmt. Das funktioniert sehr zuverlässig, solange der Link frei steht. Grenzt er unmittelbar an bestimmte Satzzeichen, dann kann es in Einzelfällen schon mal zu Problemen führen, so daß der Link nicht erkannt wird.
Halbautomatische Link-Konvertierung in alten Beiträgen
Es gibt aber auch eine Neuerung für die, die schon etwas länger dabei sind und deren alte Beiträge entweder noch die alte Syntax verwenden oder kaputte Links enthalten. Viele würden vielleicht gerne ihre alten Beiträge überarbeiten, kapitulieren aber schlicht vor der schieren Menge und dem nicht unerheblichen Aufwand, die Links manuell anzupassen. Selbst wenn es nur um die "Referenzartikel" geht, auf die immer wieder verwiesen wird, ist das manuell immer noch sehr viel Arbeit. Das geht jetzt deutlich einfacher:
Ihr braucht einfach nur noch in Euren alten Beitrag zu gehen (d.h. "EDITIEREN" drücken) und den Beitrag erneut abzuspeichern.
Wir haben einen Filter implementiert, der die allermeisten Formen alter Links erkennt und automatisch in die obige Form umwandelt. Wir können nicht garantieren, daß das immer funktioniert (deswegen haben wir das noch nicht automatisch über den gesamten Bestand alter Artikel laufen lassen), aber bisher haben wir kein real existierendes Beispiel gefunden, wo es nicht klappte, und umgekehrt auch kein Beispiel, wo ein Link dadurch "verstümmelt" wurde. Wenn Ihr auf solche Beispiele stoßt, gebt uns bitte Bescheid.
Ehe gleich das Geschrei losgeht: Wir sind uns bewußt, daß dies nur eine Teillösung für das Problem der "dangling pointers" darstellt, denn existierende externe Links (wie etwa von Google) werden auf diese Weise natürlich nicht angepaßt. Deshalb werden wir auch die potentielle Lösung über Apaches mod_rewrite Modul weiter verfolgen. Trotzdem wollten wir Euch diese Lösung, die ab sofort zur Verfügung steht, nicht länger vorenthalten.
Viel Spaß,
Matthias
PS. Vgl. auch:
http://www.mi-fo.de/forum/index.ph...st&p=150999
http://www.mi-fo.de/forum/index.ph...showtopic=11488
http://www.mi-fo.de/forum/index.ph...st&p=151370