如何在magento的自定义脚本中获取产品的多个类别和子类别

亚历克斯

我正在尝试根据此Magento帖子:构建产品供稿的产品数据提取来构建供稿生成器暂时,我的问题是产品的类别和子类别。我的代码:

<?php
error_reporting(E_ALL | E_STRICT);
ini_set("display_errors", 1);

define('SAVE_FEED_LOCATION','feed/compari.csv');

//$objDateTime = new DateTime('NOW');

require 'app/Mage.php';
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);

$products = Mage::getModel('catalog/product')->getCollection();
$products->addAttributeToFilter('status', 1); //1 is set to select product in stock
$products->addAttributeToFilter('visibility', 4); //4 is set to select active products
$products->addAttributeToSelect('*');
$prodIds=$products->getAllIds();

$product = Mage::getModel('catalog/product');
$counter = 0;
$feedaray=[];

foreach($prodIds as $productId) {
if (++$counter < 500000){

    $product->load($productId);

    $title_temp = $product->getName();
    if (strlen($title_temp) > 255){
        $title_temp = str_replace("Supply", "", $title_temp);
        $title_temp = str_replace("  ", " ", $title_temp);
    } //$title_temp will hold the product name

    $maincat = $subcats = '';
    $categoryCollection = $product->getCategoryCollection();

如果我做var_dump($ title_temp。'categorie:'。$ categorie_id);

    foreach($categoryCollection as $cat){

        $categorie_id=$cat->getData()['entity_id'];
        $_cat_ac = Mage::getModel('catalog/category')->load($categorie_id);

        if($subcats_ac == ''){
            $maincat_ac = $subcats_ac = $_cat_ac->getName();
        }else {
            $subcats_ac .= ">".$_cat_ac->getName();
        }

        echo '<pre>';
        var_dump($title_temp.' categorie: '.$categorie_id);
        echo '</pre>';
    }

我得到核心的结果:

string(59) "product 1 categorie: 3" - prime    category
string(60) "product 1 categorie: 37" - sub category
string(45) "product 2 categorie: 4" - prime category
string(46) "product 2 categorie: 21" - sub category

此外,我需要准备要导出到csv的数据,我这样做是这样的:

        $stock = Mage::getModel('cataloginventory/stock_item')->loadByProduct($productId);

    $product_data = array();
    $product_data['ProductID'] = $productId;
    $product_data['ProductName'] = substr(iconv("UTF-8","UTF-8//IGNORE",$title_temp), 0, 255);
    $product_data['SKUnumber'] = $product->getSku();
    $product_data['PrimaryCategory'] = $maincat_ac; //this is spitting same data for all products
    $product_data['SecondaryCategory'] = $subcats_ac;  //this is spitting same data for all products
    $product_data['ProductURL'] = $StoreURL.$product->getUrlPath(); //$StroeURL is set as a string
    $product_data['ProductImageURL'] = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA).'catalog/product'.$product->getImage();
    $product_data['ShortProductDescription'] = substr(iconv("UTF-8","UTF-8//IGNORE",$product->getDescription()), 0, 80)."...";
    $product_data['LongProductDescription'] = substr(iconv("UTF-8","UTF-8//IGNORE",$product->getDescription()), 0, 2000);
    $product_data['SalePrice'] = round($product->getFinalPrice(),2);
    $product_data['RetailPrice'] = round($product->getPrice(),2);
    $product_data['ManufacturerName'] =$product->getAttributeText('manufacturer');
    $product_data['Quantity'] = round($stock->getQty(),2);
    $product_data['Currency'] = Mage::app()->getStore()->getCurrentCurrencyCode();

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

    $feedaray[]=$product_data;
    echo $counter  . " ";
 }
}
$handle=fopen(SAVE_FEED_LOCATION, 'w');
foreach ($feedaray as $fields) {
   fputcsv($handle, $fields);
}
fclose($handle);
?>

问题出在不替换corect数据的maincat_ac和subcat_ac。

亚历克斯

解决问题的方法

$cats=[];
    foreach($categoryCollection as $cat){
        $cats[]=$cat->getData()['entity_id'];
    }

    foreach ($cats as $category_id) {
        $_cat = Mage::getModel('catalog/category')->load($category_id) ;
        if($subcats == ''){
            $maincat = $subcats = $_cat->getName();
        }else {
            $subcats .= ">".$_cat->getName();
        }
    }

可能不是最好的解决方案。如果您有其他想法,请分享。问候

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在magento中获取当前类别及其子类别?

如何在magento中显示类别和子类别

如何从自定义帖子类型获取自定义类别子弹和ID?

如何在管理单个产品编辑页面中获取产品类别自定义元字段的值?

类别和子类别基于自定义属性的产品集合

从自定义帖子类型中获取类别

如何在帖子/页面中打印自定义帖子类型类别名称

如何在woocommerce的自定义类别页面中显示产品描述

如何查找自定义帖子类型类别名称和类别 ID

如何在WordPress中自定义帖子类型的自定义类别的帖子循环?

Django 中的类别、子类别和产品

如何在Magento中为一个类别创建自定义模板?

如何在magento的自定义类别属性中显示编辑器?

如何在Magento Fishpig中的自定义模板上显示类别帖子?

获取类别中的自定义帖子和普通帖子

在 wordpress 自定义帖子类型查询中获取当前帖子类别 slug

Woocommerce仅在特定类别和特定页面中向产品添加自定义产品计数

在自定义家庭和产品类别档案中显示WooCommerce产品属性

如何在Kylo中添加自定义类别属性?

Magento-获取类别自定义属性值

从Wordpress中的自定义帖子类型的类别中获取ACF文本字段值

如何在wordpress自定义页面上获取产品类别的所见即所得自定义字段(ACF)的值

自定义帖子类型中的Wordpress列表类别

获取自定义帖子类型 [Wordpress] [活动管理器] 中的每个类别

从自定义帖子类型 Wordpress 的类别中获取帖子

获取 WooCommerce 中顶级产品类别的自定义数组

根据Woocommerce中的运输区域和产品类别显示自定义消息

显示自定义类别的子类别-WordPress

使用Entity Framework获取每个类别和子类别中的前5名产品