MakeLink

für die Liste aller Seiten

Administratoren (Fortgeschritten), Entwickler

Diese Seite beschreibt eine interne Funktion in PmWikis Maschine namens MakeLink(). Der Inhalt ist nichts für Jene mit einem schwachen Herzen.

Siehe auch: Funktionen

Syntax:   MakeLink($pagename, $target, $text, $suffix, $fmt)

Die Funktion MakeLink($pagename, $target, $text, $suffix, $fmt) gibt einen String zurück, der HTML-Kode für einen Verweis enthält, entsprechend dem übergebenen Ziel, Text und Format. Die vornehmliche Aufgabe dieser Funktion ist, Textauszeichnungen wie

[[<text> -> <target>]]

und

[[<target> | <text>]]

in den passenden HTML-Kode umzusetzen.

Die Parameter haben die folgende Bedeutung:

  • $Pagename — ein String mit dem Namen des Seitenkontextes, in dem der Verweis erzeugt wurde, typischerweise ist das einfach der Name der aktuellen Seite. Zum Beispiel könnte $pagename "Gruppe.EineSeite" sein.
  • $target — ein String mit dem Ziel, d.nbsp;h. <target> in dem Textauszeichnungsbeispiel oben. Zum Beispiel könnte $target "EineSeite" sein, die sich auf <aktuelle-Gruppe>/EineSeite bezieht.
  • $text — ein String mit dem gewünschten Verweistext, d.nbsp;h. <text> in dem Textauszeichnungsbeispiel oben. Wenn $text NULL ist oder nicht angegeben ist, wird der Verweistext automatisch aus $target erzeugt, vorher wird alles in Klammern gesetzte entfernt.
  • $suffix — ein String, der an den Verweistext angehängt wird. Zum Beispiel, die Auszeichnung [[install]]iert würde MakeLink() mit "iert" als $suffix aufrufen.
  • $fmt — ein Formatstring, der den HTML-Kode definiert, der erzeugt wird. Wenn $fmt NULL ist oder nicht angegeben ist, wird das Standardformat verwendet, das durch den Typ des Verweises gegeben ist.
Innerhalb des Formatstrings wird der Text "$LinkUrl" ersetzt durch den aufgelösten URL für den Verweis, während der Text "$LinkText" durch den zugehörigen Text ersetzt wird. Schließlich wird der Text "$LinkAlt" ersetzt durch alle "title"-Informationen (alternativer Text), die mit dem Verweise zusammenhängen.
Wie wird ein alternativer Text im Markup-Format angegeben?https://www.pmwiki.org/wiki/PmWikiDe/Images

Beispiele

Hier sind einige Beispiele zum Gebrauch von MakeLink().

Aufruf:MakeLink($pagename, "EineSeite")
Ergebnis:"<a href='.../Gruppe/EineSeite'>EineSeite</a>"
 
Aufruf:MakeLink($pagename, "(Eine) Seite")
Ergebnis:"<a href='.../Gruppe/EineSeite'> Seite</a>"
 
Aufruf:MakeLink($pagename, "Eine Seite", "mehr Text")
Ergebnis:"<a href='.../Gruppe/EineSeite'>mehr Text</a>"
 
Aufruf:MakeLink($pagename, "Attach:datei.doc", "mehr Text")
Ergebnis:"<a href='.../uploads/Group/datei.doc'>mehr Text</a>"
 
Aufruf:MakeLink($pagename, "eine seite", "mehr Text", "-suffix")
Ergebnis:"<a href='.../Gruppe/EineSeite'>mehr Text-suffix</a>"
 
Aufruf:MakeLink($pagename, "install(ation)", NULL, "iert")
Ergebnis:"<a href='.../Gruppe/Installation'>installiert</a>"
 
Aufruf:MakeLink($pagename, $pagename, "EineSeite", '', '', "<a href='.../\$LinkUrl'>\$LinkText</a>")
Ergebnis:"<a href='.../Gruppe/EineSeite'>EineSeite</a>"
 
Aufruf:MakeLink($pagename, "Attach:foo.gif", '', '', $ImgTagFmt)
Ergebnis:"<img src='.../uploads/foo.gif' alt='' />"

Fragen und Antworten

Woher kennt MakeLink() den Verweistyp?

Das Array $LinkFunctions enthält eine Liste von Präfixen, die es erkennt, und aufzurufende Unterprogramm, die aufgerufen werden, wenn $target diesen Präfix enthält. Die Standardsetzungen von $LinkFunctions sehen etwa so aus:

   $LinkFunctions['http:'] = 'LinkIMap';
   $LinkFunctions['https:'] = 'LinkIMap';
   $LinkFunctions['mailto:'] = 'LinkIMap';
   # ...

Dadurch wird jedes Ziel, das wie ein Url aussieht, mit Hilfe der LinkIMap()-Funktion erzeugt. Für Anhänge haben wir

$LinkFunctions['Attach:'] = 'LinkUpload';

das die LinkUpload()-Funktion aufruft, die Verweise für Anhänge behandelt.

Wenn $target nicht auf das Muster einer der Präfixe in $LinkFunktions passt, nimmt MakeLink an, das Ziel ist ein Seitenname und es benutzt den Eintrag in $LinkFunktions['<page>'], der standardmäßig die LinkPage()-Funktion aufruft.

Danach ist es an der per-target-Funktion herauszubekommen, wie der Verweis korrekt zu formatieren ist. Jede Target-Funktion hat ihren eigenen Satz von $...Fmt-Variablen, die das Formatieren des Ziels kontrollieren, aber wenn MakeLink() ein Wert für $fmt übergeben wird, ist die Funktion gehalten, dieses Format anstelle des eingebauten Standards einzusetzen. So sind wir in der Lage, Inline-Bilder einzufügen (siehe die "img"-Regel in scripts/stdmarkup.php), genauso wie wir MakeLink() nutzen können, um an andere Items des resulierenden Zielverweises heranzukommen.

Warum entfernt MakeLink() Klammern von dem Ziel?

Siehe Links#othertext, Link-Text innerhalb von (Klammern) wird nicht angezeigt, sodass [[(wiki) sandbox]] zu WikiSandbox führt, aber als sandbox angezeigt wird. für Adressen, die tatsächlich Klammern enthalten, benutzen Sie %28 und %29 https://www.example.com/linkwith%28parenthese%29. --Petko

Kategorie: PmWikiInternals für die Liste aller Seiten


Übersetzung von PmWiki.MakeLink,   Originalseite auf PmWikiDe.MakeLink   —   Rückverweise

Zuletzt geändert:   PmWikiDe.MakeLinkam 27.09.2024
 PmWiki.MakeLinkam 26.09.2024