Shopsystem ShopPilot
ShopPilot => SSP - Shop Server Pages => Thema gestartet von: dobra am Oktober 16, 2011, 11:27:06
-
Hallo,
Ich habe vom Verlag Bilder zur Verfügung gestellt bekommen, die nach dem EAN-Code benannt sind.
z.B. 9783772428449.jpg
Diese Bilder habe ich nach 2 Größen (Normal- und Zoomansicht) formatiert und auf den Server gelegt.
Im Shop habe ich die EAN-Codes der Artikel eingetragen.
Die Bilder binde ich jetzt so ein:
<!--spmacro:module(show)
sub lightboximg {
my $index = $_[0];
my $anzahl = $_[1];
if ($index <= $anzahl) {
my $ean = ssp::get_var_article("EAN",$index);
my $img = "http://www.woll-insel.at/TOPP/" . $ean . ".jpg";
my $zoom = "http://www.woll-insel.at/TOPP/zoom/" . $ean . ".jpg";
my $text = ssp::get_var_article("ARTNR",$index);
if (length($ean)) {
main::mprint qq|<img style="height: 100px; width: auto;margin-right:10px;" src="$img">
<div style="position:relative; margin-top: -22px;"><a href="$zoom" rel="lightbox[roadtrip]" title="$text">
<img style="width:20px; height: 20px;" src="../images/zoom.jpg" alt="zoom" border="0" /></a>
</div>|;
}
}
return 0;
}
-->
Das Problem ist jetzt, dass es zwar seeehr viele Bilder gibt die ich *nicht* brauche aber nicht alle Bilder - die ich brauche - zu allen Artikeln im Shop.
Der EAN-Code ist aber eingetragen was dann dazu führt, dass die Lightbox ewig nach solchen Bildern sucht aber sie nicht findet.
Die Bedingung
if (length($ean)) { }
nutz also in diesem Fall nichts sondern müsste
if (Bild ist am Server vorhanden) { }
sein.
Wie kann ich das abfragen?
-
google hat mir verraten wie's geht 8)
falls das mal jemand braucht
if (Bild ist am Server vorhanden) { ... } kann man so abfragen:
my $ua = LWP::UserAgent->new;
$ua->timeout(10);
$ua->env_proxy;
my $response = $ua->get($img);
if ($response->is_success) { ... }
Nachtrag: es funktioniert zwar - aber schadet scheinbar der Perfomance :(
Seintenaufbau stark verzögert
Gibt es eine bessere Möglichkeit?
-
Sollte so gehen:
if (-e("/TOPP/" . $ean . ".jpg")) {
## vorhanden
}
-
Hallo ahe,
funktioniert :D
(.... vorausgesetzt man verwendet den korrekten UNIX-Pfad ;) - Danke für den Hinweis)