我写了这个脚本来导出我的所有产品数据。它一直工作到<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>
答案 0 :(得分:0)
确实,问题的原因是要求获得标签。某些属性在前端不可见,这就是为什么您无法为其获取商店标签的原因。吸气剂
$attribute->getIsVisibleOnFront()
有助于确定是否设置了is_visible_on_front属性。
我不确定导入的目的是什么,以及是否必须包含不可见属性。方法
$attribute->getFrontendLabel()
可用于获取属性值,如何在“管理”面板中看到它 - &gt;管理属性页面。但是对于某些属性(我假设从表catalog_product_entity
),它仍然是空的。