De:Bildnachweis mit PAXPHP
From phpCMS
Frage: Wie erstelle ich einen automatischen Bildnachweis?
Antwort: von Samson (20.06.2005)
[edit] Einführung
Aufmerksame Redakteure bringen am Ende eines Artikels weiterführende Informationen wie Links oder Quellennachweise unter. Mittels DynaTags habe ich einen komfortablen Bildnachweis realisiert. Dieser Bildnachweis aktualisiert sich automatisch, sobald Bilder entfernt, hinzugefügt oder geändert werden. Damit das funktioniert, muß nicht nur der Bildnachweis, sondern auch das Bild selbst über DynaTags eingefügt werden.
Nachfolgend ein Screenshot eines Bildnachweises. Man beachte, dass Bild 2 nicht in der Liste steht:
Der Quelltext in der Contentdatei sieht wie folgt aus:
<BILDIMTEXT "Bild1.jpg|Bild 1 mit Nachweis|||Foto vom Stülpner, Karl"> <BILDIMTEXT "Bild2.jpg|Bild 2 ohne Nachweis"> <BILDIMTEXT "Bild3.jpg|Bild 3 mit Nachweis|||Foto aus JWD"> <BILDIMTEXT "Bild4.jpg|Bild 4 mit Nachweis|||Quarantäne-Foto"> <BILDNACHWEIS>
[edit] Das DynaTag <BILDIMTEXT>
Das DynaTag <BILDIMTEXT> erwartet fünf Parameter und gestattet eine flexible Grafikeinbindung. Wahlweise kann Text unterhalb der Grafik angezeigt werden. Dieser wird auch als Alternativtext benutzt, welcher im Beispiel über das Javascript Overlib angezeigt wird. Liegt ein großes Bild vor, werden dessen Abmessungen ermittelt und ein Popuplink zu diesem Bild generiert. Text, der dem DynaTag folgt, umfließt das DynaTag rechts. Soll der nachfolgende Text das DynaTag links umfließen, muß beim vierten Parameter "right" angegeben werden.
Und nun das Besondere: Der Text für den Bildnachweis wird zwischengespeichert, aber nicht angezeigt. Für die Anzeige ist das DynaTag <BILDNACHWEIS> zuständig ! Das ist aber noch nicht alles. Zum zweiten Parameter (der Text unter dem Bild) wird die laufende Nummer des Bildnachweises hinzugefügt. Liegt kein Text für den Bildnachweis vor, wird auch keine Nummer angezeigt. Doch hier erst einmal die Parameter vom DynaTag <BILDIMTEXT>:
- 1.Parameter: URL zum Bild
- 2.Parameter: Text unter dem Bild (optional)
- 3.Parameter: URL zu einer Großansicht des Bildes (optional)
- 4.Parameter: Ausrichtung (optional, default = left)
- 5.Parameter: Text für den Bildnachweis (optional)
Hier der Quellcode:
<BILDIMTEXT "$url|$titel|$bigimage|$ausrichtung|$bildnachweis"> :=
<!-- PAXPHP bildimtext
if (!$GLOBALS[myTagVars][_BILDIMTEXT][ccounter]) $GLOBALS[myTagVars]
[_BILDIMTEXT][ccounter] = 0;
$url = $GLOBALS[myTagVars][_BILDIMTEXT][$GLOBALS[myTagVars]
[_BILDIMTEXT][ccounter]][_url];
$titel = $GLOBALS[myTagVars][_BILDIMTEXT][$GLOBALS[myTagVars]
[_BILDIMTEXT][ccounter]][_titel];
$bigimage = $GLOBALS[myTagVars][_BILDIMTEXT][$GLOBALS[myTagVars]
[_BILDIMTEXT][ccounter]][_bigimage];
$ausrichtung = $GLOBALS[myTagVars][_BILDIMTEXT][$GLOBALS[myTagVars]
[_BILDIMTEXT][ccounter]][_ausrichtung];
$bildnachweis = $GLOBALS[myTagVars][_BILDIMTEXT][$GLOBALS[myTagVars]
[_BILDIMTEXT][ccounter]][_bildnachweis];
if(!$url) return; // Keine Grafikurl angegeben
if($bildnachweis) {
if (!$GLOBALS[myTagVars][_BILDNACHWEIS][ccounter]) $GLOBALS
[myTagVars][_BILDNACHWEIS][ccounter] = 0;
$GLOBALS[myTagVars][_BILDNACHWEIS][$GLOBALS[myTagVars]
[_BILDNACHWEIS][ccounter]] = $bildnachweis;
$GLOBALS[myTagVars][_BILDNACHWEIS][ccounter]++;
$bildnrview = '<B>['.$GLOBALS[myTagVars][_BILDNACHWEIS][ccounter].']</B> ';
}
else $bildnrview = "";
// Info zur großen Grafik holen
if($bigimage) {
if(substr($bigimage,0,1)=="/") $info = getimagesize($DOCUMENT_ROOT.$bigimage);
elseif(substr($bigimage,0,7)=="http://") $info = FALSE;
else $info = getimagesize($bigimage);
}
if($info) {
$breite = $info[0];
$hoehe = $info[1];
}
if($ausrichtung != "right") {
$ausrichtung = "left";
$left = 0;
$right = 7;
}
else {
$left = 7;
$right = 0;
}
$style = "float:$ausrichtung; margin-top:3px; margin-bottom:6px;
margin-left:".$left."px; margin-right:".$right."px;";
if($info && $titel && $bigimage)
$anzeige = "<a href=\"javascript:pop
('".$bigimage."','".$titel."',".$breite.",".$hoehe.")\" onfocus=\"if
(this.blur)this.blur()\" onmouseover=\"return overlib('$titel');\"
onmouseout=\"return nd();\"><img src=\"".$url."\"></a>";
elseif($info && !$titel && $bigimage)
$anzeige = "<a href=\"javascript:pop
('".$bigimage."','".$titel."',".$breite.",".$hoehe.")\" onfocus=\"if
(this.blur)this.blur()\"><img src=\"".$url."\"></a>";
elseif(!$bigimage && $titel)
$anzeige = "<img src=\"".$url."\" onmouseover=\"return overlib
('$titel');\" onmouseout=\"return nd();\">";
elseif(!$bigimage && !$titel)
$anzeige = "<img src=\"".$url."\">";
elseif(!$info && $titel)
$anzeige = "<img src=\"".$url."\" onmouseover=\"return overlib
('$titel');\" onmouseout=\"return nd();\">";
elseif(!$info && !$titel)
$anzeige = "<img src=\"".$url."\">";
echo '<div style="'.$style.'">';
echo '<table width="10" style="border:#B8B8B8 1px solid;"
cellpadding="0" cellspacing="0">';
echo ' <tr>';
echo ' <td>'.$anzeige.'</td>';
echo ' </tr>';
if($titel) {
echo ' <tr>';
echo ' <td style="background-color:#CDCDCD; padding:0px; font-
size:8pt; font-family:Verdana,Arial;">';
echo ' '.$bildnrview.$titel;
echo ' </td>';
echo ' </tr>';
}
echo '</table>';
echo '</div>';
$GLOBALS[myTagVars][_BILDIMTEXT][ccounter]++;
PAXPHP bildimtext -->
[edit] Das DynaTag <BILDNACHWEIS>
Es erwartet keine Parameter, sondern generiert nur die Bildnachweisliste. Alle Grafiken ohne Bildnachweis-Text werden dabei ignoriert.
Hinweis: Das DynaTag löscht nach der Ausgabe den internen Cache. Nachfolgende Bilder bleiben unberücksichtigt.
Hier der Quellcode:
<BILDNACHWEIS> :=
<!-- PAXPHP bildnachweis
if ($GLOBALS[myTagVars][_BILDNACHWEIS][ccounter]) {
// Bildnachweis ausgeben
echo '<p style="width:250px; padding:2px; border:#CDCDCD 1px solid;';
echo 'font-weight:normal; font-size:10pt; font-family:Verdana,Arial;';
echo ' background-color:#DDDDDD; color:#000000;">';
echo 'Bildverzeichnis';
echo '</p>';
echo '<p><table border="0">';
for($x=0;$x<$GLOBALS[myTagVars][_BILDNACHWEIS][ccounter];$x++){
echo '<tr><td valign="top" style="font-size:8pt;">[';
echo ($x+1);
echo ']</td><td valign="top" style="font-size:8pt;">';
echo $GLOBALS[myTagVars][_BILDNACHWEIS][$x];
echo '</td></tr>';
}
echo '</table></p>';
unset($GLOBALS[myTagVars][_BILDNACHWEIS]);
}
else echo "";
PAXPHP bildnachweis -->
Main Page: Tutorials MainPage | Top Page: De:MiniHowTos
This page in other languages: English


