Jump to content
Ethan

Visualizzare immagine da url esterno

Recommended Posts

Salve, se volessi visualizzare i prodotti da immagini presenti sul server del mio fornitore come dovrei fare? Dando un'occhiata veloce le immagini vengono caricate da prestashop rinominate e inseite nella cartella img/.
Purtroppo ho a che fare a un catalogo di circa 20000 prodotti con un file csv con anagrafica fornita dal mio fornitore e devo trovare per forza questa soluzione.
Avete un'idea da dove potrei cominciare a guardare il codice? Almeno un punto di partenza per sapere se è fattibile una modifica che faccia al caso mio.
(Tempo fà feci la stessa modifca con oscommerce)

Grazie
Ethan

Share this post


Link to post
Share on other sites

Ciao,
1) non credo che la cosa sia buona dal punto di vista di performance,
io preferisco utilizzare qualche script che si importi le immagini
2) x curiosità e in osc cosa ti hanno risposto? Hai risolto?
3) puntare alla directory del fornitore è semplice:
config.inc.php
define('_THEME_CAT_DIR_', __PS_BASE_URI__.'img/c/');

questo è il percorso dell'immagine

4) per il nome dell'immagine puoi prendere un campo che non usi e inserire il nome dell'immagine,
poi sostituisci la variabile nei tpl (product.tpl, product-list.tpl)

Buon lavoro

Share this post


Link to post
Share on other sites

Bhè sarebbe un lavoraccio per un database di 20000 articoli da scaricare una volta a settimana. Comunque l'ho fatto con oscommerce e devo dire che non ha rallentato così vistosamente. Il file config.inc.php l'ho già visto però ho tre fornitori diversi quindi procederò solamente con la modifica di questi altri due file che mi hai scritto appena li vedo passando direttamente l'url completo senza fare nessuna addizione di stringhe (spero... è solo teoria al momento).
Con oscommerce avevo proprio cambiato pezzi di codice alle pagine che producevano i listati dei prodotti e la pagina del prodotto ma ho fatto da me.

Vi farò sapere del risultato.

Grazie
Ethan

Share this post


Link to post
Share on other sites

Salve, ho trovato una mezza soluzione teorica...
Premetto che dispongo di 3 immagini (small, medium e large) per le immagini esterne che dovrei utilizzare per la pagina prodotto (large), per la lista dei prodotti (medium) e per eventuali box laterali (small).
Ho inserito 3 campi nella tabella ps_product_lang riferiti alle tre immagini dove inserisco l'URL completo.

Procedo con la pagina del prodotto: product.tpl
Ho trovato il seguente codice:


{if $have_image}
%7B$img_prod_dir%7D%7B$cover.id_image%7Dname|escape:'htmlall':'UTF-8'}"/>
{else}
%7B$img_prod_dir%7D%7B$lang_iso%7D-defauname|escape:'htmlall':'UTF-8'}" />
{/if}


la if verifica se ho caricato un'immagine. Se non è caricata mette quella di default (dopo l'else). Quindi mi viene automatico sfruttare la seconda parte di codice per inserire l'immagine esterna. Dovrei quindi inserire dopo src l'url preso dalla tabella ps_product_lang.
E' qui che non riesco ad andare avanti. Il problema è che non trovo la funzione che richiama con una query la suddetta tabella per potere inserire anche quei campi.
Ho provato a crearla ma se inserivo la variabile nel src non mi spuntava nulla. La query è:

$image_full = mysql_fetch_row(mysql_query ("SELECT link_image_full FROM ps_product_lang WHERE id_product = '$product->id' and id_lang = 3"))

poi inserisco $image_full[0] nel campo src però mi ritorna poi visualizzato src="".
se eseguo un echo di $image_full[0] mi ritorna in qualche punto della pagina l'url quindi la query è esatta.

La query l'ho inserita prima dell'if nel file product.tpl e non funziona. L'ho inserita nel file product.php e non funziona.

Ho effettuato anche un'altra prova. Ho visto che nel file product.tpl una chiamata a product->description_short che richiama il campo nella tabella ps_product_lang. Quindi ho inserito in questo campo l'url dell'immagine e poi ho inserito questa variabile nel campo src. Come immaginavo mi è comparsa l'immagine.

