2011-10-03 39 views
0

我从另一个堆栈溢出的答案采取以下脚本。PHP Magento的/谷歌导入脚本

<?php 
define('SAVE_FEED_LOCATION','google_base_feed.txt'); 
set_time_limit(1800); 
require_once '../app/Mage.php'; 
Mage::app('default'); 
try{ 
    $handle = fopen(SAVE_FEED_LOCATION, 'w'); 

    $heading = array('id','mpn', 'upc','title','description','link','image_link','price','brand','product_type','condition', 'google_product_category', 'manufacturer', 'availability'); 
    $feed_line=implode("\t", $heading)."\r\n"; 
    fwrite($handle, $feed_line); 

    $products = Mage::getModel('catalog/product')->getCollection(); 
    $products->addAttributeToFilter('status', 1); 
    $products->addAttributeToFilter('visibility', 4); 
    $products->addAttributeToSelect('*'); 
    $prodIds=$products->getAllIds(); 

    $product = Mage::getModel('catalog/product'); 

    $counter_test = 0; 

    foreach($prodIds as $productId) { 

     if (++$counter_test < 30000){ 

      $product->load($productId); 

      $product_data = array(); 
      $product_data['sku'] = $product->getSku(); 
      $product_data['mpn'] = $product->getData('upc'); 
      $product_data['upc'] = $product->getData('upc'); 

      $title_temp = $product->getName(); 
      if (strlen($title_temp) > 70){ 
       $title_temp = str_replace("Supply", "", $title_temp); 
       $title_temp = str_replace(" ", " ", $title_temp); 
      } 
      $product_data['title'] = $title_temp; 


      $product_data['description'] = substr(iconv("UTF-8","UTF-8//IGNORE",$product->getDescription()), 0, 900); 
      $product_data['Deeplink'] = "http://www.myshop.co.uk/store/".$product->getUrlPath(); 
      $product_data['image_link'] = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA).'catalog/product'.$product->getImage(); 

      $price_temp = round($product->getPrice(),2); 
      $product_data['price'] = round($product->getPrice(),2) + 5; 

      $product_data['brand'] = $product->getData('brand'); 

      $product_data['product_type'] = 'Pet Products and Accessories'; 
      $product_data['condition'] = "new"; 
      $product_data['category'] = $product_data['brand']; 
      $product_data['manufacturer'] = $product_data['brand']; 

      $product_data['availability'] = "in stock"; 

      foreach($product_data as $k=>$val){ 
       $bad=array('"',"\r\n","\n","\r","\t"); 
       $good=array(""," "," "," ",""); 
       $product_data[$k] = '"'.str_replace($bad,$good,$val).'"'; 
      } 

      echo $counter_test . " "; 

      $feed_line = implode("\t", $product_data)."\r\n"; 
      fwrite($handle, $feed_line); 
      fflush($handle); 

     } 

    } 

    fclose($handle); 
} 
catch(Exception $e){ 
    die($e->getMessage()); 
} 

如果你看一下,看起来了产品价格的部分:

$product_data['price'] = round($product->getPrice(),2) + 5; 

我不明白什么是在该行发生。出于某种原因,剧本正在改变我们的价格。

该示例的成本价格52.80£,具有56.54£一个零售价格。该剧本的价格为61.54英镑。

脚本应该取价格(56.54英镑)和增值税(20%)。所以一旦脚本运行,结果文本文件中的价格应该是67.85英镑。

A)的价格是多少行实际上在做什么? B)如何更改价格以增加20%?

+0

这看起来很奇怪。你从哪个答案中得到了答案? –

+0

http://stackoverflow.com/questions/7210620/magento-1-6-google-shopping-products-content/7549430#7549430我编辑了字段等,但脚本几乎是逐字。 – dannymcc

回答

1

价格线将$product->getPrice()的值舍入到小数点后两位,加5,然后将值赋给$product_data['price']

要通过自身的百分比增加一个数字,比如说20%,你本身加上你想要的百分比乘以数量(如一个分数):

$with_vat_number = $no_vat_number * 1.20; 

因此,要获得最终的圆角数,使用round

$rounded_with_vat_number = round(($no_vat_number * 1.20), 2); 
+0

我真的只是摸索出它的加入5,但我并没有意识到这是四舍五入起来。因此,我已替换为$ product_data [ '价格'] =圆价格线($产品 - >用getPrice(),2)* 1.2;这导致5位数字价格(67.848)。为什么忽略四舍五入的原因? – dannymcc

+0

这是因为你四舍五入然后乘以一个非整数,所以确切的结果是返回。您需要添加百分比,然后轮到。我已经更新了答案,以说明这一点。 – Alex

+0

啊,我明白了,谢谢! – dannymcc

0

另一种方式让你的价格在你的谷歌feed显示为含增值税,低于更换:

$price_temp = round($product->getPrice(),2); 
$product_data['price'] = round($product->getPrice(),2) + 5; 

随着下面的代码:

//VAT Stuff 
$vat = 20; //percent 
$pvat = $vat/100; 
$product_data['price']= round(($product->getPrice() + $product->getPrice() * $pvat),2); 

这时候增值税额的变化,然后,而不必制定出分数等方式,只是改变了“$增值税= 20;无论新的增值税百分比是多少。所以当它减少到17.5时,你将代码更改为“$ vat = 17.5;” (不带引号偏离航向!)