View Single Post
  #2  
Old 01-09-2004, 01:11 PM
  finestshops's Avatar 
finestshops finestshops is offline
 

eXpert
  
Join Date: Oct 2002
Location: Toronto, Canada
Posts: 335
 

Default Re: Froogle Export Mod for 3.5.2 ??

Quote:
Originally Posted by Taekwondo
Does anyone have a final mod that will work in 3.5.2 ?
I read the huge thread but looks like a lot of back and forth fixes going on.
TW

Below is slightly modified version of the great mod by HairGuy
(http://forum.x-cart.com/viewtopic.php?t=2940&postdays=0&postorder=asc&high light=froogle&start=15)

It saves urls to full product images (not small tumbnails) and it works fine in several 3.5.2 stores triggered by cron jobs or from control panel.

create new file, paste code below and upload it to xcart/admin directory

xcart/admin/froogle_update.php

Code:
<? # # $Id: froogle_update.php,v 1.6 2003/05/25 15:09:08 lfhair Exp $ # # froogle_update_cron.php # # 15 2 * * * /usr/bin/php -q $HOME/public_html/xcart/provider/froogle_update.php | mail -s 'Froogle Update' me@mydomain.com # # This module will automatically export your products and send # (using FTP) a properly-formatted file to Froogle. # # It can be run from X-Cart or it can also be run from the command # line. Running it from the command line is useful for setting # up a 'cron' job that will automatically update your Froogle listings # periodically (like once a week or once a day). For example, # the following crontab entry would update Froogle every Saturday # at 2:00am: # 0 2 * * 6 /usr/bin/php -q /home/mydir/www/xcart/provider/froogle_update.php # # In order for things to work, you must define the following variables: # # $froogle_username = 'myfroogle'; # $froogle_password = 'mypass'; # # Values for the above are assigned by Google when you sign up for their # Froogle service (see froogle.google.com for more info). # # The following variables are optional: # # $froogle_host - defaults to 'hedwig.google.com' # $froogle_partner - set this if you want to track Froogle hits as # an affiliate (i.e. set $froogle_partner="froogle") # $froogle_filename - name of the file that will be sent to Froogle # # uncomment 2 lines below are for 3.4.? version # # require "../smarty.php"; # require "../config.php"; # # comment next line for 3.4.? version require "./auth.php"; # Values for the above are assigned by Google when you sign up for their # Froogle service (see froogle.google.com for more info). $froogle_username = "XXXXX"; $froogle_password = "XXXXX"; $froogle_partner = "froogle"; # # The following variables are optional: # # $froogle_host = " "; $command_line_mode = false; if ($_SERVER[DOCUMENT_ROOT]) { # # Running from the web, make sure we authenticate the user # # require "./auth.php"; # require "../include/security.php"; set_time_limit(1800); $BR = ' '; } else { # # Running from command line # $command_line_mode = true; ini_set('html_errors', '0'); $BR = "\n"; } $tab = "\t"; $partner_track = ""; # # Use this condition when single mode is disabled # $provider_condition = ($single_mode ? "" : "and $sql_tbl[products].provider='$login'"); if (! $froogle_host) { $froogle_host = "hedwig.google.com"; # default Froogle host } if (! $froogle_username) { echo "ERROR: \$froogle_username is not set, it should be defined in your 'config.php' file.".$BR; } if (! $froogle_password) { echo "ERROR: \$froogle_password is not set, it should be defined in your 'config.php' file.".$BR; } if ($froogle_partner) { # if set, track froogle hits as an affiliate $partner_track="&partner=$froogle_partner"; } if (! $froogle_filename) { $froogle_filename = $froogle_username.'.txt'; # default Froogle filename } if ($froogle_username && $froogle_password) { echo "Exporting products".$BR; $products = func_search_products("1 $provider_condition group by $sql_tbl[products].productid order by $sql_tbl[products].productid", $user_account['membership']); } if ($products) { # # These patterns will remove HTML tags, javascript sections # and white space. It will also convert some # common HTML entities to their text equivalent. # $search = array ( "'<script[^>]*?>.*?</script>'si", // Strip out javascript "'<[\/\!]*?[^<>]*?>'si", // Strip out html tags "'[\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", "'&(lsquo|#8216);'i", "'&(rsquo|#8217);'i", "'&(ldquo|#8220);'i", "'&(rdquo|#8221);'i", "'&#(\d+);'e"); // evaluate as php $replace = array ( "", "", " ", "\"", "&", "<", ">", " ", chr(161), chr(162), chr(163), chr(169), "'", "'", '"', '"', "chr(\\1)"); $fp = tmpfile(); # # Set up Froogle header # $product_url = 'product_url'; $name = 'name'; $description = 'description'; $price = 'price'; $image_url = 'image_url'; $category = 'category'; $offer_id = 'offer_id'; fwrite($fp, "# html_escaped = YES\n". $product_url.$tab. $name.$tab. $description.$tab. $price.$tab. $image_url.$tab. $category.$tab. $offer_id.$tab. "instock\n"); # # Build an export file # $count = 0; foreach ($products as $key => $value) { if ($products[$key][forsale] == 'N' || # skip products not available for sale $products[$key][price] <= 0.00) { # skip products with zero price continue; } $count++; $product_url = $http_location.'/customer/product.php?productid='.$products[$key][productid].$partner_track; $name = preg_replace($search, $replace, strip_tags($products[$key][product])); $description = preg_replace($search, $replace, strip_tags($products[$key][fulldescr])); # if fulldescr is blank, use short description if ($description == "") { $description = preg_replace($search, $replace, strip_tags($products[$key][descr])); } $price = $products[$key][price]; $image_url = $http_location.'/image.php?productid='.$products[$key][productid]; $sql_query = "select * from $sql_tbl[images] where productid='".$products[$key][productid]."' limit 1"; $images = func_query($sql_query); if (is_array($images)) { foreach($images as $k=>$v) if (eregi("^(http|ftp)://", $v["image_path"])) { # image_path is an URL $images[$k]["tmbn_url"] = $v["image_path"]; $image_url = $images[$k]["tmbn_url"]; } elseif (eregi($xcart_dir, $v["image_path"])) { # image_path is an locally placed image $images[$k]["tmbn_url"] = $http_location.ereg_replace($xcart_dir, "", $v["image_path"]); $image_url = $images[$k]["tmbn_url"]; } } # convert '/' to ' > ' in category $category = eregi_replace('/', '>', $products[$key][category]); $offer_id = $products[$key][productcode]; # jjj - use productid ??? fwrite($fp, $product_url.$tab. $name.$tab. # "\"".$description."\"".$tab. $description.$tab. $price.$tab. $image_url.$tab. $category.$tab. $offer_id.$tab."Y\n"); } rewind($fp); # # Connect to Froogle and send file via FTP # $conn_id = ftp_connect($froogle_host) or die("Couldn't connect to $froogle_host"); $login_result = ftp_login($conn_id, $froogle_username, $froogle_password); if ((!$conn_id) || (!$login_result)) { echo "FTP connection failed!".$BR; echo "User '$froogle_username' unable to connect to $froogle_host".$BR; } else { echo "User '$froogle_username' connected to $froogle_host".$BR; echo "Beginning FTP transfer of $count products".$BR; if (ftp_fput($conn_id, $froogle_filename, $fp, FTP_ASCII)) { echo "OK - Transfer of file '$froogle_filename' was successful".$BR; } else { echo "ERROR - Unable to transfer file '$froogle_filename'".$BR; }; } fclose($fp); } if (! $command_line_mode) { echo ' Return to previous page'; } ?>

Quote:
how do I do run it within X-cart ?

in skin1/admin/menu_admin.tpl just change

Code:
{/capture} { include file="menu.tpl" dingbats="dingbats_categorie.gif" menu_title="Administration" menu_content=$smarty.capture.menu }

to

Code:
Froogle Update {/capture} { include file="menu.tpl" dingbats="dingbats_categorie.gif" menu_title="Administration" menu_content=$smarty.capture.menu }

__________________
Best regards,

Anton Pachkine
finestshops.com/x-cart
Reply With Quote