Jump to content
lech

The Feedmachine Solution

Recommended Posts

thanks Lech for the prompt reply, where do i find this? as all settings in admin are correct. is it a hard coded setting?

 

OK that's fine. So in admin, the feed is (presumably) set to Australia?

 

Does tax depend on state in Australia? If so in general configuration, is your store's state set appropriately?

 

Lech

Share this post


Link to post
Share on other sites

OK that's fine. So in admin, the feed is (presumably) set to Australia?

 

Does tax depend on state in Australia? If so in general configuration, is your store's state set appropriately?

 

Lech

 

thanks Lech, i have never used the TAX ZONES as Australia is all taxed at the same rate. i have added a new Zone and it works fine. thanks heaps.


Thanks in advance!

 

Ben

Share this post


Link to post
Share on other sites

Does anyone know how you would go about changing the product name to also include the manufacturer's name in front?

 

Modified so it outputs this under the products name field:

Manufacturer's name - Product Name

 

Thanks!

Share this post


Link to post
Share on other sites

Hi,

Thanks for Awesome Mod!

 

I'm getting this error:

 

Warning: ftp_connect() [function.ftp-connect]: php_network_getaddresses: getaddrinfo failed: Name or service not known in /home/xxxxx/public_html/xxxxx/feedmachine_auto.php on line 323

-----------------------

Feedmachine Report

-----------------------

 

start time: 2010-08-04 20:10:13 UTC

end time: 2010-08-04 20:10:28 UTC

runtime: 15.2699878216

 

 

GLOBAL UPDATE TRIGGERS

----------------------

this was a force update

 

NOTICES

-------

this was a manual update

this run was triggered via HTTP

there were ftp errors

 

 

F E E D S

 

Google Product Search Simple Configuration

------------

update status: feed updated as part of a force update

upload trigger status: feed upload triggered due to update

upload status: Could not connect to ftp server: ftp://uploads . google. com /

 

 

 

I've checked my password & username for google. I only registered the account on google a few hours ago - I read on google it can take a while to be activated.

Do we think that is the issue or is it something else maybe?

 

 

What am I supposed to put in the field "FTP Path" ?

 

Excited to get this uploading.

Cheers

Edited by tigergirl

I'm feeling lucky today......maybe someone will answer my post!

I do try and answer a simple post when I can just to give something back.

------------------------------------------------

PM me? - I'm not for hire

Share this post


Link to post
Share on other sites

I still haven't been able to upload via FTP.... I saved the file and uploaded it manually but have noticed a bug:

 

I have samples that are free and they are producing a blank field in the feed for price. Google needs a price and so won't accept these products. I presume google wouldn't accept a £0.00 either?

 

Therefore, there isn't really any point in outputting these products to the feed so is there a small snippet of code that would stop these £0.00 items being included in the feed?

 

Thanks if anyone can help.


I'm feeling lucky today......maybe someone will answer my post!

I do try and answer a simple post when I can just to give something back.

------------------------------------------------

PM me? - I'm not for hire

Share this post


Link to post
Share on other sites

Here is my next problem:

no images are shown in google product search. It's been 8 days and other posts suggest google should have indexed the pictures by now.

 

I get a 404 when I try to view the image using the path created by this mod:

http://www.mysite.co...es/my_image.jpg

 

The image can be viewed if I try:

http://www.mysite.co...age.php?pID=589

 

In cpanel,

Index Manager is off for image folder.

Hotlink Protection is enabled (but google hosts the image, doesn't he? so this shouldn't matter.)

 

How do I get the images to be shown in google? Or can someone recommend another mod that works/ is supported?

 

Hoping someone can help. Thanks.


I'm feeling lucky today......maybe someone will answer my post!

I do try and answer a simple post when I can just to give something back.

------------------------------------------------

PM me? - I'm not for hire

Share this post


Link to post
Share on other sites

 

I get a 404 when I try to view the image using the path created by this mod:

http://www.mysite.co...es/my_image.jpg

 

 

ok, I DID get a 404 but then I tried IE and it worked, then it worked in firefox. I couldn't edit the post, sorry. Maybe google will catch up - anyone give their experience of how long this may take?


