导出产品的所有属性

时间:2016-07-28 15:25:06

标签: xml magento e-commerce magento-1.9 product

我写了这个脚本来导出我的所有产品数据。它一直工作到<admin>结。看起来有一个问题是获取属性的标签。

<?php $productCollection = Mage::getModel('catalog/product')->getCollection(); ?>
<?php echo '<?xml version="1.0" encoding="utf-8"?>'.PHP_EOL; ?>
<import>
    <?php if (!empty($productCollection)): ?>
        <?php /** @var Mage_Catalog_Model_Product $product */ ?>
        <?php foreach ($productCollection as $product): ?>
            <product>
                <?php $websiteIds = $product->getWebsiteIds(); ?>
                <?php if (!empty($websiteIds)): ?>
                    <websites>
                        <?php foreach ($websiteIds as $websiteId): ?>
                            <website>
                                <?php $website = Mage::getModel('core/website')->load($websiteId); ?>
                                <code><?php echo $website->getName(); ?></code>
                                <?php $storeIds = $website->getStoreIds(); ?>
                                <?php if(!empty($storeIds)): ?>
                                    <store_views>
                                        <?php foreach ($storeIds as $storeId): ?>
                                            <?php $store = Mage::getModel('core/store')->load($storeId); ?>
                                            <code><?php echo $store->getName(); ?></code>
                                        <?php endforeach; ?>
                                    </store_views>
                                <?php endif; ?>
                            </website>
                        <?php endforeach; ?>
                    </websites>
                <?php endif; ?>
                <?php $categoryIds = $product->getCategoryIds(); ?>
                <?php if (!empty($categoryIds)): ?>
                    <categories>
                        <?php foreach ($categoryIds as $categoryId): ?>
                            <id><?php echo $categoryId; ?></id>
                        <?php endforeach; ?>
                    </categories>
                <?php endif; ?>
                <admin>
                    <?php $attributes = $product->getAttributes(); ?>
                    <?php if (!empty($attributes)): ?>
                        <?php foreach ($attributes as $attribute): ?>
                            <attribute>
                                <name><?php echo $attribute->getStoreLabel($product); ?></name>
                                <value><?php echo $attribute->getFrontend()->getValue($product); ?></value>
                            </attribute>
                        <?php endforeach; ?>
                    <?php endif; ?>
                </admin>
                <?php if (!empty($storeIds)): ?>
                    <?php foreach ($storeIds as $storeId): ?>
                        <store_view>
                            <?php $store = Mage::getModel('core/store')->load($storeId); ?>
                            <code><?php echo $store->getName(); ?></code>
                            <?php Mage::app()->setCurrentStore($storeId); ?>
                            <?php $attributes = $product->getAttributes(); ?>
                            <?php if (!empty($attributes)): ?>
                                <attributes>
                                    <?php foreach ($attributes as $attribute): ?>
                                        <attribute>
                                            <name><?php echo $attribute->getStoreLabel($product); ?></name>
                                            <value><?php echo $attribute->getFrontend()->getValue($product); ?></value>
                                        </attribute>
                                    <?php endforeach; ?>
                                </attributes>
                            <?php endif; ?>
                        </store_view>
                    <?php endforeach; ?>
                <?php endif; ?>
            </product>
        <?php endforeach; ?>
    <?php endif; ?>
</import>

1 个答案:

答案 0 :(得分:0)

确实,问题的原因是要求获得标签。某些属性在前端不可见,这就是为什么您无法为其获取商店标签的原因。吸气剂

$attribute->getIsVisibleOnFront()

有助于确定是否设置了is_visible_on_front属性。

我不确定导入的目的是什么,以及是否必须包含不可见属性。方法

$attribute->getFrontendLabel()

可用于获取属性值,如何在“管理”面板中看到它 - &gt;管理属性页面。但是对于某些属性(我假设从表catalog_product_entity),它仍然是空的。