Oggi è gio mar 28, 2024 10:06 am

Benvenuto!

Lo stato dell'Arte come software Open Source gratuito E-commerce.
 

Zen Cart Italia

Design - Personalizzazione

[RISOLTO] Quando img prodotto non ci sta

Supporto concernente queste attività

Moderatori: Sandro Carniel aka webmaster, Paolo De Dionigi aka Spike00

Re: Quando img prodotto non ci sta

Messaggioda brancasalvo » lun mag 06, 2013 11:36 am

Rieccomi ancora con lo stesso problema ma credo di aver fatto qualche piccolo passo in avanti.

Se realizzo una pagina html con il seguente codice:

Codice: Seleziona tutto
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento senza titolo</title>
</head>
<body>
<p>ciao a tutti prova di img con tag onerror</p>
<p>&nbsp;</p>
<p><img src="euro.jpg" onerror="this.src='vuoto.jpg'" /> </p>
</body>
</html>


Quando la foto euro.jpg non esiste allora mi sostituisce immediatamente l'immagine vuoto.jpg e funge su explorer, crome, firefox e opera su altri non ho provato.

per verificare il link della demo è il seguente:
http://www.longiweb.it/esempio.html

Adesso io vorrei fare la stessa cosa con le img dei prodotti di zencart che non esistono ed allora intervengo sul file:
includes\templates\miotemplate\templates\tpl_modules_main_product_image.php

e costruisco la seguente variabile:
$products_image_medium2 ="onerror=\"this.src='c:/vuoto.jpg'\" ";
$products_image_medium =$products_image_medium . " ". $products_image_medium2;

di modo tale che la seguente istruzione:
document.write('<?php echo '<a href="' . zen_lightbox($products_image_large, addslashes($products_name), LARGE_IMAGE_WIDTH, LARGE_IMAGE_HEIGHT) . '" rel="' . $rel . '" title="' . addslashes($products_name) . '">' . zen_image($products_image_medium , addslashes($products_name), MEDIUM_IMAGE_WIDTH, MEDIUM_IMAGE_HEIGHT) . '<br /><span class="imgLink">' . TEXT_CLICK_TO_ENLARGE . '</span></a>'; ?>');

che visualizza l'img mi visualizza l'img vuoto.jpg se tale img non esiste.

Il ragionamento sembra corretto ma evidentemente cè qualcosa che non va

Qualcuno mi darebbe un suggerimento?
brancasalvo
 
Messaggi: 174
Iscritto il: ven gen 27, 2012 12:06 pm

Re: Quando img prodotto non ci sta

Messaggioda brancasalvo » mar mag 07, 2013 4:21 pm

Problema risolto (ma non contento al 100%)
Allora, magari serve a qualcun'altro:
Quando qualcuno aggiorna gli articoli con file inviati da esterni e quest'ultimi per ogni articolo danno il link della relativa img anche se tale img non cè sul loro server e si vuol fare comparire una nostra img posta sul server dal nome no_img.jpg sia nella lista prodotti che nella scheda prodotti io ho fatto così:

a) Lista prodotti
Intervenire sul file includes\modules\product_listing.php e dalla riga 164 inserire il seguente codice:
Codice: Seleziona tutto
//Controlla se esiste l'img dell'articolo se non esiste gli mette una img classica di non esistenza img
               $verifica=$listing->fields['products_image'];                  
               $handle = @fopen("$verifica", "r");
               if(strpos($handle, "Resource id") !== false)
                  {
                     //echo "file esiste";
                     $lc_text = '<a href="' . zen_href_link(zen_get_info_page($listing->fields['products_id']), 'cPath=' . (($_GET['manufacturers_id'] > 0 and $_GET['filter_id']) > 0 ?  zen_get_generated_category_path_rev($_GET['filter_id']) : ($_GET['cPath'] > 0 ? zen_get_generated_category_path_rev($_GET['cPath']) : zen_get_generated_category_path_rev($listing->fields['master_categories_id']))) . '&products_id=' . $listing->fields['products_id']) . '">' . zen_image(DIR_WS_IMAGES . $listing->fields['products_image'], $listing->fields['products_name'], IMAGE_PRODUCT_LISTING_WIDTH, IMAGE_PRODUCT_LISTING_HEIGHT, 'class="listingProductImage"') . '</a>';

                  }
               else
                  {
                     //echo "file non esiste";
                     $lc_text = '<a href="' . zen_href_link(zen_get_info_page($listing->fields['products_id']), 'cPath=' . (($_GET['manufacturers_id'] > 0 and $_GET['filter_id']) > 0 ?  zen_get_generated_category_path_rev($_GET['filter_id']) : ($_GET['cPath'] > 0 ? zen_get_generated_category_path_rev($_GET['cPath']) : zen_get_generated_category_path_rev($listing->fields['master_categories_id']))) . '&products_id=' . $listing->fields['products_id']) . '">' . zen_image("no_foto.JPG", IMAGE_PRODUCT_LISTING_WIDTH, IMAGE_PRODUCT_LISTING_HEIGHT, 'class="listingProductImage"') . '</a>'; 
                     //$products_image_medium="no_foto.JPG";
                     //$products_image_large="no_foto.JPG";
                  }
                                 // FINE CONTROLLO ESISTENZA IMMAGINE