I'm feeling lucky today......maybe someone will answer my post!

I do try and answer a simple post when I can just to give something back.

------------------------------------------------

PM me? - I'm not for hire

Share this post


Link to post
Share on other sites

Great contribution.

I've written feed configs for a number of different product comparison sites (which I'll upload to the contrib area once I figure out this issue I'm writing about).

 

The script is timing out and 500'ing.

Error log:

[sun Aug 15 11:55:36 2010] [warn] mod_fcgid: read data timeout in 31 seconds

[sun Aug 15 11:55:36 2010] [error] [client x.x.x.x] Premature end of script headers: feedmachine_auto.php,

 

Now obviously this is because the script time limit is set to 30 seconds, and it's taking longer to process. I have 60,000 products in my database. My host says they will not increase the cap, and that I'll have to change how the script works instead.

 

I'm perfectly capable of changing how the script processes and having it break up the database into chunks. But I thought I'd post here first so the author knows about the issue. Any thoughts on how to prevent timeouts with large databases?

Share this post


Link to post
Share on other sites

Hi everyone,

 

Sorry I have been away and haven't had time to answer questions lately.

 

I hope to get round to this at the end of the month.

 

All the best,

 

Lech

Share this post


Link to post
Share on other sites

Hi, I was wondering if anyone knew of a Bing Product Feed (Feedmachine Configuration) somewhere out there?

 

my employer just asked me to add this to our feedmachine admin, but before i dive too far into it, i thought i'd ask!

 

*This is in reference to the newly released Bing Shopping Program that's allowing merchants to upload feeds for free.. let me know if you need more info about what I'm talking about...

 

I tried to simply duplicate one of the $feed_config arrays in a new script and named it respectively... when i uploaded to the the fm-configs folder my feedmachine admin opened with:

 

Fatal error: Cannot redeclare fm_uf_lm_stock_check() in /home/paul/public_html/admin/fm-feed-configs/google-simple.php on line 88

 

 

*not sure what to do next... but I keep poking around, so I'm bound to figure it out eventually.... a little direction would be great though :D

Share this post


Link to post
Share on other sites

Wonderful addon!! thanks for your effort

i've installed it and uploaded the feeds successfully a few days before

but today when i try to upload the feed to Shopzilla, it fails. Shopzilla says there is error.

Anyone experience the same problem? Does Shopzilla change some requirement? thanks

Share this post


Link to post
Share on other sites

nice job...would be great if it worked...every feed to google is rejected cos wrong format as google requires xml...and it never uploads to the google ftp server..never mind...wil keep it installed and one day when its working i would love to use it..keep plugging away..i am not clever enough at coding to fix this :D

Share this post


Link to post
Share on other sites

Hi I'm receiving this warning. This has to do with the cron command.

Warning: chdir(): SAFE MODE Restriction in effect.  The script whose uid is 10039 is not allowed to access ../ owned by uid 0 in /site.com/httpdocs/admin/feedmachine_auto.php on line 22

Warning: require(includes/configure.php): failed to open stream: No such file or directory in /site.com/httpdocs/admin/includes/application_top.php on line 32

Warning: require(includes/configure.php): failed to open stream: No such file or directory in /site.com/httpdocs/admin/includes/application_top.php on line 32

I contacted my host and they told me it's because the script is trying to get access to a file it has no rights to.

Does anyone know what needs to be done to get the cron command up and running?

Share this post


Link to post
Share on other sites

Hi Frank,

 

What kind of error do you get?

 

Try the following if it is different to your existing function.

 

function FM_UF_fc_manufacturer_and_product($product) {
 return $product['manufacturers_name'] . ' ' . $product['products_name'];
}

 

Let me know if it works.

 

All the best,

 

Lech

 

Lech,

 

I created the same function before reading this post. However, this function, the one in the example (google-simple.php) fail to work. No error is give, however, no output is placed in the Title category on the file. What am I doing wrong? This modification is awesome and I would love to continue using it :)

 

Here's what I did...

 

 

'title'            =>   array('name' => 'FM_UF_fc_manufacturer_and_product', 
                                   							  	'type' => 'FUNCTION'
                              										),


