你的问题的答案是不要依赖肥皂来提供你想要的对象,而是用它来提供获得你想要的对象的方法。这是如何思考的:
- 让soap给你一个类别中的产品ID列表
- 使用该列表加载产品集合
- 根据您的需求过滤产品集合
如果您正在编写将在与 magento 相同的服务器上执行的代码,只需执行以下操作:
- 创建一个名为“Shoes”的属性集
- 创建一个名为 shoe_type 的下拉属性,并为您要过滤的每种鞋子类型(耐克、锐步等)添加选项。请注意下拉属性 ID。
- 在您的 magento 根目录中的 test.php 文件中使用以下代码。我已经对其进行了测试,并且可以正常工作。
这个想法是,您将根据“IN”类别创建一个集合,并根据某些属性过滤它们。
echo "<PRE>";
umask(0);
// MAKE SURE TO PUT THIS FILE IN THE RIGHT PLACE (MAGENTO ROOT)
require_once 'app/Mage.php';
Mage::app('admin');
$attributeSetId = '26'; // Your attribute set id (shoes)
$shoeTypeId = '1'; // The ID of the dropdown item to filter on (taken from the ids of the items you added to the shoe_type attribute
// Create a collection based on a catalog category. Load category ID 196
$products = Mage::getModel('catalog/category')->load(196)
->getProductCollection()
->addAttributeToSelect('*')
->addAttributeToFilter('status', 1)
->addAttributeToFilter('visibility', 4)
->addAttributeToFilter('attribute_set_id', $attributeSetId)
->addAttributeToFilter('type_id', 'simple')
->addAttributeToFilter('shoe_type', $shoeTypeId);
foreach ($products as $product)
{
// Write out the useful info!
var_dump($product->debug());
}
使用这种方法不仅快了近 100 倍,而且您可以更清楚地使用 magento 的对象模型。Soap 对于从服务器到服务器的通信更有用,或者如果您需要一台 Windows 机器与您的 magento linux 机器通信(就像我使用同步服务一样)。