Quindi il problema stà solo nel far passare la variabile della query nel campo src....Qualcuno ha qualche idea?????

Grazie
Ethan

Share this post


Link to post
Share on other sites

Ciao, - scusa rispondo in maniera teorica ma dopo un we di 40 ore di lavoro non ho il tempo di provarlo -
allora il tuo problema mi sembra sia più di smarty che d'altro:

caso a) le variabili ci sono basta che nel tpl le richiami con {$product->nome_del_tuo_campo} e hai risolto

caso B)
1) metti la tua query nel product.php
2) la testi, ovvio
3) fai uno smarty->assign con la tua variabile (con la matrice)
4) richiami di là il tuo link,

caso c)
perfetto ma così non ti funziona a meno che tu non rifaccia tutta la query che richiama i prodotti.
l'unica soluzione "elegante" è di studiarti un pochino la classes/product.php e trovare la funzione che richiama
i prodotti, aggiungere i tuoi campi nella query a questo punto torni al punto a

Share this post


Link to post
Share on other sites

Grazie per la risposta... Allora per il caso a) avevo anche provato ma non funziona (probabilmente non viene richiamata tutta la tabella) quindi ho provato con la soluzione "elegante" del caso c). Ho visto tutte le funzioni che richiamavano la tabella product_lang e dove non richiamate ho inserito i campi che servivano a me. Però sicuramente devo andare a fare qualche altra modifica in qualche altro file perchè anche così l'src mi risulta vuoto.
Quindi al momento ho attuato il caso B) con uno smarty->assign e in questa maniera ho risolto il mio problema.
Sinceramente non conoscevo smarty e mi sono documentato su questo strumento. Ne avevo sentito parlare di questo nuovo metodo di programmazione ma non avevo approfondito.
Comunque per la pagina del prodotto ho risolto conservando anche il fatto che se dovessi inserire l'immagine manualmente non avrei nessun problema in quanto conservo la funzione if.
Procedo adesso con le pagine dove vengono listati i prodotti e poi i vari box dove sono inserite immagini del prodotto.

Grazie per l'aiuto
Ethan

Share this post


Link to post
Share on other sites

Complimenti,
non era semplicissimo,


ora, se ti capitasse di sviluppare qualche modulo, e hai voglia di condividerlo lo aspettiamo volentieri,
se invece sono moduli a pagamento puoi metterli in vendita su prestamodules.com

Share this post


Link to post
Share on other sites

Allora, non ho dei sorgenti ma ho fatto modifiche qua e là dei file tpl che mi occorreva visualizzare.
Ho dapprima creato tre nuovi campi nella tabella ps_product_lang per inserire le immagini grande, media e piccola. Poi nella cartella classes ci sono dei file da modificare come nel file Product.php e anche Category.php dove ci sono le query che si eseguono quando si cercano i prodotti da visualizzare. Ho semplicemente aggiunto nella riga SELECT i campi da richiamare (pl.link_image_full, pl.link_image_med e pl.link_image_sml) dove si richiamava la tabella ps_product_lang.
Infine nei file .tpl nella riga dovè il codice che visualizza l'immagine ho inserito la condizione che se il campo dove inserisco i link alle immagini non è vuoto visualizza l'immagine esterna altrimenti quella immessa manualmente.
Per farti un esempio nel file product-list alla voce img src="... troverò

{if $product.link_image_med}{$product.link_image_med}{else}{$img_prod_dir}{$product.id_image}-medium.jpg{/if}

dipende che immagini hai ti conviene bloccare l'altezza con height

I file più importanti da modificare sono product.tpl e product-list.tpl poi dipende dai vari moduli installati e visualizzati che mettono le immagini del prodotto

Se hai bisogno di qualcos'altro sono sempre qui.
ciao

Share this post


Link to post
Share on other sites

Ciao Ethan, un problema nuovo mi si è presentato, sono arrivato a oltre 20000 prodotti e la visualizzazione delle pagine dettaglio prodotti è lentissima circa 60 sec. Ho visto il tuo sito ed è veloce che hosting o server utilizzi?
Grazie

Share this post


Link to post
Share on other sites

salve, mi intrometto nella discussione perchè dovrei creare una query che prenda i dati in una taabella creata da me nel database di prestashop ma non so come richiamare tale query nel file product.tpl

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More