b) Scheda prodotto
Intervenire sul file: includes\templates\miotemplate\templates\tpl_modules_main_product_image.php

vi posto qui l'intero file di modo che possiate vedere le differenze con l'originale e intervenire di conseguenza:

Codice: Seleziona tutto
<?php
/**
 * Module Template
 *
 * @package templateSystem
 * @copyright Copyright 2003-2005 Zen Cart Development Team
 * @copyright Portions Copyright 2003 osCommerce
 * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0
 * @version $Id: tpl_modules_main_product_image.php 3208 2006-03-19 16:48:57Z birdbrain $
 */
?>
<?php require(DIR_WS_MODULES . zen_get_module_directory(FILENAME_MAIN_PRODUCT_IMAGE)); ?>
<div id="productMainImage" class="centeredContent back">
<?php // bof Zen Lightbox 2008-12-15 aclarke ?>
<?php
if (ZEN_LIGHTBOX_STATUS == 'true') {
  if (ZEN_LIGHTBOX_GALLERY_MODE == 'true' && ZEN_LIGHTBOX_GALLERY_MAIN_IMAGE == 'true') {
    $rel = 'lightbox-g';
  } else {
    $rel = 'lightbox';
  }
?>
<?php
                                 //Controlla se esiste l'img dell'articolo se non esiste gli mette una img classica di non esistenza img
$handle = @fopen("$products_image_medium", "r");
if(strpos($handle, "Resource id") !== false)
{
//echo "file esiste";
}
else
{
//echo "file non esiste";
$products_image_medium="no_foto.JPG";
$products_image_large="no_foto.JPG";
}
                                 // FINE CONTROLLO ESISTENZA IMMAGINE
?>


<script language="javascript" type="text/javascript"><!--
document.write('<?php echo '<a href="' . zen_lightbox($products_image_large, addslashes($products_name), LARGE_IMAGE_WIDTH, LARGE_IMAGE_HEIGHT) . '" rel="' . $rel . '" title="' . addslashes($products_name) . '">' . zen_image($products_image_medium, addslashes($products_name), MEDIUM_IMAGE_WIDTH, MEDIUM_IMAGE_HEIGHT) . '<br /><span class="imgLink">' . TEXT_CLICK_TO_ENLARGE . '</span></a>'; ?>');
//--></script>
<?php } else { ?>
<?php // eof Zen Lightbox 2008-12-15 aclarke ?>
<script language="javascript" type="text/javascript"><!--
document.write('<?php echo '<a href="javascript:popupWindow(\\\'' . zen_href_link(FILENAME_POPUP_IMAGE, 'pID=' . $_GET['products_id']) . '\\\')">' . zen_image($products_image_medium, addslashes($products_name), MEDIUM_IMAGE_WIDTH, MEDIUM_IMAGE_HEIGHT) . '<br /><span class="imgLink">' . TEXT_CLICK_TO_ENLARGE . '</span></a>'; ?>');
//--></script>
<?php // bof Zen Lightbox 2008-12-15 aclarke ?>
<?php } ?>
<?php // eof Zen Lightbox 2008-12-15 aclarke ?>
<noscript>
<?php
  echo '<a href="' . zen_href_link(FILENAME_POPUP_IMAGE, 'pID=' . $_GET['products_id']) . '" target="_blank">' . zen_image($products_image_medium, $products_name, MEDIUM_IMAGE_WIDTH, MEDIUM_IMAGE_HEIGHT) . '<br /><span class="imgLink">' . TEXT_CLICK_TO_ENLARGE . '</span></a>';
?>
</noscript>
</div>


Saluti a tutti.
brancasalvo
 
Messaggi: 174
Iscritto il: ven gen 27, 2012 12:06 pm

Re: [RISOLTO] Quando img prodotto non ci sta

Messaggioda Paolo De Dionigi aka Spike00 » mar mag 07, 2013 4:48 pm

Come avevo scritto in precedenza, per me sarebbe molto più efficiente fare un controllo simile mentre si processano gli inserimenti, così, se non esiste l'immagine, al suo posto nel db si fa caricare l'url dell'immagine di default. In questo modo il controllo lo fa una sola volta, appunto in fase di inserimento (o anche separatamente dall'inserimento, con uno script lanciato anche manualmente dopo aver processato gli inserimenti).
1)Studiare questo documento prima di fare una domanda: http://url.zen-cart.it/faq
2)CERCA CERCA CERCA CERCA CERCA!
Paolo De Dionigi aka Spike00
Site Admin
 
Messaggi: 1663
Iscritto il: mar feb 08, 2005 10:41 am
Località: Busto Arsizio (VA)

Re: [RISOLTO] Quando img prodotto non ci sta

Messaggioda brancasalvo » mar mag 07, 2013 10:53 pm

condivido appieno quello che dici ma comefarlo?
In questo momento non mi viene in mente nulla a tal proposito, anch'io volevo processare il tutto in fase di inserimento ma purtroppo nulla al momento non ci arrivo.

Ciao
brancasalvo
 
Messaggi: 174
Iscritto il: ven gen 27, 2012 12:06 pm

Precedente

Torna a Design - Personalizzazione

cron

Login

Real Time Analytics