Jump to content
xt:Commerce Community Forum

Abfrage ob Artikelbild vorhanden


MBS

Recommended Posts

Hallo ich habe noch ein Problem welches der Kunde gelöst haben möchte!

Es werden die Artikel per csv importiert. Normalerweise gibt es zu jedem Artikel immer ein Artikelbild. In der csv wird dieses gleich mit angegeben. Artikelbildname entspricht Artikelnummer.

Soweit so gut nun kann es sein das der Lieferung einige Bilder vergisst oder zu einigen Artikeln keine Bilder hat.

Jetzt steht in der Datenbank zu diesem Artikel ein Artikelbild welches physikalisch aber nicht existiert.

Dementsprechend kommt ein rotes x und der Artikellink in der Shopübersicht was sehr unschön aussieht!

Wie kann ich abfragen das Veyton überprüft ob ein Artikelbild physikalisch vorhanden ist und wenn dies nicht der Fall ist ein NoImage.gif anzeigt!

Bitte um Unterstützung und bedanke mich dafür sehr herzlich!

Mit freundlichen Grüßen,

Michael Hofmann

MISA Business Solutions

Link to comment
Share on other sites

hi,

das geht mit einer kleinen php-Routine. Problem ist aber, dass die Blider i.d.Regel über das {img}-Tag aufgerufen werden mit der Bildklasse m_org,_info,_thumb usw. In der 14 ist die function.img.php offen und man könnte das direkt dort einbauen. Alternativ könnte man das bereits beim Import abfangen und prüfen, ob im Verzeichnis /media/images/org ein Bild dieses Namens vorhanden ist und wenn nicht, noimage.gif eintragen.Das funktioniert natürlich nur dan, wenn zuerst die vorhandenen Bilder hochgeladen werden und dann der Import gestartet wird.

Es könnte allerdings schon diese Mimik reichen:

