Squit Posted April 16, 2012 Share Posted April 16, 2012 (edited) Salve a tutti, ho un problema con lo script che mi ha mandato Trovaprezzi e che posto in allegato. Lo script genera un datafeed con URL immagini del prodotto errate. http://store.italian...op.php?langid=5 Riporto un record di esempio: Scarpe Vans CLASSIC SLIP-ON SPLATTER - Unisex|Vans|Scarpe Vans CLASSIC SLIP-ON SPLATTER - Unisex?||65|24.9|15|http://store.italianstreetstyle.com/skate/product.php?id_product=15|2|scarpe;scarpe donna;scarpe uomo|http://store.italianstreetstyle.com/skate/img/p/15-112-large.jpg|N/A|N/A Il link NON funzionante è il seguente: http://store.italian...5-112-large.jpg Link immagine corretto: http://store.italian...tter-unisex.jpg Problema analogo con lo script scaricato da ilpiubasso.it Versione Prestashop: 1.4.6.2 URL semplificati: abilitato Allego script TROVAPREZZI e script ILPIUBASSO trovaprezzi_italianstreetstyle_prestashop.zip prestashop-ilpiubasso.zip Edited May 13, 2012 by Squit (see edit history) Link to comment Share on other sites More sharing options...
Totti Posted April 27, 2012 Share Posted April 27, 2012 Hai risolto ? Link to comment Share on other sites More sharing options...
Squit Posted April 27, 2012 Author Share Posted April 27, 2012 No :-( Link to comment Share on other sites More sharing options...
Totti Posted May 8, 2012 Share Posted May 8, 2012 Non si muove nulla per trovaprezzi ? Link to comment Share on other sites More sharing options...
Squit Posted May 13, 2012 Author Share Posted May 13, 2012 Forse ho risolto. Posto la soluzione anche se è un pò spartana, comunque funziona se si usa l'URL-REWRITE (la riscrittura degli URL) Aprire il file PrestaShopCoreFunctions1_4_3.php che si trova all'interno della cartella EcommerceCore Alla riga 166, dentro la funzione GetProductImageUrl, copiare questo codice: $rewrite_infos = Product::getUrlRewriteInformations((int)$productId); foreach ($rewrite_infos AS $infos) { //if ($infos['id_lang'] == 'IT'){ $imageUrl = $infos['link_rewrite']; //} } $imageUrl = 'http://www.miodominio.com/' . $imageId . '/' . $imageUrl . '.jpg'; if ($this->UrlExists($imageUrl)) { return $imageUrl; } Naturalmente dovete sostituire "www.miodominio.com" con l'indirizzo del vostro sito web. Domani chiedo allo staff di Trovaprezzi di controllare il feed così prodotto e faccio sapere se va bene. Link to comment Share on other sites More sharing options...
Totti Posted May 14, 2012 Share Posted May 14, 2012 Allora la routine è questa : function GetProductImageUrl($baseUrl, $productId, $imageId) { $imageUrl = $this->GetImagesBaseUrl($baseUrl) . $productId . "-" . $imageId . "-large.jpg"; if ($this->UrlExists($imageUrl)) { return $imageUrl; } $imageUrl = $baseUrl . $productId . "-" . $imageId . "-large/" . $productId . "-" . $imageId . "-large.jpg"; if ($this->UrlExists($imageUrl)) { return $imageUrl; } $partialUrl = wordwrap($imageId, 1, "/", true); /*echo '<p>Partial url ' . $partialUrl . '</p>';*/ $imageUrl = $this->GetImagesBaseUrl($baseUrl) . $partialUrl . '/' . $imageId . "-large.jpg"; if ($this->UrlExists($imageUrl)) { return $imageUrl; } return ''; } A che punto bisogna metterlo il tuo codice ? Visto che ci siamo riusciamo a mettere la possibilità di scegliere i prodotti ? Link to comment Share on other sites More sharing options...
Squit Posted May 14, 2012 Author Share Posted May 14, 2012 Il codice va inserito dopo la prima parentesi graffa. Per la scelta dei prodotti non so che dirti, è già un miracolo che sia riuscito a modificare questo script, di PHP ci capisco ben poco. Spero solo che Trovaprezzi rilasci presto un modulo più aggiornato e funzionante anche con il MOD REWRITE Link to comment Share on other sites More sharing options...
Squit Posted May 14, 2012 Author Share Posted May 14, 2012 Poco fa mi hanno risposto da Trovaprezzi per comunicarmi che il datafeed prodotto dallo script è corretto. Spero solo che questo comparatore di prezzi ci aiuti ad incrementare le vendite :-) Link to comment Share on other sites More sharing options...
Totti Posted May 14, 2012 Share Posted May 14, 2012 Ma perchè questo script è stato fornito da loro ?? Intanto ti ringrazio, magari se qualcuno riesce a modificarlo per scegliere i prodotti sarebbe meglio, dato che mettere tutto i lcatalogo oltre che costare troppo è anche inutile. Link to comment Share on other sites More sharing options...
Squit Posted May 14, 2012 Author Share Posted May 14, 2012 Quando sottoscrivi il contratto con Trovaprezzi ti mandano lo script da inserire sul server del sito web. Tra l'altro ho fatto più volte presente che lo script non funzionava bene con PrestaShop (con la riscrittura degli URL) e mi hanno detto che dovevo modificarmelo da solo. Ripeto, spero solo che Trovaprezzi serva a qualcosa! Link to comment Share on other sites More sharing options...
Totti Posted May 14, 2012 Share Posted May 14, 2012 Ma davvero, eppure ie lo ho domandato e non mi hanno risposto dicendomi che non avevano nulla, valli a capire. Cmq sembra funzionare, l'unica cosa è che il link all'immagine del prodotto non funziona, mentre il link alla pagiona del prodotto si. Ma il link al prodotto e all'immagine prestashop come lo costruisce con l'urlrewrite ? Link to comment Share on other sites More sharing options...
Squit Posted May 14, 2012 Author Share Posted May 14, 2012 Lo script ce lo hanno mandato dopo aver firmato il contratto. Cmq puoi scaricarlo dal primo post. A me funziona anche il link all'immagine del prodotto: http://store.italianstreetstyle.com/skate/trovaprezzi_prestashop.php?langid=5 Link to comment Share on other sites More sharing options...
Totti Posted May 15, 2012 Share Posted May 15, 2012 Vorrei sapere se io mi voglio fare uno script esterno , come ricostruisco il link che rimanda al mio negozio di ciascun prodotto e la relativa immagine (dato che uso l'url rewrite). Link to comment Share on other sites More sharing options...
Squit Posted May 15, 2012 Author Share Posted May 15, 2012 Esterno a cosa? Vorresti tenere lo script su un server diverso da quello dove hai l'e-commerce prestashop? Link to comment Share on other sites More sharing options...
Totti Posted May 15, 2012 Share Posted May 15, 2012 Si esatto,essendo un programmatore dotnet, mi vorrei fare un programmino mio che crea il file e magari fa l'upload sul sito. Link to comment Share on other sites More sharing options...
Squit Posted May 15, 2012 Author Share Posted May 15, 2012 Non saprei se è possibile farlo Link to comment Share on other sites More sharing options...
Totti Posted May 16, 2012 Share Posted May 16, 2012 Perchè no ? L'accesso al db lo ho, il tracciato record di Trovaprezzi pure, mi manca sapere solo come ricreare il percorso delle immagini. Link to comment Share on other sites More sharing options...
Totti Posted May 16, 2012 Share Posted May 16, 2012 Ancora non mi funziona il link all'immagine del prodotto, per capirci quella che dovrebbe comparire vicino la descrizione di trovaprezzi. Link to comment Share on other sites More sharing options...
Squit Posted May 16, 2012 Author Share Posted May 16, 2012 Che versione usi di PrestaShop? Link to comment Share on other sites More sharing options...
Totti Posted May 16, 2012 Share Posted May 16, 2012 1.4.7 Link to comment Share on other sites More sharing options...
Totti Posted May 16, 2012 Share Posted May 16, 2012 Con la procedura automatica diretta dal sito mi va in errore. Link to comment Share on other sites More sharing options...
Totti Posted June 5, 2012 Share Posted June 5, 2012 Ma se io uso url rewrite per le immagini come faccio a ricostruirle per trovaprezzi ? Link to comment Share on other sites More sharing options...
maofree Posted July 20, 2012 Share Posted July 20, 2012 Ciao sto controllando lo script di trovaprezzi e quelli di altri comparatori per farci un modulo. Ogni consiglio e suggerimento è ben accetto. La modifica suggerita da Squit credo abbia dei problemi. Intanto quel codice dovrebbe essere presente anche nel file PrestaShopCoreFunctions.php se il sito fosse inserito in una cartella, questa dovrebbe essere inserita nell'url prova a sostituire: $imageUrl = 'http://www.miodominio.com/' . $imageId . '/' . $imageUrl . '.jpg'; con $imageUrl = $baseUrl . $imageId . '/' . $imageUrl . '.jpg'; Squit provalo e poi mi fai sapere se è ok ciao Link to comment Share on other sites More sharing options...
Squit Posted July 20, 2012 Author Share Posted July 20, 2012 Provato e funziona. Approfitto per comunicarvi che pubblicare i prodotti su ILPIUBASSO utilizzo lo script di Shopmania Link to comment Share on other sites More sharing options...
maofree Posted July 20, 2012 Share Posted July 20, 2012 ciao Squit ok bene ciao Link to comment Share on other sites More sharing options...
maofree Posted July 20, 2012 Share Posted July 20, 2012 di solito si utilizza getImageLink della classe Link per ottenere l'url dell'immagine del prodotto Link to comment Share on other sites More sharing options...
Squit Posted July 20, 2012 Author Share Posted July 20, 2012 Lo script di Shopmania si scarica direttamente dal loro sito web 1 Link to comment Share on other sites More sharing options...
Totti Posted July 23, 2012 Share Posted July 23, 2012 E se uno ci deve accedere da programmi esterni come faccio io ? Link to comment Share on other sites More sharing options...
Nanuk Posted July 31, 2012 Share Posted July 31, 2012 Ciao ragazzi, any news? Avete il modulo funzionante? Grazie! Link to comment Share on other sites More sharing options...
Squit Posted August 8, 2012 Author Share Posted August 8, 2012 (edited) Devi fare le modifiche indicate nei post precedenti Edited August 8, 2012 by Squit (see edit history) Link to comment Share on other sites More sharing options...
bert240 Posted September 10, 2012 Share Posted September 10, 2012 Salve a tutti voi. Sto usando questo script e con enorme piacere vi dico che funziona alla grande. Volevo soltato chiedervi se era possibile integrare il codice ean all'interno del file. Oltre al nome del prodotto il prezzo eccc.... oggi alcuni comparatori vogliono questo codice. Potreste gentilmente aiutarmi ? Grazie Link to comment Share on other sites More sharing options...
Squit Posted September 10, 2012 Author Share Posted September 10, 2012 Non mi sembra che TrovaPrezzi richieda il codice EAN Link to comment Share on other sites More sharing options...
bert240 Posted September 10, 2012 Share Posted September 10, 2012 Salve squit, no trovaprezzi NO ma altri come amazon o google si. Dato che lo script funziona bene volevo sapere se magari era possbile utilizzare lo stesso per estrarre anche il codice ean. Feazie Link to comment Share on other sites More sharing options...
Squit Posted September 10, 2012 Author Share Posted September 10, 2012 No, temo che quello script funzioni solo per TrovaPrezzi. Link to comment Share on other sites More sharing options...
bert240 Posted September 10, 2012 Share Posted September 10, 2012 Grazie lo stesso Alex per la tua risposta. Ne approfitto per chiederti se usi o conosci qualche altro script che permetta cio? GRAZIE Link to comment Share on other sites More sharing options...
Squit Posted September 10, 2012 Author Share Posted September 10, 2012 Per Amazon non credo che esista uno script per caricare i prodotti. Per Google Shopping ne esiste uno ma non funziona bene.Lo puoi scaricare da qui: http://www.ecartservice.net/free-prestashop-modules/prestashop-google-product-search/ Link to comment Share on other sites More sharing options...
bert240 Posted September 10, 2012 Share Posted September 10, 2012 Grazie, io ho provato sia Googlebase v0.7.3.5 che la versione 4 . Dopo averlo installato e cliccato su configura vado su genera cvs e mi compare una pagina bianca. Nulla più. Avevo provato anche questo modulo MOUSSIQ, bellissimo nella configurazione ma mi estrare soltanto i prodotti di uno dei fornitori anche se non ho capito come settare l'altro fornitore. Se riuscissi a cambiare il fornitore sarebbe perfetto. Ne sai qualcosa? lo conosci? Link to comment Share on other sites More sharing options...
Squit Posted September 10, 2012 Author Share Posted September 10, 2012 Per Google c'è questo a pagamento: http://addons.prestashop.com/it/seo-moduli-prestashop/1768-Google-Merchant-Center.html Sembra molto buono ed è pure certificato MOUSSIQ non lo conosco Link to comment Share on other sites More sharing options...
youpixel Posted September 14, 2012 Share Posted September 14, 2012 Salve , ho installato lo script su versione 1.4.8.2 funzione bene , ho solo dovuto modificare ID lingua nel file php della root principale. Per info e aiuto resto a disposizione. Saluti Link to comment Share on other sites More sharing options...
clm76 Posted November 26, 2012 Share Posted November 26, 2012 Ciao a tutti spero possiate aiutarmi. Devo inserire il mio catalogo su Trovaprezzi i quali non hanno ancora uno script compatibile con PS 1.5.2. Ho questo script che allego e i tecnici di Trovaprezzi mi dicono che devo risolvere questi 2 problemetti: - non funzionano i link alle immagini prodotto - manca http prima di www Voi saprete sicuramente risolvere e almeno avremo tutti lo script aggiornato Grazie a tutti. PS. scusate, non riesco ad allegare il file. Faccio copia e incolla di seguito: <?php // Debuging if (@$_GET['mode'] == "debug") { $time_start = microtime(true); $time = $time_start; } // Current datafeed script version $script_version = "1.37"; // Print current Script version if (@$_GET['get'] == "version") { echo "<b>Datafeed PrestaShop</b><br />"; echo "script version <b>" . $script_version . "</b><br />"; exit; } // Set no time limit only if php is not running in Safe Mod if (!ini_get("safe_mode")) { if (function_exists('set_time_limit')) { @set_time_limit(0); } if ((int)substr(ini_get("memory_limit"), 0, -1) < 512) { ini_set("memory_limit", "512M"); } } // Error reporting if (@$_GET['errors'] == "off") { // Turn off all error reporting error_reporting(0); } else { error_reporting(E_ALL^E_NOTICE); } ignore_user_abort(); $_SVR = array(); ##### Include configuration files ################################################ $site_base_path = "./"; # Once all is set up you need to check the result and make sure the output is correct # Point the browser to http://www.example.com/path_to_datafeed/shopmania_datafeed_prestashop.php and look into the source code of the out put # What you need to see is something like this # Category | Manufacturer | Part Number | Merchant Code | Product Name | Product Description | Product URL | Product Image URL | Product Price | Currency | Shipping value | Availability | GTIN (UPC/EAN/ISBN) //Avoid any modifications below this line // Include configuration file if(!file_exists($site_base_path . 'init.php')) { exit('<HTML><HEAD><TITLE>404 Not Found</TITLE></HEAD><BODY><H1>Not Found</H1>Please ensure that trovaprezzi.php is in the root directory, or make sure the path to the directory where the init.php file is located is defined corectly above in $site_base_path variable</BODY></HTML>'); } else { include($site_base_path . 'config/config.inc.php'); require_once($site_base_path . 'init.php'); } #################################################################### // Datafeed specific settings $datafeed_separator = "|"; // Possible options are \t or | ##### Extract params from url ################################################ $apply_taxes = (@$_GET['taxes'] == "off") ? "off" : "on"; $apply_storetaxes = (@$_GET['storetaxes'] == "off") ? "off" : "on"; $apply_discount = (@$_GET['discount'] == "off") ? "off" : "on"; $add_vat = (@$_GET['add_vat'] == "on") ? "on" : "off"; $vat_value = (@$_GET['vat_value'] > 0) ? ((100 + $_GET['vat_value']) / 100) : 1.24; // default value $add_shipping = (@$_GET['shipping'] == "on") ? "on" : "off"; $availability = (@$_GET['availability'] == "off") ? "off" : "on"; $gtin = (@$_GET['gtin'] == "off") ? "off" : "on"; $add_tagging = (@$_GET['add_tagging'] == "off") ? "off" : "on"; $tagging_params = (@$_GET['tagging_params'] != "") ? urldecode($_GET['tagging_params']) : "utm_source=trovaprezzi&utm_medium=cpc&utm_campaign=direct_link"; $show_description = (@$_GET['description'] == "off") ? "off" : ((@$_GET['description'] == "limited") ? "limited" : ((@$_GET['description'] == "short") ? "short" : ((@$_GET['description'] == "full") ? "full" : ((@$_GET['description'] == "full_limited") ? "full_limited" : ((@$_GET['description'] > 0) ? $_GET['description'] : "on"))))); $show_image = (@$_GET['image'] == "off" || @$_GET['images'] == "off") ? "off" : ((@$_GET['image'] == "v3" || @$_GET['images'] == "v3") ? "v3" : ((@$_GET['image'] == "v2" || @$_GET['images'] == "v2") ? "v2" : ((@$_GET['image'] == "v1" || @$_GET['images'] == "v1") ? "v1" : "on"))); $show_specialprice = (@$_GET['specialprice'] == "off") ? "off" : "on"; $sef = (@$_GET['sef'] == "on") ? "on" : ((@$_GET['sef'] == "v2") ? "v2" : "off"); $on_stock_only = (@$_GET['on_stock'] == "on") ? "on" : "off"; $available_for_order = (@$_GET['available_for_order'] == "off") ? "off" : "on"; $currency = (@$_GET['currency'] != "") ? $_GET['currency'] : ""; $currency_id = (@$_GET['currency_id'] != "") ? $_GET['currency_id'] : ""; $language_code = (@$_GET['language'] != "") ? $_GET['language'] : ""; $language_id = (@$_GET['language_id'] != "") ? $_GET['language_id'] : ""; $force_path = (@$_GET['forcepath'] == "on") ? "on" : "off"; $force_folder = (@$_GET['forcefolder'] != "") ? $_GET['forcefolder'] : ""; $limit = (@$_GET['limit'] != "") ? $_GET['limit'] : ""; $cookies = (@$_GET['cookies'] == "off") ? "off" : "on"; $default_cat = (@$_GET['default_cat'] == "on") ? "on" : "off"; $display_currency = (@$_GET['display_currency'] != "") ? $_GET['display_currency'] : ""; $version = (@$_GET['version'] > 0) ? $_GET['version'] : ""; // default value #################################################################### $base_dir = "http://" . htmlspecialchars($_SERVER['HTTP_HOST'], ENT_COMPAT, "UTF-8") . __PS_BASE_URI__; $base_image_dir = "http://" . htmlspecialchars($_SERVER['HTTP_HOST'], ENT_COMPAT, "UTF-8") . _THEME_PROD_DIR_; // Get allow out of stock ordering value 1 - yes / 0 - no $allow_out_of_stock_ordering = (int)(Configuration::get('PS_ORDER_OUT_OF_STOCK')); // Get stock management condition $enable_stock_management = (int)(Configuration::get('PS_STOCK_MANAGEMENT')); // Print URL options if (@$_GET['get'] == "options") { $script_basepath = "http://" . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']; echo "<b>Datafeed PrestaShop</b><br />"; echo "PrestaShop version <b>" . _PS_VERSION_ . "</b><br />"; echo "script version <b>" . $script_version . "</b><br /><br /><br />"; //echo "Taxes options - possible values on, off default value on<br />"; //echo "taxes=on (on,off) <a href=\"" . $script_basepath . "?taxes=off" . "\" >" . $script_basepath . "?taxes=off" . "</a><br /><br />"; //echo "Store taxes options - possible values on, off default value on<br />"; //echo "storetaxes = on (on,off) <a href=\"" . $script_basepath . "?storetaxes=off" . "\" >" . $script_basepath . "?storetaxes=off" . "</a><br /><br />"; //echo "Discount options - possible values on, off default value on<br />"; //echo "discount=on (on,off) <a href=\"" . $script_basepath . "?discount=off" . "\" >" . $script_basepath . "?discount=off" . "</a><br /><br />"; echo "<b>Add VAT to prices</b> - possible values on, off default value off<br />"; echo "add_vat=off (on,off) <a href=\"" . $script_basepath . "?add_vat=on" . "\" >" . $script_basepath . "?add_vat=on" . "</a><br /><br />"; echo "<b>VAT value</b> - possible values percent value default value 24 - interger or float number ex 19 or 19.5<br />"; echo "vat_value=24 (VAT_VALUE) <a href=\"" . $script_basepath . "?add_vat=on&vat_value=19" . "\" >" . $script_basepath . "?add_vat=on&vat_value=19" . "</a><br /><br />"; echo "<b>Add shipping to datafeed</b> - possible values on, off default value off - works for a limited number of products (2500-3000)<br />"; echo "shipping=off (on,off) <a href=\"" . $script_basepath . "?shipping=on" . "\" >" . $script_basepath . "?shipping=on" . "</a><br /><br />"; echo "<b>Add availability to datafeed</b> - possible values on, off default value on<br />"; echo "availability=on (on,off) <a href=\"" . $script_basepath . "?availability=off" . "\" >" . $script_basepath . "?availability=off" . "</a><br /><br />"; echo "<b>Show only products available for order</b> - possible values on, off default value on<br />"; echo "available_for_order=on (on,off) <a href=\"" . $script_basepath . "?available_for_order=off" . "\" >" . $script_basepath . "?available_for_order=off" . "</a><br /><br />"; echo "<b>Add GTIN to datafeed</b> - possible values on, off default value on<br />"; echo "gtin=on (on,off) <a href=\"" . $script_basepath . "?gtin=off" . "\" >" . $script_basepath . "?gtin=off" . "</a><br /><br />"; echo "<b>Add GA Tagging to product URL</b> - possible values on, off default value on<br />"; echo "add_tagging=on (on,off) <a href=\"" . $script_basepath . "?add_tagging=off" . "\" >" . $script_basepath . "?add_tagging=off" . "</a><br /><br />"; echo "<b>Add custom tagging to product URL</b> - possible values url_encode(TAGGING_PARAMS) default value tagging_params=utm_source=trovaprezzi&utm_medium=cpc&utm_campaign=direct_link<br />"; echo "tagging_params=utm_source=trovaprezzi&utm_medium=cpc&utm_campaign=direct_link (TAGGING_PARAMS) <a href=\"" . $script_basepath . "?tagging_params=from%3Dtrovaprezzi" . "\" >" . $script_basepath . "?tagging_params=from%3Dtrovaprezzi" . "</a><br /><br />"; echo "<b>Display Description options</b> - possible values on, off, short, full, limited, full_limited, char_limit (integer) default value on<br />"; echo "<ul><li><b>description=off</b> - do not display descriptions<br/ > <a href=\"" . $script_basepath . "?description=off" . "\" >" . $script_basepath . "?description=off" . "</a></li>"; echo "<li><b>description=short</b> - display short descriptions<br/ > <a href=\"" . $script_basepath . "?description=short" . "\" >" . $script_basepath . "?description=short" . "</a></li>"; echo "<li><b>description=full</b> - display full descriptions (short description + description)<br/ > <a href=\"" . $script_basepath . "?description=full" . "\" >" . $script_basepath . "?description=full" . "</a></li>"; echo "<li><b>description=limited</b> - display limited descriptions (descriptions limited to 300 chars)<br/ > <a href=\"" . $script_basepath . "?description=limited" . "\" >" . $script_basepath . "?description=limited" . "</a></li>"; echo "<li><b>description=full_limited</b> - display full descriptions (short description + description) limited to 300 chars<br/ > <a href=\"" . $script_basepath . "?description=full_limited" . "\" >" . $script_basepath . "?description=full_limited" . "</a></li>"; echo "<li><b>description=char_limit</b> - display limited description to char_limit characters <br/ > <a href=\"" . $script_basepath . "?description=500" . "\" >" . $script_basepath . "?description=500" . "</a></li></ul>"; echo "<b>Display image options</b> - possible values on, off, v2, v3 default value on(v3) both image and images parameter can be used<br />"; echo "<ul><li><b>images=off</b> - do not display images<br/ > <a href=\"" . $script_basepath . "?images=off" . "\" >" . $script_basepath . "?images=off" . "</a></li>"; echo "<li><b>images=v1</b> - /prod_id-image_id/seo_keyword.jpg<br/ > <a href=\"" . $script_basepath . "?images=v1" . "\" >" . $script_basepath . "?images=v1" . "</a></li>"; echo "<li><b>images=v2</b> - /image_id/seo_keyword.jpg<br/ > <a href=\"" . $script_basepath . "?images=v2" . "\" >" . $script_basepath . "?images=v2" . "</a></li>"; echo "<li><b>images=v3</b> - img/p/x/y/z/xyz.jpg <br/ > <a href=\"" . $script_basepath . "?images=v3" . "\" >" . $script_basepath . "?images=v3" . "</a></li></ul>"; //echo "Special price options - possible values on, off default value on<br />"; //echo "specialprice=on (on,off) <a href=\"" . $script_basepath . "?specialprice=off" . "\" >" . $script_basepath . "?specialprice=off" . "</a><br /><br />"; echo "<b>Show only on stock products</b> - possible values on, off default value off<br />"; echo "on_stock=off (on,off) <a href=\"" . $script_basepath . "?on_stock=on" . "\" >" . $script_basepath . "?on_stock=on" . "</a><br /><br />"; echo "<b>Show SEO friendly url</b> - possible values on, off default value off<br />"; echo "sef=off (on,off,v2) <ul><li><a href=\"" . $script_basepath . "?sef=on" . "\" >" . $script_basepath . "?sef=on" . "</a></li> <li><a href=\"" . $script_basepath . "?sef=v2" . "\" >" . $script_basepath . "?sef=v2" . "</a> (used in prestashop versions 1.4.1 or higher)</li></ul>"; echo "<b>Get prices in specified currency</b> - possible values USD,EUR etc. <br />"; echo "currency=DEFAULT_CURRENCY <a href=\"" . $script_basepath . "?currency=EUR" . "\" >" . $script_basepath . "?currency=EUR" . "</a><br /><br />"; echo "<b>Get prices in specified currency id</b> - possible values 1,2 etc. <br />"; echo "currency_id=DEFAULT_CURRENCY_ID <a href=\"" . $script_basepath . "?currency_id=1" . "\" >" . $script_basepath . "?currency_id=1" . "</a><br /><br />"; echo "<b>Get texts in specified language code</b> - possible values en,ro etc. <br />"; echo "language=DEFAULT_LANGUAGE_CODE <a href=\"" . $script_basepath . "?language=en" . "\" >" . $script_basepath . "?language=en" . "</a><br /><br />"; echo "<b>Get texts in specified language id</b> - possible values 1,2 etc. <br />"; echo "language_id=DEFAULT_LANGUAGE_ID <a href=\"" . $script_basepath . "?language_id=1" . "\" >" . $script_basepath . "?language_id=1" . "</a><br /><br />"; echo "<b>Limit displayed products</b> - possible values integer (start,step)<br />"; echo "limit=no_limit <a href=\"" . $script_basepath . "?limit=0,10" . "\" >" . $script_basepath . "?limit=0,10" . "</a><br /><br />"; echo "<b>Use cookies</b> - possible values on, off default value on - used to rewrite language and currency cookies with selected values when displaing in certain language or currency<br />"; echo "cookies=on (on,off) <a href=\"" . $script_basepath . "?cookies=off" . "\" >" . $script_basepath . "?cookies=off" . "</a><br /><br />"; echo "<b>Use default categories</b> - use products default category possible values on, off default value off<br />"; echo "default_cat=off (on,off) <a href=\"" . $script_basepath . "?default_cat=on" . "\" >" . $script_basepath . "?default_cat=on" . "</a><br /><br />"; echo "<b>Display currency code</b> - force the display of certain currency code possible values USD,EUR etc. <br />"; echo "display_currency=DEFAULT_CURRENCY <a href=\"" . $script_basepath . "?display_currency=EUR" . "\" >" . $script_basepath . "?display_currency=EUR" . "</a><br /><br />"; echo "<b>Force compatibility version</b> - possible values 140, 150 etc. <br />"; echo "version=PS_INSTALL_VERSION <a href=\"" . $script_basepath . "?version=140" . "\" >" . $script_basepath . "?version=140" . "</a><br />"; echo "version=PS_INSTALL_VERSION <a href=\"" . $script_basepath . "?version=150" . "\" >" . $script_basepath . "?version=150" . "</a><br /><br />"; echo "<b>Error reporting </b> - display errors - values on, off default value on<br />"; echo "errors=on (on,off) <a href=\"" . $script_basepath . "?errors=off" . "\" >" . $script_basepath . "?errors=off" . "</a><br /><br />"; echo "<br />"; exit; } ##### Extract options from database ################################################ // Get prestashop version $ps_installed_version = _PS_VERSION_; $ps_version = ($version > 0) ? $version : (int)substr(str_replace(".", "", $ps_installed_version), 0, 3); // Get default currency $res_default_currency = Db::getInstance()->ExecuteS('SELECT * FROM `'._DB_PREFIX_.'configuration` WHERE name = "PS_CURRENCY_DEFAULT"'); $default_currency_id = ($res_default_currency[0]['value'] > 0) ? $res_default_currency[0]['value'] : 1; // Use selected currency id if ($currency_id > 0) { $res_currency = Db::getInstance()->ExecuteS("SELECT * FROM " . _DB_PREFIX_ . "currency WHERE id_currency = '" . addslashes($currency_id) . "'"); $CURRENCY['id_currency'] = $res_currency[0]['id_currency']; $CURRENCY['iso_code'] = $res_currency[0]['iso_code']; $CURRENCY['conversion_rate'] = $res_currency[0]['conversion_rate']; unset($res_currency); } elseif ($currency != "") { // Use selected currency code $res_currency = Db::getInstance()->ExecuteS("SELECT * FROM " . _DB_PREFIX_ . "currency WHERE iso_code = '" . addslashes($currency) . "' AND deleted = 0"); $CURRENCY['id_currency'] = $res_currency[0]['id_currency']; $CURRENCY['iso_code'] = $res_currency[0]['iso_code']; $CURRENCY['conversion_rate'] = $res_currency[0]['conversion_rate']; $CURRENCY['conversion_rate'] = ($CURRENCY['conversion_rate'] > 0) ? $CURRENCY['conversion_rate'] : 1; } else { $res_currency = Db::getInstance()->ExecuteS("SELECT * FROM " . _DB_PREFIX_ . "currency WHERE id_currency = '" . addslashes($default_currency_id) . "'"); $CURRENCY['id_currency'] = $res_currency[0]['id_currency']; $CURRENCY['iso_code'] = $res_currency[0]['iso_code']; $CURRENCY['conversion_rate'] = 1; unset($res_default_currency); unset($res_currency); } $CURRENCY['iso_code'] = (trim(strtolower($CURRENCY['iso_code'])) == "lei" || trim(strtolower($CURRENCY['iso_code'])) == "ro") ? "RON" : $CURRENCY['iso_code']; // Force displayed currency $datafeed_currency = ($display_currency != "") ? $display_currency : $CURRENCY['iso_code']; // Get lang id if ($language_id > 0) { // Set the main language $main_language = $language_id; } elseif ($language_code != "") { // Detect specified language ID $res_language_id = Db::getInstance()->ExecuteS("SELECT id_lang FROM " . _DB_PREFIX_ . "lang WHERE iso_code = '" . addslashes($language_code) . "'"); // Set the main language $main_language = $res_language_id[0]['id_lang']; $main_language_code = $language_code; } else { // Detect default language ID $res_default_lang = Db::getInstance()->ExecuteS('SELECT * FROM `'._DB_PREFIX_.'configuration` WHERE name = "PS_LANG_DEFAULT"'); $main_language = ($res_default_lang[0]['value'] > 0) ? $res_default_lang[0]['value'] : 1; $default_lang = $main_language; } // Detect specified language ID $language_code_res = Db::getInstance()->ExecuteS("SELECT iso_code FROM " . _DB_PREFIX_ . "lang WHERE id_lang = '" . addslashes($main_language) . "'"); // Get main language_code $main_language_code = $language_code_res[0]['iso_code']; // Rewrite cookies with selected values if ($cookies == "on") { // Set main language $cookie->id_lang = $main_language; // Rewrite currency cookie with selected value $cookie->id_currency = $default_currency_id; } // Add shopping cart if ($add_shipping == "on") { global $cart; $cart->add(); } // Build limit filter if ($limit != "") { $limit_arr = explode(",", $limit); if ((int)$limit_arr[0] >= 0 && (int)$limit_arr[1] > 0) { $_start = $limit_arr[0]; $_step = $limit_arr[1]; } elseif((int)$limit_arr[0] > 0) { $_start = 0; $_step = $limit_arr[0]; } } $available_for_order_cond = ($available_for_order == "on") ? " AND p.available_for_order=1" : ""; if ($default_cat == "on") { } else { $JOIN_PROD_CAT = "LEFT JOIN " . _DB_PREFIX_ . "category_product ON " . _DB_PREFIX_ . "category_product.id_product = p.id_product LEFT JOIN " . _DB_PREFIX_ . "category c ON " . _DB_PREFIX_ . "category_product.id_category = c.id_category LEFT JOIN " . _DB_PREFIX_ . "category_group cg ON " . _DB_PREFIX_ . "category_product.id_category = cg.id_category"; $cat_prod_fields = ", " . _DB_PREFIX_ . "category_product.id_category"; $cat_prod_cond = "AND c.active=1 AND cg.id_group=1"; $cat_prod_aux = ", id_category DESC"; } if ($enable_stock_management == 1) { if ($on_stock_only == "on") { $stock_cond = " AND quantity > 0"; } /*elseif ($allow_out_of_stock_ordering == 1) { $stock_cond = "AND (quantity >= 0 AND out_of_stock > 0)"; } else { $stock_cond = "AND (quantity > 0 OR (quantity='0' AND out_of_stock='1'))"; }*/ } else { // All products are in stock $stock_cond = ""; } // Debuging if (@$_GET['mode'] == "debug") { // Get prod stats $res_prod_stats = Db::getInstance()->ExecuteS("SELECT COUNT(if(p.active='1', 1, NULL)) AS active_products, COUNT(*) AS total_products " . " FROM " . _DB_PREFIX_ . "product p " . $JOIN_PROD_CAT); echo "Active products: " . $res_prod_stats[0]['active_products'] . "\n"; echo "Total products: " . $res_prod_stats[0]['total_products'] . "\n\n"; // Init prod count $cnt_prod = 0; } ###################################################################### ##### Extract products from database ############################################### $q = "SELECT p.id_product" . $cat_prod_fields . " FROM " . _DB_PREFIX_ . "product p " . $JOIN_PROD_CAT . " WHERE p.active=1 " . $cat_prod_cond . $stock_cond . $available_for_order_cond . " ORDER BY p.id_product ASC" . $cat_prod_aux; if ($ps_version >= 150) { // Extract product id, category id $r = Db::getInstance()->query($q); } else { $r = @mysql_query($q); } ################################################################### ##### Print product data #################################################### $current_id = 0; $prod_count = 0; if ($ps_version >= 150) { while ($field = Db::getInstance()->nextRow($r)) { // If we've sent this one, skip the rest - this is to ensure that we do not get duplicate products $prod_id = $field['id_product']; if ($current_id == $prod_id) { continue; } else { $current_id = $prod_id; } // Get product data $product = new Product(intval($field['id_product']), true, intval($main_language)); // For links $link = new Link(); $item = array(); $item['product_id'] = $product->id; $item['manufacturer_name'] = $product->manufacturer_name; $item['name'] = $product->name; $item['link_rewrite'] = $product->link_rewrite; $item['image'] = $product->getCover($product->id); $item['mpn'] = $product->reference; // Get default image url $item['image_url'] = $link->getImageLink($product->link_rewrite, $item['product_id'] . "-" . $item['image']['id_image'], 'large'); $item['price'] = floatval(trim($product->getPrice(true, NULL, 2))); $item['price'] = $item['price'] * $CURRENCY['conversion_rate']; // Add VAT to prices if ($add_vat == "on") { $item['price'] = $item['price'] * $vat_value; } if ($default_cat == "on") { $item['cat_name'] = Tools::getPath($product->id_category_default, ''); } elseif ($field['id_category'] > 0) { $item['cat_name'] = Tools::getPath($field['id_category'], ''); } else { $category = new Category($product->id_category_default, intval($main_language)); $item['cat_name'] = (isset($category->id) AND $category->id) ? Tools::getPath($category->id, '') : Tools::getPath($product->id_category_default, ''); } $item['cat_name'] = trim(smfeed_html_to_text($item['cat_name'])); // Clean product name (new lines) $item['name'] = str_replace("\n", "", strip_tags($item['name'])); $item['description'] = ""; // Limit description size if ($show_description == "limited" || $show_description == "full_limited" || $show_description > 0) { $item['description'] = ($show_description == "limited" || $show_description > 0) ? $product->description : ($product->description_short . " " . $product->description); $item['description'] = ($show_description == "full_limited") ? $product->description_short . " " . $product->description : $product->description; $limit_size = ($show_description > 0) ? $show_description : "300"; $item['description'] = substr($item['description'], 0, $limit_size + 300); $item['description'] = smfeed_replace_not_in_tags("\n", "<BR />", $item['description']); $item['description'] = str_replace("\n", " ", $item['description']); $item['description'] = str_replace("\r", "", $item['description']); $item['description'] = strip_tags($item['description']); $item['description'] = substr($item['description'], 0, $limit_size); } else { if ($show_description == "on") { // Get description $item['description'] = $product->description; } elseif ($show_description == "short") { // Get short description $item['description'] = $product->description_short; } elseif ($show_description == "full") { // Get full description (shortdesc + desc) $item['description'] = $product->description_short . " " . $product->description; } $item['description'] = smfeed_replace_not_in_tags("\n", "<BR />", $item['description']); $item['description'] = str_replace("\n", " ", $item['description']); $item['description'] = str_replace("\r", "", $item['description']); } // Clean product names and descriptions (separators) if ($datafeed_separator == "\t") { $item['name'] = str_replace("\t", " ", strip_tags($item['name'])); $item['description'] = str_replace("\t", " ", $item['description']); $item['cat_name'] = str_replace("\t", ">", $item['cat_name']); } elseif ($datafeed_separator == "|") { $item['name'] = str_replace("|", " ", strip_tags($item['name'])); $item['description'] = str_replace("|", " ", $item['description']); $item['cat_name'] = str_replace("|", ">", $item['cat_name']); } else { print "Incorrect columns separator."; exit; } $use_lang_code = ($default_lang == $main_language) ? "" : $main_language_code; if ($sef == "off") { $item['prod_url'] = smfeed_get_product_url($item['product_id'], "", $base_dir, $use_lang_code); } elseif ($sef == "v2") { if ((int)(Configuration::get('PS_REWRITING_SETTINGS'))) { $rewrite_infos = Product::getUrlRewriteInformations((int)$field['id_product']); foreach ($rewrite_infos AS $infos) { if ($infos['id_lang'] == $main_language){ $item['prod_url'] = $link->getProductLink((int)$field['id_product'], $infos['link_rewrite'], $infos['category_rewrite'], $infos['ean13'], (int)$infos['id_lang']); } } } } else { $item['prod_url'] = smfeed_get_product_url($item['product_id'], $item['link_rewrite'], $base_dir, $use_lang_code); } // Add GA Tagging parameters to url if ($add_tagging == "on") { $and_param = (preg_match("/\?/", $item['prod_url'])) ? "&" : "?"; $item['prod_url'] = $item['prod_url'] . $and_param . $tagging_params; } if ($item['image']['id_image'] > 0 && $show_image != "off") { // Get default image if ($show_image == "on") { $item['prod_image'] = $item['image_url']; } else { $item['prod_image'] = smfeed_get_product_image($item['product_id'], $item['image']['id_image'], $base_image_dir, $sef, $show_image, $base_dir, $item['link_rewrite']); } } else { $item['prod_image'] = ""; } /*// Display availability if ($availability == "on") { $row['availability'] = ($product->checkQty(1) == 1 && $product->available_for_order == 1) ? "In stock" : "Out of stock"; } else { $row['availability'] = ""; }*/ // Display availability if ($availability == "on") { // Stock managent is activated if ($enable_stock_management == 1) { // Product is in stock and is available for order if ($product->quantity > 0 && $product->available_for_order == 1) { $row['availability'] = "Disponibile"; } // Product is not in stock and is available for backorder elseif (($product->out_of_stock == 1 || ($allow_out_of_stock_ordering == 1 && $product->out_of_stock == 2)) && $product->available_for_order == 1) { //$row['availability'] = ($product->available_later != "") ? $product->available_later : "Available for order"; $row['availability'] = "Disponibile"; } else { $row['availability'] = "Non disponibile"; } } else { // Show available for backorder message if ($product->quantity == 0 && ($product->out_of_stock == 1 || ($allow_out_of_stock_ordering == 1 && $product->out_of_stock == 2)) && $product->available_for_order == 1) { //$row['availability'] = ($product->available_later != "") ? $product->available_later : "Available for order"; $row['availability'] = "Disponibile"; } else { // All products are in stock $row['availability'] = "In stock"; } } } else { $row['availability'] = ""; } // Display shipping if ($add_shipping == "on") { // Add product to cart $updateQuantity = $cart->updateQty((int)(1), (int)($product->id), (int)($idProductAttribute), $customizationId, Tools::getValue('op', 'up')); // Get shipping value $row['shipping_value'] = $cart->getOrderShippingCost(); $row['shipping_value'] = $row['shipping_value'] * $CURRENCY['conversion_rate']; // Remove product from cart $updateQuantity = $cart->updateQty((int)(0), (int)($product->id), (int)($idProductAttribute), $customizationId, Tools::getValue('op', 'up')); } else { $row['shipping_value'] = ""; } // Display GTIN $item['gtin'] = ($gtin == "on") ? (($product->upc != "") ? $product->upc : (($product->ean13 != "") ? $product->ean13 : "")) : ""; // Required fields are: category name, merchant product ID, product name, product URL, product price // For the product model you should only use the manufacturer code, ISBN code or UPC code - If you are not sure about a field please leave it empty // Output the datafeed content // Category, Manufacturer, Model, ProdCode, ProdName, ProdDescription, ProdURL, ImageURL, Price, Currency, Shipping value, Availability, GTIN (UPC/EAN/ISBN) print $item['cat_name'] . $datafeed_separator . $item['manufacturer_name'] . $datafeed_separator . $item['mpn'] . $datafeed_separator . $item['product_id'] . $datafeed_separator . $item['name'] . $datafeed_separator . $item['description'] . $datafeed_separator . $item['prod_url'] . $datafeed_separator . $item['prod_image'] . $datafeed_separator . $item['price'] . $datafeed_separator . $datafeed_currency . $datafeed_separator . $row['shipping_value'] . $datafeed_separator . $row['availability'] . $datafeed_separator . $item['gtin'] . "\n"; // Debuging if (@$_GET['mode'] == "debug") { $cnt_prod ++; echo $cnt_prod . "."; echo "\t" . number_format(microtime(true) - $time, 3) . "s \n"; $time = microtime(true); echo "\t" . number_format(memory_get_usage()/1048576, 3) . "Mb\n\n"; echo "memory limit " . ini_get("memory_limit") . "\n"; echo "max_execution_time " . ini_get("max_execution_time") . "\n\n"; } $prod_count++; // Limit displayed products if ($limit > 0 && $prod_count >= $limit) { break; } } } else { while ($field = mysql_fetch_assoc($r)) { // If we've sent this one, skip the rest - this is to ensure that we do not get duplicate products $prod_id = $field['id_product']; if ($current_id == $prod_id) { continue; } else { $current_id = $prod_id; } // Get product data $product = new Product(intval($field['id_product']), true, intval($main_language)); // For links $link = new Link(); $item = array(); $item['product_id'] = $product->id; $item['manufacturer_name'] = $product->manufacturer_name; $item['name'] = $product->name; $item['link_rewrite'] = $product->link_rewrite; $item['image'] = $product->getCover($product->id); $item['mpn'] = $product->reference; // Get default image url $item['image_url'] = $link->getImageLink($product->link_rewrite, $item['product_id'] . "-" . $item['image']['id_image'], 'large'); $item['price'] = floatval(trim($product->getPrice(true, NULL, 2))); $item['price'] = $item['price'] * $CURRENCY['conversion_rate']; // Add VAT to prices if ($add_vat == "on") { $item['price'] = $item['price'] * $vat_value; } if ($default_cat == "on") { $item['cat_name'] = Tools::getPath($product->id_category_default, ''); } elseif ($field['id_category'] > 0) { $item['cat_name'] = Tools::getPath($field['id_category'], ''); } else { $category = new Category($product->id_category_default, intval($main_language)); $item['cat_name'] = (isset($category->id) AND $category->id) ? Tools::getPath($category->id, '') : Tools::getPath($product->id_category_default, ''); } $item['cat_name'] = trim(smfeed_html_to_text($item['cat_name'])); // Clean product name (new lines) $item['name'] = str_replace("\n", "", strip_tags($item['name'])); $item['description'] = ""; // Limit description size if ($show_description == "limited" || $show_description == "full_limited" || $show_description > 0) { $item['description'] = ($show_description == "limited" || $show_description > 0) ? $product->description : ($product->description_short . " " . $product->description); $item['description'] = ($show_description == "full_limited") ? $product->description_short . " " . $product->description : $product->description; $limit_size = ($show_description > 0) ? $show_description : "300"; $item['description'] = substr($item['description'], 0, $limit_size + 300); $item['description'] = smfeed_replace_not_in_tags("\n", "<BR />", $item['description']); $item['description'] = str_replace("\n", " ", $item['description']); $item['description'] = str_replace("\r", "", $item['description']); $item['description'] = strip_tags($item['description']); $item['description'] = substr($item['description'], 0, $limit_size); } else { if ($show_description == "on") { // Get description $item['description'] = $product->description; } elseif ($show_description == "short") { // Get short description $item['description'] = $product->description_short; } elseif ($show_description == "full") { // Get full description (shortdesc + desc) $item['description'] = $product->description_short . " " . $product->description; } $item['description'] = smfeed_replace_not_in_tags("\n", "<BR />", $item['description']); $item['description'] = str_replace("\n", " ", $item['description']); $item['description'] = str_replace("\r", "", $item['description']); } // Clean product names and descriptions (separators) if ($datafeed_separator == "\t") { $item['name'] = str_replace("\t", " ", strip_tags($item['name'])); $item['description'] = str_replace("\t", " ", $item['description']); $item['cat_name'] = str_replace("\t", ">", $item['cat_name']); } elseif ($datafeed_separator == "|") { $item['name'] = str_replace("|", " ", strip_tags($item['name'])); $item['description'] = str_replace("|", " ", $item['description']); $item['cat_name'] = str_replace("|", ">", $item['cat_name']); } else { print "Incorrect columns separator."; exit; } $use_lang_code = ($default_lang == $main_language) ? "" : $main_language_code; if ($sef == "off") { $item['prod_url'] = smfeed_get_product_url($item['product_id'], "", $base_dir, $use_lang_code); } elseif ($sef == "v2") { if ((int)(Configuration::get('PS_REWRITING_SETTINGS'))) { $rewrite_infos = Product::getUrlRewriteInformations((int)$field['id_product']); foreach ($rewrite_infos AS $infos) { if ($infos['id_lang'] == $main_language){ $item['prod_url'] = $link->getProductLink((int)$field['id_product'], $infos['link_rewrite'], $infos['category_rewrite'], $infos['ean13'], (int)$infos['id_lang']); } } } } else { $item['prod_url'] = smfeed_get_product_url($item['product_id'], $item['link_rewrite'], $base_dir, $use_lang_code); } // Add GA Tagging parameters to url if ($add_tagging == "on") { $and_param = (preg_match("/\?/", $item['prod_url'])) ? "&" : "?"; $item['prod_url'] = $item['prod_url'] . $and_param . $tagging_params; } if ($item['image']['id_image'] > 0 && $show_image != "off") { // Get default image if ($show_image == "on") { $item['prod_image'] = $item['image_url']; } else { $item['prod_image'] = smfeed_get_product_image($item['product_id'], $item['image']['id_image'], $base_image_dir, $sef, $show_image, $base_dir, $item['link_rewrite']); } } else { $item['prod_image'] = ""; } /*// Display availability if ($availability == "on") { $row['availability'] = ($product->checkQty(1) == 1 && $product->available_for_order == 1) ? "In stock" : "Out of stock"; } else { $row['availability'] = ""; }*/ // Display availability if ($availability == "on") { // Stock managent is activated if ($enable_stock_management == 1) { // Product is in stock and is available for order if ($product->quantity > 0 && $product->available_for_order == 1) { $row['availability'] = "In stock"; } // Product is not in stock and is available for backorder elseif (($product->out_of_stock == 1 || ($allow_out_of_stock_ordering == 1 && $product->out_of_stock == 2)) && $product->available_for_order == 1) { //$row['availability'] = ($product->available_later != "") ? $product->available_later : "Available for order"; $row['availability'] = "Available for order"; } else { $row['availability'] = "Out of stock"; } } else { // Show available for backorder message if ($product->quantity == 0 && ($product->out_of_stock == 1 || ($allow_out_of_stock_ordering == 1 && $product->out_of_stock == 2)) && $product->available_for_order == 1) { //$row['availability'] = ($product->available_later != "") ? $product->available_later : "Available for order"; $row['availability'] = "Available for order"; } else { // All products are in stock $row['availability'] = "In stock"; } } } else { $row['availability'] = ""; } // Display shipping if ($add_shipping == "on") { // Add product to cart $updateQuantity = $cart->updateQty((int)(1), (int)($product->id), (int)($idProductAttribute), $customizationId, Tools::getValue('op', 'up')); // Get shipping value $row['shipping_value'] = $cart->getOrderShippingCost(); $row['shipping_value'] = $row['shipping_value'] * $CURRENCY['conversion_rate']; // Remove product from cart $updateQuantity = $cart->updateQty((int)(0), (int)($product->id), (int)($idProductAttribute), $customizationId, Tools::getValue('op', 'up')); } else { $row['shipping_value'] = ""; } // Display GTIN $item['gtin'] = ($gtin == "on") ? (($product->upc != "") ? $product->upc : (($product->ean13 != "") ? $product->ean13 : "")) : ""; // Required fields are: category name, merchant product ID, product name, product URL, product price // For the product model you should only use the manufacturer code, ISBN code or UPC code - If you are not sure about a field please leave it empty // Output the datafeed content // Category, Manufacturer, Model, ProdCode, ProdName, ProdDescription, ProdURL, ImageURL, Price, Currency, Shipping value, Availability, GTIN (UPC/EAN/ISBN) print $item['cat_name'] . $datafeed_separator . $item['manufacturer_name'] . $datafeed_separator . $item['mpn'] . $datafeed_separator . $item['product_id'] . $datafeed_separator . $item['name'] . $datafeed_separator . $item['description'] . $datafeed_separator . $item['prod_url'] . $datafeed_separator . $item['prod_image'] . $datafeed_separator . $item['price'] . $datafeed_separator . $datafeed_currency . $datafeed_separator . $row['shipping_value'] . $datafeed_separator . $row['availability'] . $datafeed_separator . $item['gtin'] . "\n"; // Debuging if (@$_GET['mode'] == "debug") { $cnt_prod ++; echo $cnt_prod . "."; echo "\t" . number_format(microtime(true) - $time, 3) . "s \n"; $time = microtime(true); echo "\t" . number_format(memory_get_usage()/1048576, 3) . "Mb\n\n"; echo "memory limit " . ini_get("memory_limit") . "\n"; echo "max_execution_time " . ini_get("max_execution_time") . "\n\n"; } $prod_count++; // Limit displayed products if ($limit > 0 && $prod_count >= $limit) { break; } } } ################################################################### // Debuging if (@$_GET['mode'] == "debug") { echo "\npage loaded in " . number_format(microtime(true) - $time_start, 3) . "s \n"; } // Debuging if (@$_GET['mode'] == "debug") { echo "memory limit " . ini_get("memory_limit") . "\n"; echo "max_execution_time " . ini_get("max_execution_time") . "\n\n"; } ##### Functions ######################################################## // Function to return the Product URL based on your product ID function smfeed_get_product_url($prod_id, $link_rewrite, $base_dir, $use_lang){ $url_lang = ($use_lang != "") ? "lang-" . $use_lang . "/" : ""; if ($link_rewrite != "") { return $base_dir . $url_lang . $prod_id . "-" . $link_rewrite . ".html"; } else { return $base_dir . $url_lang . "product.php?id_product=" . $prod_id; } } // Function to return the Product Image based on your product image or optionally Product ID function smfeed_get_product_image($prod_id, $prod_image, $base_image_dir, $sef, $show_image, $base_dir, $link_rewrite){ if ($show_image == "v1") { return $base_dir . $prod_id . "-" . $prod_image . "/" . $link_rewrite . ".jpg"; } elseif ($show_image == "v2") { return $base_dir . $prod_image . "/" . $link_rewrite . ".jpg"; } elseif ($show_image == "v3") { $tmp = str_split($prod_image); $image_folder = join("/", $tmp); return $base_image_dir . $image_folder . "/" . $prod_image . ".jpg"; } elseif ($sef == "v2") { return $base_dir . $prod_id . "-" . $prod_image . "/" . $link_rewrite . ".jpg"; } else { // default return $base_image_dir . $prod_id . "-" . $prod_image . ".jpg"; } } function smfeed_html_to_text($string){ $search = array ( "'<script[^>]*?>.*?</script>'si", // Strip out javascript "'<[\/\!]*?[^<>]*?>'si", // Strip out html tags "'([\r\n])[\s]+'", // Strip out white space "'&(quot|#34);'i", // Replace html entities "'&(amp|#38);'i", "'&(lt|#60);'i", "'&(gt|#62);'i", "'&(nbsp|#160);'i", "'&(iexcl|#161);'i", "'&(cent|#162);'i", "'&(pound|#163);'i", "'&(copy|#169);'i", "'&(reg|#174);'i", "'™'i", "''i", "''i" ); // evaluate as php $replace = array ( " ", " ", "\\1", "\"", "&", "<", ">", " ", "¡", "¢", "£", "©", "®", "<sup><small>TM</small></sup>", "•", "-", ); $text = preg_replace ($search, $replace, $string); return $text; } function smfeed_clean_description($string){ $search = array ( "'<html>'i", "'</html>'i", "'<body>'i", "'</body>'i", "'<head>.*?</head>'si", "'<!DOCTYPE[^>]*?>'si" ); $replace = array ( "", "", "", "", "", "" ); $text = preg_replace ($search, $replace, $string); return $text; } function smfeed_replace_not_in_tags($find_str, $replace_str, $string) { $find = array($find_str); $replace = array($replace_str); preg_match_all('#[^>]+(?=<)|[^>]+$#', $string, $matches, PREG_SET_ORDER); foreach ($matches as $val) { if (trim($val[0]) != "") { $string = str_replace($val[0], str_replace($find, $replace, $val[0]), $string); } } return $string; } ################################################################### ?> Link to comment Share on other sites More sharing options...
qiuyi Posted December 21, 2012 Share Posted December 21, 2012 ecco fatto, aggiunto http:// trova.php Link to comment Share on other sites More sharing options...
tuxinside Posted January 30, 2013 Share Posted January 30, 2013 Risolto il problema delle immagini non caricate. È molto semplice risolvere il problema: vai su preferenze - immagini rinomina large_default in large clicca su ricrea miniature e aspetta diversi minuti... fine. Link to comment Share on other sites More sharing options...
Totti Posted January 30, 2013 Share Posted January 30, 2013 Ma lo avete testato anche sulla 1.5.x ? Link to comment Share on other sites More sharing options...
tuxinside Posted January 30, 2013 Share Posted January 30, 2013 Io l'ho messo sulla 1.5.3.1... e sembra funzionare. La pagina viene creata correttamente. In serata mi iscrivo su trovaprezzi, sperando che lo digerisca, magari poi vi faccio sapere. 1 Link to comment Share on other sites More sharing options...
Totti Posted January 31, 2013 Share Posted January 31, 2013 Ok facci sapere. Link to comment Share on other sites More sharing options...
tuxinside Posted January 31, 2013 Share Posted January 31, 2013 Ciao a tutti. Lo script funziona, dal reparto tecnico di trovaprezzi mi hanno detto che va bene. Link to comment Share on other sites More sharing options...
Totti Posted February 3, 2013 Share Posted February 3, 2013 Puoi mettere quello definitivo qui ? Link to comment Share on other sites More sharing options...
giuseppe_m Posted February 11, 2013 Share Posted February 11, 2013 Salve! in conclusione, qual'è il codice corretto e definitivo?potreste postarlo??Grazie 1000 Link to comment Share on other sites More sharing options...
tuxinside Posted February 11, 2013 Share Posted February 11, 2013 (edited) Scusate, ma invece di continuare a chiedere la pappa scodellata, leggere la cronologia delle risposte non sarebbe meglio? Qiuyi ha postato il file corretto, all'inizio della pagina 3. A questo va aggiunta la modifica suggerita alla mia risposta (42) che non è lato modulo, ma lato prestashop, quindi nessuno può farle se non voi stessi sulla vostra area amministrativa, od un programmatore che poi vi rimetterà fattura. Le cose da fare per avere il modulo funzionante mi sembrano chiate... Basterebbe leggere la cronologia delle risposte. Edited February 11, 2013 by tuxinside (see edit history) Link to comment Share on other sites More sharing options...
Totti Posted February 12, 2013 Share Posted February 12, 2013 Scusate, ma invece di continuare a chiedere la pappa scodellata, leggere la cronologia delle risposte non sarebbe meglio? Qiuyi ha postato il file corretto, all'inizio della pagina 3. A questo va aggiunta la modifica suggerita alla mia risposta (42) che non è lato modulo, ma lato prestashop, quindi nessuno può farle se non voi stessi sulla vostra area amministrativa, od un programmatore che poi vi rimetterà fattura. Le cose da fare per avere il modulo funzionante mi sembrano chiate... Basterebbe leggere la cronologia delle risposte. Una cosa fatta bene sarebbe quella di aggiornare sempre la prima pagina con l'ultima versione. 1 Link to comment Share on other sites More sharing options...
faby71 Posted March 7, 2013 Share Posted March 7, 2013 Salve a tutti, ho un problema con lo script che mi ha mandato Trovaprezzi e che posto in allegato. Lo script genera un datafeed con URL immagini del prodotto errate. http://store.italian...op.php?langid=5 Riporto un record di esempio: Scarpe Vans CLASSIC SLIP-ON SPLATTER - Unisex|Vans|Scarpe Vans CLASSIC SLIP-ON SPLATTER - Unisex?||65|24.9|15|http://store.italianstreetstyle.com/skate/product.php?id_product=15|2|scarpe;scarpe donna;scarpe uomo|http://store.italianstreetstyle.com/skate/img/p/15-112-large.jpg|N/A|N/A Il link NON funzionante è il seguente: http://store.italian...5-112-large.jpg Link immagine corretto: http://store.italian...tter-unisex.jpg Problema analogo con lo script scaricato da ilpiubasso.it Versione Prestashop: 1.4.6.2 URL semplificati: abilitato Allego script TROVAPREZZI e script ILPIUBASSO CIAO, Scusate, io sto provanto in locale lo script di trovaprezzi quello postato, ma mi da questo errore ho letto in giro ma non capisco NO product found for language Selected:English (English)(1) , check language id cosa sbaglio? grazie Link to comment Share on other sites More sharing options...
Rosslyn Posted September 18, 2013 Share Posted September 18, 2013 Salve, scusate se riesumo questo post, ma io sto usando lo script e funziona molto bene tranne che per il fatto che è molto lento... sapete se c'è un modo per velocizzarlo? volendo posso escludere la parte di codice che lavora le immagini visto che non mi servono?? grazie a tutti Link to comment Share on other sites More sharing options...
cleoni Posted October 12, 2013 Share Posted October 12, 2013 @ Rosslyn: Non mi è chiaro se la lentezza sia il vero problema, per come la vedo io lo script che gira gratuitamente ha la grossa pecca di generare il feed al volo. Ciò significa che ogni volta ri-elabora tutto il DB e se per caso qualcuno capisce dove l'hai, richiamandolo più e più volte con uno script automatico può rallentare il tuo shop. Raccomando quindi di rinominarlo con un nome che non sia facile da indovinare. Dopodiché la lentezza non dovrebbe essere un problema, a patto che lo script termini senza bloccarsi e che il trovaprezzi non lo richiami troppe volte al giorno (v. punto sopra)... Se sei disposta a spendere qualche euro ti segnalo questo http://www.prestashoprisolto.com/promozione-seo/59-integrazione-trovaprezzi.html che è testato per cataloghi grossi (oltre 10.000 articoli) e che genera il file quando decidi tu, dopodichè non stressa più inutilmente il database: il file rimane quello fino alla successiva elaborazione. Link to comment Share on other sites More sharing options...
simox85 Posted March 20, 2014 Share Posted March 20, 2014 riprendo questo topic, volevo sapere è ancora valido lo script, o è cambiato qualcosa e inoltre cosa piu banale, come faccio a inserirlo e farlo girare! Link to comment Share on other sites More sharing options...
simox85 Posted March 22, 2014 Share Posted March 22, 2014 rispondo se qualcuno come me entra e gli serve questa informazione che puo sembrar banale però... per farlo girare basta caricarlo sul sito es lo carico in root e dal browser andare a richiamarlo es www.miosito.it/trova.php ciao Link to comment Share on other sites More sharing options...
olio elianto Posted July 29, 2014 Share Posted July 29, 2014 appena caricato il file, fatto modifica per l'immagine e inviato a trovaprezzi, speriamo vada bene! GRAZIE siete grandi Link to comment Share on other sites More sharing options...
simonainti Posted October 10, 2014 Share Posted October 10, 2014 (edited) Ho provato lo script su prestashop 1.6 funziona tranne per il link alla pagina prodotto, come protrei risolvere il problema? Grazie /shop/product.php?id_product=15&utm_source=trovaprezzi&utm_medium=cpc&utm_campaign=direct_link (questo è il link che crea lo script- non funzionante) /shop/index.php?id_product=15&controller=product (questo è il link giusto alla pagina) Edited October 10, 2014 by simonainti (see edit history) Link to comment Share on other sites More sharing options...
cleoni Posted October 10, 2014 Share Posted October 10, 2014 ciao @simonainti, quale script stai usando esattamente, perché non mi è chiaro... Link to comment Share on other sites More sharing options...
infortecstore Posted January 12, 2015 Share Posted January 12, 2015 (edited) Ho provato lo script su prestashop 1.6 funziona tranne per il link alla pagina prodotto, come protrei risolvere il problema? Grazie /shop/product.php?id_product=15&utm_source=trovaprezzi&utm_medium=cpc&utm_campaign=direct_link (questo è il link che crea lo script- non funzionante) /shop/index.php?id_product=15&controller=product (questo è il link giusto alla pagina) Ho modificato il file trova.php che @qiuyi ha inserito in questo post, il file è perfettamente compatibile con la versione 1.6 di prestashop e non necessita di nessuna modifica, basta solo caricarlo sul proprio server. Se mi dite come caricarlo in questo post lo faccio subito. Edited January 16, 2015 by infortecstore (see edit history) 1 Link to comment Share on other sites More sharing options...
simonainti Posted January 16, 2015 Share Posted January 16, 2015 Ho modificato il file trova.php che @Prestashop Newbie ha inserito in questo post, il file è perfettamente compatibile con la versione 1.6 di prestashop e non necessita di nessuna modifica, basta solo caricarlo sul proprio server. Se mi dite come caricarlo in questo post lo faccio subito. Ciao, Penso che basta cliccare su MY Media ( mentre scrivi il messaggio) e inserisci il file caricandolo da PC. Link to comment Share on other sites More sharing options...
infortecstore Posted January 16, 2015 Share Posted January 16, 2015 Ecco a voi il file trova.php modificato. Basta caricarlo sul server, non serve nessuna modifica a immagini o altro. trova.php Link to comment Share on other sites More sharing options...
simox85 Posted January 17, 2015 Share Posted January 17, 2015 ciao io dato che non voglio pubblicare tutto il catalogo su trovaprezzi, ho modificato lo script per far si che esporti solo gli id selezionati: modificando cosi intorno alla riga 353 $q = "SELECT p.id_product" . $cat_prod_fields . " FROM " . _DB_PREFIX_ . "product p " . $JOIN_PROD_CAT . " WHERE p.id_product BETWEEN 3000 AND 4000; AND p.active=1 " . $cat_prod_cond . $stock_cond . $available_for_order_cond . " ORDER BY p.id_product ASC" . $cat_prod_aux; solo che ogni volta devo star attento agli id dei prodotti Qualcuno riesce a dirmi come modificare per impostare solo determinate categorie? non son riuscito nelle mille prove che ho fatto! Link to comment Share on other sites More sharing options...
simonainti Posted January 18, 2015 Share Posted January 18, 2015 Ciao io volevo chiedere se qualcuno sa come fare per indicare le spedizioni gratuite o incluse nel prezzo. Ho provato a modificare il file trova.php di infortecstor, inserendo off alle spese di spedizione ed effettivamente ho come risultato |0| (come indicato da trovaprezzi quando le spese sono incluse nel prezzo). Nonostante ciò su trovaprezzi la dicitura n.d. non viene modificata. grazie a tutti Link to comment Share on other sites More sharing options...
simox85 Posted January 18, 2015 Share Posted January 18, 2015 Ma credo che se ti esporta zero lo script sia ok, dovresti sentire il tecnico di trova prezzi e chiedere a lui o attendere un giorno, mi sembra che gli aggiornamenti li facciano di notte e può essere che abbia aggiornato metà catalogo... Presumo, niente di sicuro! Link to comment Share on other sites More sharing options...
maofree Posted January 18, 2015 Share Posted January 18, 2015 (edited) ciao di solito i controlli di Trovaprezzi avvengono 1 o 2 volte al giorno, uno in tarda mattinata e uno in tarda serata o di notte per le spese di spedizione va bene mettere 0 se non sono specificate, per gli altri campi invece N/A i campi obbligatori sono: product name, short product description, initial product price, id product, product url, availability, category, image url il datafeed può essere passato in formato txt, csv, xml, questi pure in formato compresso zip o gzip oppure tramite script in php da pagina html ciao Edited January 18, 2015 by maofree (see edit history) 1 Link to comment Share on other sites More sharing options...
simox85 Posted February 13, 2015 Share Posted February 13, 2015 ciao io dato che non voglio pubblicare tutto il catalogo su trovaprezzi, ho modificato lo script per far si che esporti solo gli id selezionati: modificando cosi intorno alla riga 353 $q = "SELECT p.id_product" . $cat_prod_fields . " FROM " . _DB_PREFIX_ . "product p " . $JOIN_PROD_CAT . " WHERE p.id_product BETWEEN 3000 AND 4000; AND p.active=1 " . $cat_prod_cond . $stock_cond . $available_for_order_cond . " ORDER BY p.id_product ASC" . $cat_prod_aux; solo che ogni volta devo star attento agli id dei prodotti Qualcuno riesce a dirmi come modificare per impostare solo determinate categorie? non son riuscito nelle mille prove che ho fatto! Nessuno riesce a darmi due indicazioni... sto impazzendo! grazie Link to comment Share on other sites More sharing options...
simox85 Posted February 13, 2015 Share Posted February 13, 2015 Risolto, posto se puo servire a qualcuno modificado questa riga WHERE id_category_default IN (16,15); AND p.active=1 " . $cat_prod_cond . $stock_cond . $available_for_order_cond . " o meglio da where al primo AND vengono mostrate solo le categorie con gli id selezionati in questo caso 16,15 ciao Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now