//FEED FUNCTIONS BEGIN
function FM_UF_fc_manufacturer_and_product($product) {
 return $product['manufacturers_name'] . ' ' . $product['products_name'];
}

//FEED FUNCTIONS END

Edited by 32 Degrees

plasma.jpg

Share this post


Link to post
Share on other sites

Hi,

 

Sorry for the late reply. It appears you're using the old Feedmachine configuration schema. It should be like this when using 'The Feedmachine Solution':

 

'title'            =>   array('output' => 'FM_UF_fc_manufacturer_and_product', 
                                   							  	'type' => 'FUNCTION'
                              										),

 

Let me know if that works.

 

All the best,

 

Lech

 

Lech,

 

I created the same function before reading this post. However, this function, the one in the example (google-simple.php) fail to work. No error is give, however, no output is placed in the Title category on the file. What am I doing wrong? This modification is awesome and I would love to continue using it :)

 

Here's what I did...

 

 

'title'            =>   array('name' => 'FM_UF_fc_manufacturer_and_product', 
                                   							  	'type' => 'FUNCTION'
                              										),


//FEED FUNCTIONS BEGIN
function FM_UF_fc_manufacturer_and_product($product) {
 return $product['manufacturers_name'] . ' ' . $product['products_name'];
}

//FEED FUNCTIONS END

Share this post


Link to post
Share on other sites

Google does not require XML - you can submit a tab-delimited feed (which is more efficient than XML).

 

Perhaps you have had trouble with character encoding - try to turn off utf8 in the configuration file for Google and see what happens.

 

nice job...would be great if it worked...every feed to google is rejected cos wrong format as google requires xml...and it never uploads to the google ftp server..never mind...wil keep it installed and one day when its working i would love to use it..keep plugging away..i am not clever enough at coding to fix this :D

Share this post


Link to post
Share on other sites

Hi,

 

Sorry for the late reply. It appears you're using the old Feedmachine configuration schema. It should be like this when using 'The Feedmachine Solution':

 

'title'            =>   array('output' => 'FM_UF_fc_manufacturer_and_product', 
                                   						  		'type' => 'FUNCTION'
                          											),

 

Let me know if that works.

 

All the best,

 

Lech

 

 

 

Lech,

 

Thanks for the response, and an apology is not needed or necessary. The changes you suggested worked perfect, thank-you. However, I just wanted to let you know the google-simple.php where I got the incorrect directions from was downloaded from the latest version available. Just a little note for the next release and for others who have this problem.

 

Thanks-A-LOT!

 

 

 

 


plasma.jpg

Share this post


Link to post
Share on other sites

version 5.02 - line 423 onwards of feedmachine.php

 

Anyone any experience with "i_rows" - individual rows, for feeds where individual records are needed for each option variation ?

 

How exactly do you get the combo price, and the option description into your upload file ?

where is the documnetation for this ?

 

appreciate any help...

Share this post


Link to post
Share on other sites

Lech,

 

I need a little help if you would. I'm attempting to use the automatic FTP function built within the Feedmachine Solution. However, both the automatic and manual execution of the script returns errors.

 


Bing Shopping
------------
update status: feed updated as part of a force update
upload trigger status: feed upload not triggered because feed upload is disabled
upload status: Could not connect to ftp server: ftp://feeds.adcenter.microsoft.com

 

The FTP switch within admin is set to "On", the ftp server is correct, as well as the credentials. Where am I going wrong with this? Why does it report that "feed upload is disabled"? Can you explain how the script establishes the FTP connection as well? I've logged in multiple times to the above mentioned ftp server via browser or ftp client without error.

 

I look forward to your reply! :)

 

Thanks

 

Ryan


plasma.jpg

Share this post


Link to post
Share on other sites

I apologize if this has been answered elsewhere-- I did a search on this topic for "price" and a few other keywords and didn't find anyone else asking this, so here goes:

 

