Mediawiki/Erweiterung/IconLink: Unterschied zwischen den Versionen
Michi (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Michi (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
(16 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
Fügt den zusätzlichen Tag "#iconlink" hinzu, der das Favicon der betreffenden Website vor jeden externen | Fügt den zusätzlichen Tag "#iconlink" hinzu, der das [[Favicon]] der betreffenden Website vor jeden externen [[URL]] setzt und auch innerhalb von Vorlagen verwendet werden kann. | ||
== Installation == | == Installation == | ||
Zeile 106: | Zeile 106: | ||
$html .= "<img class='iconlink' src='$icon' width='$width' height='$height' />"; | $html .= "<img class='iconlink' src='$icon' width='$width' height='$height' />"; | ||
} | } | ||
$html .= "$description</a>"; | $html .= " $description</a>"; | ||
return $parser->insertStripItem($html, $parser->mStripState); | return $parser->insertStripItem($html, $parser->mStripState); | ||
Zeile 114: | Zeile 114: | ||
|} | |} | ||
4. Anpassung der Rechte. | 4. Die folgenden Anpassungen in der Datei "extensions/IconLink/IconLink.code.php" beheben zwei Probleme: | ||
* Im Originalskript wird nur unter "<i>Domainname</i>/favicon.ico" nach einem Favicon gesucht. | |||
* Nun wird ein (selbst hergestelltes, unsichtbares) Icon angezeigt, wenn die betreffende Seite selber keine "favicon.ico"-Datei zur Verfügung stellt. Natürlich muss ausserdem die Bilddatei "images/favicon_transparent.gif" erstellt werden (im Mikiwiki eine 1x1 Pixel grosse Datei mit transparentem Hintergrund). So stehen die Weblinks mit und ohne Favicon immer linksbündig untereinander. | |||
{| class=wiki width=100% | |||
| | |||
<source lang=php enclose=div> | |||
... | |||
if ($iconExists) { | |||
$html .= "<img class='iconlink' src='$icon' width='$width' height='$height' />"; | |||
} | |||
if (! $iconExists) { | |||
$html .= "<img class='iconlink' src='/mikiwiki/images/favicon_transparent.gif' width='16' height='16' />"; | |||
} | |||
$html .= " $description</a>"; | |||
... | |||
?> | |||
</source> | |||
|} | |||
5. Anpassung der Rechte. | |||
# <b>chown wiki:wiki extensions/IconLink/IconLink.php</b> | # <b>chown wiki:wiki extensions/IconLink/IconLink.php</b> | ||
# <b>chown wiki:wiki extensions/IconLink/IconLink.code.php</b> | # <b>chown wiki:wiki extensions/IconLink/IconLink.code.php</b> | ||
6. Einfügen der folgenden Zeile in die Datei "LocalSettings.php". | |||
## Extension: IconLink | ## Extension: IconLink | ||
require_once("$IP/extensions/IconLink/IconLink.php"); | require_once("$IP/extensions/IconLink/IconLink.php"); | ||
== | == Syntax == | ||
Der folgende Code erzeugt einen | Der folgende Code erzeugt einen [[Hyperlink]], vor dem das [[Favicon]] der betreffenden Website angezeigt wird. | ||
<pre class=wiki> | <pre class=wiki> | ||
Zeile 133: | Zeile 154: | ||
wobei | wobei | ||
* <b>url</b> der URL ist, wohin ein Hyperlink erzeugt werden soll. | * <b>url</b> der [[URL]] ist, wohin ein Hyperlink erzeugt werden soll. | ||
* <b>description</b> ist der Text, der anstelle des URL anzuzeigen ist (optional). | * <b>description</b> ist der Text, der anstelle des URL anzuzeigen ist (optional). | ||
* <b>icon</b> ist der URL einer Bilddatei, die links vom Hyperlink anzuzeigen ist (optional); wird diese Angabe weggelassen, so wird das [[Favicon]] der Website angezeigt, zu der verlinkt wird. | * <b>icon</b> ist der URL einer Bilddatei, die links vom Hyperlink anzuzeigen ist (optional); wird diese Angabe weggelassen, so wird das [[Favicon]] der Website angezeigt, zu der verlinkt wird. | ||
* <b>width</b> und <b>height</b> bestimmen die Ausmasse der Icon-Datei (beide optional); werden diese Angaben weggelassen, so wird die Icon-Datei eine Grösse von 16x16 Pixel haben. | * <b>width</b> und <b>height</b> bestimmen die Ausmasse der Icon-Datei (beide optional); werden diese Angaben weggelassen, so wird die Icon-Datei eine Grösse von 16x16 Pixel haben. | ||
== Verwendung == | |||
Der folgende Code | |||
<pre class=wiki> | |||
* {{#iconlink: http://www.allocine.fr/ | Allocine}} | |||
</pre> | |||
erzeugt die folgende Zeile: | |||
* {{#iconlink: http://www.allocine.fr/ | Allocine}} | * {{#iconlink: http://www.allocine.fr/ | Allocine}} | ||
== FAQ == | |||
=== Unklarheiten === | |||
In meinen mit der "[[Vorlage:Weblinks]]" erzeugten Linklisten, sind die folgenden beiden URLs linksbündig mit dem Tabellenrand, anstatt, dass Platz für ein (unsichtbares) Favicon bleibt: | |||
* http://www.thoughtpolice.co.uk/favicon.ico - erzeugt eine Seite (deren Quelltext nicht angesehen werden kann) mit dem Text "<nowiki>http://www.thoughtpolice.co.uk/favicon.ico</nowiki>" | |||
* http://www.linuxhaven.de/favicon.ico - erzeugt eine Seite (deren Quelltext angesehen werden kann) mit dem Text "Not Found. The requested URL /favicon.ico was not found on this server." | |||
== Weblinks == | == Weblinks == | ||
{{Weblinks}} | |||
{{url_mediawiki|Extension:IconLink|Extension:IconLink}} | |||
{{Fuss}} | |||
{{cat|Favicon}} | {{cat|Favicon}} | ||
{{cat|Mediawiki}} | {{cat|Mediawiki}} |
Aktuelle Version vom 7. Februar 2010, 15:51 Uhr
Fügt den zusätzlichen Tag "#iconlink" hinzu, der das Favicon der betreffenden Website vor jeden externen URL setzt und auch innerhalb von Vorlagen verwendet werden kann.
Installation
1. Anlegen des Verzeichnisses "extensions/IconLink".
# mkdir extensions/IconLink # chown wiki:wiki extensions/IconLink
2. Anlegen der Datei "extensions/FaviconLink.php" und Einfügen des folgenden PHP-Codes: IconLink 0.1 (2008-03-11).
# vi extensions/IconLink/IconLink.php
<?php
#
# IconLink extension for MediaWiki
#
# Installation:
# create a new directory extensions/IconLink and copy all files there
# add the following to LocalSettings.php:
# require_once( "extensions/IconLink/IconLink.php" );
#
# Usage:
# {{#iconlink: url | description | icon | width | height}}
# where
# - url is the URL you want to create a link to
# - description is the text to show instead of the URL (optional)
# - icon is the URL of the image to show before the link (optional)
# if omitted, the favicon of the site you're linking is shown
# - width and height define the dimensions of the icon (both optional)
# if omitted, the icon will have a size of 16x16 pixels
#
if(! defined('MEDIAWIKI')) {
die("This is a MediaWiki extension and can not be used standalone.\n");
}
$wgExtensionCredits['parserhook'][] = array(
'name' => 'IconLink',
'description' => 'Prepends an icon to a link.',
'version' => '0.1',
'author' => 'Robert Hänel'
);
require_once('IconLink.code.php');
$wgExtensionFunctions[] = "wfIconLinkSetup";
$wgHooks['LanguageGetMagic'][] = 'wfIconLinkMagic';
function wfIconLinkSetup() {
global $wgParser;
$wgParser->setFunctionHook('iconlink', 'wfIconLinkRender');
}
function wfIconLinkMagic( &$magicWords, $langCode ) {
$magicWords['iconlink'] = array(0, 'iconlink');
return true;
}
?>
|
3. Anlegen der Datei "extensions/FaviconLink.php" und Einfügen des folgenden PHP-Codes: IconLink 0.1 (2008-03-11).
# vi extensions/IconLink/IconLink.code.php
<?php
function wfIconLinkRender(&$parser, $url = '', $description = '', $icon = '', $width = 16, $height = 16) {
if (empty($url)) {
return '';
}
$url = htmlspecialchars($url);
if (empty($description)) {
$description = $url;
}
$description = htmlspecialchars($description);
if (empty($icon)) {
# extract the first part of the URL (up until the host name) and append
# the name of the favicon file
$regex = '|^(http(s)?://[^/]+)|i';
preg_match($regex, $url, $result);
$icon = $result[0] . '/favicon.ico';
}
$icon = htmlspecialchars($icon);
if (! ctype_digit($width)) {
$width = 16;
}
if (! ctype_digit($height)) {
$height = 16;
}
# check the http return code after trying to access the icon file
# if it is 200 the file exists
$headers = @get_headers($icon);
$iconExists = (preg_match("|200|", $headers[0]) != 0);
$html = "<a href='$url'>";
if ($iconExists) {
$html .= "<img class='iconlink' src='$icon' width='$width' height='$height' />";
}
$html .= " $description</a>";
return $parser->insertStripItem($html, $parser->mStripState);
}
?>
|
4. Die folgenden Anpassungen in der Datei "extensions/IconLink/IconLink.code.php" beheben zwei Probleme:
- Im Originalskript wird nur unter "Domainname/favicon.ico" nach einem Favicon gesucht.
- Nun wird ein (selbst hergestelltes, unsichtbares) Icon angezeigt, wenn die betreffende Seite selber keine "favicon.ico"-Datei zur Verfügung stellt. Natürlich muss ausserdem die Bilddatei "images/favicon_transparent.gif" erstellt werden (im Mikiwiki eine 1x1 Pixel grosse Datei mit transparentem Hintergrund). So stehen die Weblinks mit und ohne Favicon immer linksbündig untereinander.
...
if ($iconExists) {
$html .= "<img class='iconlink' src='$icon' width='$width' height='$height' />";
}
if (! $iconExists) {
$html .= "<img class='iconlink' src='/mikiwiki/images/favicon_transparent.gif' width='16' height='16' />";
}
$html .= " $description</a>";
...
?>
|
5. Anpassung der Rechte.
# chown wiki:wiki extensions/IconLink/IconLink.php # chown wiki:wiki extensions/IconLink/IconLink.code.php
6. Einfügen der folgenden Zeile in die Datei "LocalSettings.php".
## Extension: IconLink require_once("$IP/extensions/IconLink/IconLink.php");
Syntax
Der folgende Code erzeugt einen Hyperlink, vor dem das Favicon der betreffenden Website angezeigt wird.
{{#iconlink: url | description | icon | width | height}}
wobei
- url der URL ist, wohin ein Hyperlink erzeugt werden soll.
- description ist der Text, der anstelle des URL anzuzeigen ist (optional).
- icon ist der URL einer Bilddatei, die links vom Hyperlink anzuzeigen ist (optional); wird diese Angabe weggelassen, so wird das Favicon der Website angezeigt, zu der verlinkt wird.
- width und height bestimmen die Ausmasse der Icon-Datei (beide optional); werden diese Angaben weggelassen, so wird die Icon-Datei eine Grösse von 16x16 Pixel haben.
Verwendung
Der folgende Code
* {{#iconlink: http://www.allocine.fr/ | Allocine}}
erzeugt die folgende Zeile:
- {{#iconlink: http://www.allocine.fr/ | Allocine}}
FAQ
Unklarheiten
In meinen mit der "Vorlage:Weblinks" erzeugten Linklisten, sind die folgenden beiden URLs linksbündig mit dem Tabellenrand, anstatt, dass Platz für ein (unsichtbares) Favicon bleibt:
- http://www.thoughtpolice.co.uk/favicon.ico - erzeugt eine Seite (deren Quelltext nicht angesehen werden kann) mit dem Text "http://www.thoughtpolice.co.uk/favicon.ico"
- http://www.linuxhaven.de/favicon.ico - erzeugt eine Seite (deren Quelltext angesehen werden kann) mit dem Text "Not Found. The requested URL /favicon.ico was not found on this server."
Weblinks
Herausgeber | Sprache | Webseitentitel | Anmerkungen |
---|---|---|---|
Mediawiki | eng | Extension:IconLinkwbm | Enzyklopädischer Artikel |