{assign var=image value=$products_image}
{php}
$image = $this->get_template_vars('image');
$file=fopen(_SRV_WEBROOT."media/images/org/".str_replace("product:","",$image),"r");
{ if ( !$file )
$image = "noimage.gif";
else
$image = $image;
$this->assign('image',$image);
{/php}
[/HTML]

und dann weiter z.B.:

[HTML]<a href="{$products_link}">
{img img=$image type=m_info class=productImageBorder alt=$products_name|escape:"html"}
{* auskommentiert img img=$products_image type=m_info class=productImageBorder alt=$products_name|escape:"html"*}
</a>
[/HTML]

bzw. im Listing:

[HTML]{assign var=image value=$module_data.products_image}
{php}
$image = $this->get_template_vars('image');
$file=fopen(_SRV_WEBROOT."media/images/org/".str_replace("product:","",$image),"r");
{ if ( !$file )
$image = "noimage.gif";
else
$image = $image;
$this->assign('image',$image);
{/php}[/HTML]

und dann weiter z.B.:

[HTML]<a href="{$module_data.products_link}">
{img img=$image type=m_info class=productImageBorder alt=$module_data.products_name|escape:"html"}
{* auskommentiert img img=$module_data.products_image type=m_info class=productImageBorder alt=$module_data.products_name|escape:"html"*}
</a>[/HTML]

Grüsse

Link to comment
Share on other sites

Hallo oldbear,

hätte dies in der Testumgebung gerade einmal umsetzen wollen und hätte dazu eine Frage:

{assign var=image value=$module_data.products_image}

{php}

$image = $this->get_template_vars('image');

$file=fopen(_SRV_WEBROOT."media/images/org/".str_replace("product:","",$image),"r");

{ if ( !$file )

$image = "noimage.gif";

else

$image = $image;

$this->assign('image',$image);

{/php}

Soll dies in der product_listing_v1.html integriert werden?

Weil wenn ich das mache dann zerschießt es mir den Shop. Soll heißen ich bekomme nur noch eine weiße leere Seite!

Link to comment
Share on other sites

sorry,

Tippfehler:

{assign var=image value=$module_data.products_image}

{php}

$image = $this->get_template_vars('image');

$file=fopen(_SRV_WEBROOT."media/images/org/".str_replace("product:","",$image),"r");

if ( !$file )

$image = "noimage.gif";

else

$image = $image;

$this->assign('image',$image);

{/php}

( geschweifte Klammer vor dem "if" )

Link to comment
Share on other sites

Danke Dir und sorry das habe ich auch nicht gesehen bzw. mein Editor hat die geschwungene Klammer welche zuviel war auch nicht angemeckert.

Einen Tip bräuchte ich noch welche Möglichkeit habe ich mir die Variablen anzeigen zu lassen?

ein echo $file oder echo $image bringen mir nichts zur Ansicht.

Habe den Code eingebaut und nun werden gar keine Produktbilder angezeigt, stattdessen bei jedem Artikel der Produktbildbezeichner (alt)

Jetzt wollte ich nachsehen was die Variablen $files und $image überhaupt zugewiesen bekommen!

Danke Dir

Link to comment
Share on other sites

hi

{assign var=image value=$module_data.products_image}
{php}
$image = $this->get_template_vars('image');

// hier muesste sowas angezeigt werden: product:1771_hazel_blk.jpg
echo $image;

$file=fopen(_SRV_WEBROOT."media/images/org/".str_replace("product:","",$image),"r");

// hier muesste sows ankommen, falls das Bild existiert:
// Resource id #346product:1771_hazel_blk.jpg
// falls nicht, ist $file vom Wert false

echo $file;

if ( !$file )
$image = "noimage.gif";
else
$image = $image;

$this->assign('image',$image);
{/php}[/HTML]

Link to comment
Share on other sites

Hallo und danke aber {debug} hat mir leider die Inhalte der selbstgesetzten Variablen nicht angezeigt.

Habe aber auch schon den Fehler gefunden!

Ich dachte ich muss den PHP-Teil ganz oben ins Listing geben, dass funktionierte jedoch nicht. Erst als ich die PHP-Abfrage direkt ins <div id="produktlisting"> gegeben hatte funktionierte die Abfrage.

Und oldbear, danke danke danke es funktioniert so tadellos! Ich bekomme nun das noimage.gif angezeigt.

Muss es nur noch für die product.html genauso handhaben und die Anforderung des Kunden ist erfüllt!

Seltsam finde ich jedoch das es so eine Routine nicht standardmäßig gibt denn ich denke mal die Konstellation wie bei meinem Kunden mit Massenimport der Artikeldaten und Bilddaten haben sicherlich mehrere User!

P.S. oldbear kannst Du mir zufällig ein gutes PHP-Buch empfehlen, es soviele und vielleicht hast Du ja selbst hier einen Liebling

LG

Michael

Link to comment
Share on other sites

@oldbear

ich bräuchte nochmals Deine Hilfe denn in der products.html erhalte ich nach einfügen des php-codes auch einen weißen bildschirm.

Verstehe jedoch nicht was hier anders sein soll.

Eventuell liegt es an der Templatedatei die sich etwas von der Originalen unterscheidet!

Ich habe mir erlaubt die entsprechende Datei anzuhängen vielleicht kannst Du mal einen Blick drauf werfen.

Ich danke Dir recht herzlich!

product.html

Link to comment
Share on other sites

@oldbear

es funktioniert jetzt. Nur verstehen tu ich es nicht.

Ich wollte die Originalzeile:

<div id="productinfoimages"><a rel="gallery" href="{img img=$image type=m_popup path_only=true}" class="thickbox">{img img=$image type=m_info alt=$products_name|escape:"html"}</a></div> {/if}

<!-- zeilencode -->

auskommentieren, wie Du in meinem Anhang sehen kannst.

Aber irgendwie scheint das der Browser nicht zu funktionieren.

Wenn ich das auskommentieren weg lasse funktioniert es.

in der product_listing_v1.html habe ich es auch auskommentiert und dort stört es den Browser nicht!

verstehe ich nicht!

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
  • Create New...