Php 获取Magento属性名称而不是ID号?
我正在使用下面的脚本导出我们的产品列表,并将其发送到Google,以获得他们的购物列表服务(GoogleBase)。脚本运行良好,但品牌和制造商列为空:Php 获取Magento属性名称而不是ID号?,php,database,magento,attributes,magento-1.5,Php,Database,Magento,Attributes,Magento 1.5,我正在使用下面的脚本导出我们的产品列表,并将其发送到Google,以获得他们的购物列表服务(GoogleBase)。脚本运行良好,但品牌和制造商列为空: <?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_
<?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.domainname.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) *
1.2;
$product_data['brand'] = $product->getAttribute('manufacturer');
$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());
}
我找不到一种方法来显示制造商名称,而不是它的ID。我已尝试将“getAttribute”更改为“getData”和“getName”,但没有一个可以满足我的需要
感谢您的帮助 改用这个:作为背景信息的一部分:
本机Magento
select
和multiselect
属性选项存储在eav_属性_选项
和eav_属性_选项值
表中。eav\u属性\u选项中的主键option\u id
是与产品属性关联的值。
其思想是与产品相关联的选项值独立于商店视图,例如,该选项标签的翻译
getAttributeText()
方法使用属性源模型从数据库加载匹配的标签,并返回与ID匹配的标签:
所讨论的源模型是eav/entity\u attribute\u source\u table
产品上的所有select和multiselect属性都应使用getAttributeText()
方法。您是否尝试过Vinai建议的以下方法:
$product->getAttributeText('manufacturer');
那就是名字。
其他人建议:
$product->getManufacturer();
获取id。请查看一些相关线程:
请查看此搜索的结果:
我会测试一些样品,让你知道哪一个最可靠
HTH可能的重复:$product->getManufacturerText()
将返回属性制造商文本的值(这可能不是需要的)。
public function getAttributeText($attributeCode)
{
return $this->getResource()
->getAttribute($attributeCode)
->getSource()
->getOptionText($this->getData($attributeCode));
}
$product->getAttributeText('manufacturer');
$product->getManufacturer();