I'm looking for a way to omit certain products from my feeds. Ideally I'd like to be able to do it by price, as each feed is being generated-- something along the lines of "if this item's price is less than $20, don't include it in the feed." If not by price, then even if there were a way to individually check/uncheck a box while creating or editing a product in the backend, that would work too. Does anyone have an idea whether or not this can be done? Thanks!

Share this post


Link to post
Share on other sites

To follow up on what I posted earlier: I think I've found a way to do what I was describing, in case this helps anyone else.

 

In admin/feedmachine.php, just before this line...

foreach( $cur_feed['fields'] as $output_field_name=>$db_field ) {

 

...I added a simple "if" statement to check if the price is greater than or equal to 20:

if ($current_product_prices['products_price'] >= 20) {

 

and then added an additional closing "}" after this:

  	    fwrite($fps[$cur_feed_id]['fp'], $output_line);
     }
   }
 }

 

The complete block of code looks like this now:

// if statement added below, checking if price is greater than 20

 if ($current_product_prices['products_price'] >= 20) {

    foreach( $cur_feed['fields'] as $output_field_name=>$db_field ) {
      $output_field_value = '';
      switch( $db_field['type'] ) {
        case 'DB':
	      $output_field_value = $product[$db_field['output']];
	      break;
        case 'KEYWORD':
          $output_field_value = field_generator($db_field['output']);
	      break;
        case 'LOGIC':
          eval($db_field['output']);
	      break;
        case 'FUNCTION':
		  $params = explode('|', $db_field['output']);
		  $function = $params[0];
		  unset($params[0]);
		  $params[0] = &$product;
		  ksort($params);
		  $output_field_value = call_user_func_array($function, $params);
	      break;
	    case 'VALUE':
	    default:
          $output_field_value = $db_field['output'];
	      break;
      }

      if( isset($db_field['options']) ) $output_field_value = process_field_value($output_field_value, $db_field['options']);
         if( isset($db_field['filters']) && is_array($db_field['filters']) ) {
        $output_field_value = preg_replace($db_field['filters']['patterns'], $db_field['filters']['replacements'], $output_field_value);
      }

      $output_field_value = empty($cur_feed['text_qualifier']) ? preg_replace('#[' . $cur_feed['seperator'] . $cur_feed['newline'] . ']+#s', ' ', $output_field_value) : preg_replace('#' . $cur_feed['text_qualifier'] . '#s', $cur_feed['text_qualifier'] . $cur_feed['text_qualifier'], $output_field_value);

      $output_line .= $cur_feed['seperator'] . $cur_feed['text_qualifier'] . trim($output_field_value) . $cur_feed['text_qualifier'];

    }
    $output_line = substr($output_line, strlen($cur_feed['seperator'])) . $cur_feed['newline'];
       if( !empty($feeds[$cur_feed_id]['encoding']) && $feeds[$cur_feed_id]['encoding'] !== false ) {
         switch( $feeds[$cur_feed_id]['encoding'] ) {
       case 'utf8':
	    $output_line = utf8_encode($output_line);
	    break;
      }
       }
 	    fwrite($fps[$cur_feed_id]['fp'], $output_line);
     }
   }
 }

 } // added for IF statement above

 

This seems to do the trick. I created a test feed (a copy of the Yahoo feed, renamed "testfeed"), ran it, and saved the testfeed.txt file it created. Then I made the changes I described above, and ran it again, and used DiffMerge to compare that result to the first one I saved. From everything I can tell, the only items that are missing from the new feed are indeed those whose price is less than 20. Everything else appears to be untouched and intact. I double-checked the numbers against an export of my database, and they matched up (240 items in original testfeed.txt, 181 items after modification, and a total of 59 active under-$20 items in the db).

 

I'm no PHP whiz, but as far as I can tell, this modification achieves what I was looking for, and doesn't break anything. If anyone sees anything horribly wrong with it, feel free to let me know! :D

Share this post


Link to post
Share on other sites

I have two different feed configurations, one for bing and other for google products. They both encoding set as false but while one of the can produce the ® - registered character correctly, the other one replaces it with ® why would this be the case?

 

Edit: Found the problem. It is related to "HTML_ENTITIES" option.

Edited by psychoder

Share this post


Link to post
Share on other sites

Lech,

 

