在我的模型觀察器類,我有:Magento的:散步配置屬性的集合在一個模塊中Observer.php文件
$products = Mage::getResourceModel('catalog/product_collection')
->addAttributeToSelect('sku')
->addAttributeToSelect(array('name', 'short_description', 'description', 'price', 'image', 'status', 'manufacturer', 'url_path'), 'inner');
然後我嘗試迭代:
Mage::getSingleton('core/resource_iterator')->walk($products->getSelect(), array('productCallback'), array('arg1' => '===='));
這是從那兒剽竊Fontis教程:
http://www.fontis.com.au/blog/magento/loading-large-collections
現在,我想我的功能添加到我的CLAS s:
private function xproductCallback($args)
{
$product = Mage::getModel('catalog/product');
$product->setData($args['row']);
if ($product->getTypeId()=="configurable") {
echo $args['arg1'] . "\n";
echo $product->getSku() . ': ' . $product->getName() . "TYPE ". $product->getTypeId() ."\n";
}
}
現在能行嗎?不這麼認爲:
Warning: call_user_func() expects parameter 1 to be a valid callback, function 'productCallback' not found or invalid function name app/code/core/Mage/Core/Model/Resource/Iterator.php on line 50
所以我應該在哪裏把我的回調函數?
奇怪的是集合是如何工作的。我只想要產品類型可配置,但當我添加
->addAttributeToFilter('type_id', array('eq' => Mage_Catalog_Model_Product_Type::CONFIGURABLE))
(或其任何變體)它不會給我一個可配置的集合散步的集合。這是爲什麼?
感謝您的提示。奇怪的是,如果我將它放在前端.phtml文件中,它會啓動該功能。但是我們知道這在道德上是錯誤的。我最終將一個事件觀察者添加到了config.xml中,以便我可以包含這個方法 - 這讓我可以將我的回調代碼保存在同一個Observer.php代碼中 - 沒有「私有」功能,因此這將是全局的嗎? –