Jump to content

[RISOLTO] Script Trovaprezzi: url immagini errato


Squit

Recommended Posts

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 by Squit (see edit history)
Link to comment
Share on other sites

  • 2 weeks later...
  • 2 weeks later...

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

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

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

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

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

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

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

  • 3 weeks later...
  • 1 month later...

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

  • 2 weeks later...
  • 2 weeks later...
  • 1 month later...

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

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

  • 2 months later...

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

  • 4 weeks later...
  • 1 month later...
  • 2 weeks later...

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 by tuxinside (see edit history)
Link to comment
Share on other sites

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.

  • Like 1
Link to comment
Share on other sites

  • 4 weeks later...

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

  • 6 months later...

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

  • 4 weeks later...

@ 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

  • 5 months later...

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

  • 4 months later...
  • 2 months later...

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 by simonainti (see edit history)
Link to comment
Share on other sites

  • 3 months later...

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 by infortecstore (see edit history)
  • Like 1
Link to comment
Share on other sites

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

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

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

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

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 by maofree (see edit history)
  • Like 1
Link to comment
Share on other sites

  • 4 weeks later...

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

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

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...