I was wondering if there is any intention to make this mod multi-lingual?

 

All the text is hardcoded in English in the files ...

 

I am happy to help code the changes ...

 

Regards,

Share this post


Link to post
Share on other sites

Lech,

I am trying to upload bing feed and got response from them that the file is not converted to UTF-8. By opening the file in notepad++ I see the file is encoded in unix and after I encode it manually to UTF-8, everything looks good. The question why it is not converting while I see the config have encoding set up it correctly. Could you tell me what is wrong ?

 

Here is the bing-simple.php file:

 

<?php
$feed_config = array('name' => 'Bing Product Search Simple Configuration',
                    'authors' => 'Lech', //list of authors
                    'filename' => 'bingshopping.txt', //default feed filename (this can be over-ridden by the user in the admin section)
                    'schema_version' => '2.0', //always set as '2.0' - this is set just to future-proof configurations in case the schema ever changes
                    //the following section of the feed configuration is the most important. It determines the fields that are output.
                    'fields' => array('MPID'               =>   array('output' => 'products_id',
                                                                    'type' => 'DB'
                                                                   ),
                                      'Title'            =>   array('output' => 'FM_UF_fc_manufacturer_and_product',
                                                                    'type' => 'FUNCTION',
                                                                   ),
                                      'Brand'            =>   array('output' => 'manufacturers_name',
                                                                    'type' => 'DB',
                                                                    'options' => array('STRIP_HTML', 'HTML_ENTITIES', 'STRIP_CRLF')
                                                                   ),
                                      'MPN'              =>   array('output' => 'products_model',
                                                                    'type' => 'DB'
                                                                   ),
                                      'UPC'            =>   array('output' => 'products_upc',
                                                                    'type' => 'DB'
                                                                   ),
                                      'ProductURL'             =>   array('output' => 'PRODUCTS_URL',
                                                                    'type' => 'KEYWORD'
                                                                   ),
                                      'Price'            =>   array('output' => 'FINAL_PRICE',
                                                                    'type' => 'KEYWORD'
                                                                   ),
                                      'Description'      =>   array('output' => 'products_description',
                                                                    'type' => 'DB',
                                                                    'options' => array('STRIP_HTML', 'HTML_ENTITIES', 'STRIP_CRLF')
                                                                   ),
                                      'ImageURL'       =>   array('output' => 'IMAGE_URL',
                                                                    'type' => 'KEYWORD'
                                                                   ),
                                      'MerchantCategory'     =>   array('output' => 'CATEGORY_TREE',
                                                                    'type' => 'KEYWORD',
                                                                    'options' => array('STRIP_HTML', 'STRIP_CRLF')
                                                                   ),
                                      'Condition'        =>   array('output' => 'new',
                                                                    'type' => 'VALUE'
                                                                   ),
                                      'B_Category'      =>   array('output' => 'Home Furnishings',
                                                                    'type' => 'VALUE',
                                                                   )
                                     ),
                    'add_field_names' => true, //whether to add header row in the feed with the field names
                    'seperator' => "\t", //the field separator in the feed. (For tab-delimited feeds this should be "\t". For csv feeds this should be ",")
                    'text_qualifier' => '', //the character with which to encapsulate field values. (For tab-delimited feeds this should usually be empty, i.e. ''. For csv feeds this should usually be '"')
                    'category_tree_seperator' => ' ', //the separator to use for the 'CATEGORY_TREE' KEYWORD (see the 'KEYWORD Field Type' section in the notes below)
                    //usually you will not need to worry about the following settings and can leave them as they are
                    'newline' => "\n",
                    'encoding' => 'utf8', //'utf8' or false for standard encoding
                    'currency_decimal_override' => false,
                    'currency_thousands_override' => '',
                    'include_record_function' => '' //(optional) specify a function that determines whether the product should be included in the feed
                   );

function FM_UF_lm_stock_check($product) {
 return $product['products_quantity'] > 0;
}

function FM_UF_fc_manufacturer_and_product($product) {
 return $product['manufacturers_name'] . ' ' . $product['products_name'];
}

?>

Edited by pleasureidea

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

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

Create an account

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

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×