【问题标题】:Custom Products Export PHP Script Not working自定义产品导出 PHP 脚本不起作用
【发布时间】:2018-09-26 09:53:14
【问题描述】:

我需要导出 csv 之类的 SKU |类别 ID |类别名称,导出后SKU字段为空,剩余的有值。

代码:https://codeshare.io/5Q690Q

如何发现错误?

【问题讨论】:

    标签: php csv customization magento-1.9 export-to-csv


    【解决方案1】:

    试试这个代码。

    <?php
    $mageFilename = 'app/Mage.php';
    if (!file_exists($mageFilename)) {
        echo $mageFilename." was not found";
        exit;
    }
    require_once $mageFilename;
    Mage::app();
    
    try {
        function getCategoryData()
        {
            $category = Mage::getModel('catalog/category');
            $tree = $category->getTreeModel();
            $tree->load();
    
            $ids = $tree->getCollection()->getAllIds();
            $categories = array();
            $rootCategoryId = 2;
            if ($ids)
            {
                foreach ($ids as $id)
                {
                    $category->load($id);
                    $categories[$id]['name'] = $category->getName();
                    $categories[$id]['path'] = $category->getPath();
                }
                foreach ($ids as $id)
                {
                    $path = explode('/', $categories[$id]['path']);
                    $string = '';
                    foreach ($path as $pathId)
                    {
                        if($pathId == 1 || $rootCategoryId == $pathId ) continue;
                        $string.= $categories[$pathId]['name'] . '/';
                    }
                    $categoryFullPaths[$id] = rtrim($string,"/");
                }
            }
            return $categoryFullPaths;
        }
    
        function get_values_for_keys($mapping, $keys)
        {
            $output_arr = array();
            foreach($keys as $key)
            {
                $output_arr[] = $mapping[$key];
            }
            return $output_arr;
        }
    
        $products = Mage::getModel("catalog/product")->getCollection();
        $products->addAttributeToSelect('category_ids');
        $products->addAttributeToSelect('sku');
    
        $fp = fopen('var/export/exports.csv', 'w');
        $csvHeader = array("sku", "category_ids","category_name");
        fputcsv( $fp, $csvHeader,",");
        $cat_name = array();
        $cat_array = array();
        $categoryFullPaths = getCategoryData();
        foreach ($products as $product)
        {
            $sku = $product->getSku();
            $categoryIds = implode('/', $product->getCategoryIds());//change the category separator
            $_cate_name = join(',', get_values_for_keys($categoryFullPaths, $product->getCategoryIds()));
            fputcsv($fp, array($sku, $categoryIds,$_cate_name), ",");
        }
        fclose($fp);
    
    } catch (Exception $e) {
        echo $e->getMessage();
        exit;
    }
    

    【讨论】:

    • 需要检查您的 magento 是否有任何特定的自定义或其他内容。因为我实现了相同的代码并且工作正常。看到这个屏幕排序:prntscr.com/kywgri
    • 我可以知道可能的错误吗?或者我怎么知道错误在哪里?
    • 在上面的代码中尝试替换 $sku = $product->getSku(); $sku = $product->getId();检查 Id 是否出现在该列?
    • 是的,id wokring。
    猜你喜欢
    • 2018-08-20
    • 2021-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多