Prüfen, ob Datei vorhanden ist, bevor die Anzeige im Magento-PHP?

Ich bin in der Lage, um die web-Pfad zu der Datei, etwa so:

$filename = 'elephant.jpg';
$path_to_file = $this->getSkinUrl('manufacturertab');
$full_path = $path_to_file . '/' . $filename;

Aber wenn die Datei nicht vorhanden ist, dann habe ich am Ende mit einem gebrochenen Bild-link.

Habe ich versucht, dieses:

if(!file_exists($full_path)) {
  Mage::log('File doesn\'t exist.');
} else {
  ?><img src="<?php echo $full_path ?>" /><?php
}

Natürlich, dass hat nicht funktioniert, weil file_exists funktioniert nicht auf urls.

Wie löse ich dieses?

1.)
Kann ich das übersetzen zwischen system-Pfade und web-urls in Magento?

z.B. so etwas wie (pseudocode):

$system_path = $this->getSystemPath('manufacturertab');

Sieht symmetrisch und tragbar.

bzw.
2.)
Gibt es irgendeine PHP-oder Magento-Funktion für die überprüfung der remote-Ressource Existenz? Aber das scheint eine Verschwendung, da die Ressource ist wirklich lokal. Es wäre dumm für PHP einen http-Methode zum prüfen einer lokalen Datei, wäre es nicht?

Lösung, die ich momentan verwende:

$system_path = Mage::getBaseDir('skin') . '/frontend/default/mytheme/manufacturertab'; //portable, but not pretty
$file_path = $system_path . '/' . $filename;

Ich dann prüfen, ob file_exists und wenn es funktioniert, zeige ich die img. Aber ich weiß nicht, wie die Asymmetrie zwischen hard-code-Teil ist der Pfad für den system-Pfad, und das mit einer Methode, die für den url-Pfad. Es wäre schön, eine Methode für beide.

Schreibe einen Kommentar