Follow us on Twitter X-Cart on Facebook Wiki
Shopping cart software Solutions for online shops and malls

Froogle Export Mod for 3.5.2 ??

 
Reply
   X-Cart forums > X-Cart 4 > Dev Questions
 
Thread Tools Search this Thread
  #1  
Old 01-09-2004, 10:30 AM
 
Taekwondo Taekwondo is offline
 

Advanced Member
  
Join Date: Feb 2003
Posts: 35
 

Default Froogle Export Mod for 3.5.2 ??

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
Reply With Quote
  #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
  #3  
Old 01-09-2004, 04:28 PM
  DataViking's Avatar 
DataViking DataViking is offline
 

eXpert
  
Join Date: Jan 2003
Location: Las Vegas, NV
Posts: 361
 

Default

Thank you I will try this
__________________
Web Design Web Design and Custom X-Cart Projects

http://www.dataviking.com

Mention the forums for discounts!
x-cart Version 4.1.8
Reply With Quote
  #4  
Old 01-10-2004, 07:13 AM
  finestshops's Avatar 
finestshops finestshops is offline
 

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

Default

Quote:
Originally Posted by Taekwondo
I get the following error when I run the script:

Fatal error: Call to undefined function: ftp_connect()

You have to ask your host to install ftp module for php (enable ftp support) for your account.
__________________
Best regards,

Anton Pachkine
finestshops.com/x-cart
Reply With Quote
  #5  
Old 01-10-2004, 07:17 AM
 
Taekwondo Taekwondo is offline
 

Advanced Member
  
Join Date: Feb 2003
Posts: 35
 

Default Thanks

Thanks again.
Reply With Quote
  #6  
Old 01-15-2004, 08:44 PM
 
jmell jmell is offline
 

Senior Member
  
Join Date: Sep 2003
Posts: 127
 

Default

I did the mod on my site and all worked well.
Thanks for the mod
__________________
X-Cart 4.1.9
Reply With Quote
  #7  
Old 01-18-2004, 09:05 AM
 
Courage Courage is offline
 

Advanced Member
  
Join Date: Nov 2003
Location: Romania
Posts: 56
 

Default

@27stars

1. Can you make this export the file into my browser ?

2. On your version, i still need to add in config.php

$froogle_username = "xxxxx";
$froogle_passwor = "xxxxxx";

?
__________________
Gheorghe Bogdan
Reply With Quote
  #8  
Old 01-18-2004, 02:33 PM
  finestshops's Avatar 
finestshops finestshops is offline
 

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

Default

Quote:
Originally Posted by Courage
@27stars
1. Can you make this export the file into my browser ?

Change user, pass and ftp server variable to your ftp login info,
the script will save file on your server.

Quote:
Originally Posted by Courage
2. On your version, i still need to add in config.php

$froogle_username = "xxxxx";
$froogle_passwor = "xxxxxx";

?

No, you do not have to add anything to config.
__________________
Best regards,

Anton Pachkine
finestshops.com/x-cart
Reply With Quote
  #9  
Old 01-18-2004, 04:10 PM
 
Taekwondo Taekwondo is offline
 

Advanced Member
  
Join Date: Feb 2003
Posts: 35
 

Default Can't to find template engine!

27stars,

I get this error when I try this.

"Can't to find template engine!"

I saw that many others get this error.
Im running V3.5.2

TKD
Reply With Quote
  #10  
Old 01-18-2004, 05:57 PM
  finestshops's Avatar 
finestshops finestshops is offline
 

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

Default Re: Can't to find template engine!

Quote:
Originally Posted by Taekwondo
I get this error when I try this.
"Can't to find template engine!"
I saw that many others get this error.
Im running V3.5.2
TKD

Did you make any changes? because this is exactly what i use on several 3.5 installations. You only have to make change if it's on for 3.4
__________________
Best regards,

Anton Pachkine
finestshops.com/x-cart
Reply With Quote
Reply
   X-Cart forums > X-Cart 4 > Dev Questions


Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump


All times are GMT -8. The time now is 11:23 PM.

   

 
X-Cart forums © 2001-2020