我正在为 Magento 构建一个自定义产品导入模块,并且以前从未与 Magento 合作过。
我有一个包含所有产品的 CSV 文件。其中一列包含产品应分配到的类别,用斜杠分隔。前任:
Jewelry / Rings / Diamond
Jewelry / Neckless / Diamond
等等。
我遇到的问题是 Diamond 类别可以作为子类别存在于任意数量的父类别中。我的解决方案是打破路径(即 expload($categoryPath, "/"))
使用第一个示例(珠宝/戒指/钻石),我从商店根类别开始,检查它是否包含珠宝的子类别,如果包含,我获取该子类别的 ID 并递归地到达终点线,或者至少这是理论。
我遇到的问题就在这里...
$rootCategory = Mage::getModel('catalog/category') -> load($rootCategoryId);
$currentCategory = $rootCategory -> getChildrenCategories() -> loadByAttribute('name', $targetCategoryName);
这会给我一个错误...“在非对象中调用成员函数 getName()”...我假设是因为 getChildrenCategories() 正在返回一个集合,而我无法对其调用 loadByAttribute。
如果这对任何人都有意义,请告诉我如何仅使用名称从根类别加载子类别。我希望如果 loadByAttribute 无法加载类别(因为它不存在),它将返回 False,然后我可以创建类别。
为了回应 Pavels 的建议,我尝试了:
$targetCategoryName = 'Jewelry';
$subCategories = $rootCategory
-> getChildrenCategories()
-> addAttributeToFilter('name',$targetCategoryName)
-> setCurPage(1)
-> setPageSize(1)
-> load();
$currentCategory = $subCategories
-> getFirstItem();
$currentCategory 的名称是“dummy-category”。过滤器似乎不起作用。