Magento的loadByAttribute自定义类别属性

一类我模块的我已创建自定义属性安装脚本如下所示:

$attrib = array( 'type' => 'varchar', 'group' => 'My Data', 'backend' => '', 'frontend' => '', 'label' => 'My Custom Field', 'input' => 'text', 'class' => '', 'source' => '', 'global' => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_STORE, 'visible' => true, 'required' => false, 'user_defined' => false, 'default' => '', 'searchable' => false, 'filterable' => false, 'comparable' => false, 'visible_on_front' => false, 'unique' => true, ); $installer->addAttribute(3, 'custom_field', $attrib);

现场展示了精致的管理,当我在我的脚本创建类别如下所示:

$p_category = Mage::getModel('catalog/category') ->setStoreId(0) ->load(2); $category = Mage::getModel('catalog/category'); $category->setStoreId(0) ->setName('Test Category') ->setCustomField('abcd') ->setDisplayMode('PRODUCTS') ->setAttributeSetId($category->getDefaultAttributeSetId()) ->setIsActive(1) ->setIsAnchor(1) ->setPath(implode('/',$p_category->getPathIds())) ->setInitialSetupFlag(true) ->save();

我可以看到在磁管理界面值“ABCD”。 但是,当我打电话下面的代码:

<?php $category = Mage::getModel('catalog/category')->loadByAttribute('custom_field', 'abcd'); print_r($category); ?>

我没有得到任何结果。 但是,如果我loadByAttribute使用“姓名”字段设置为“测试分类”,我得到的结果。

所以,在数据库中,我调查了catalog_category_entity_varchar表,并注意到“name”属性有两种STORE_ID = 0和STORE_ID = 1的条目,而“custom_field'属性只有为STORE_ID = 1的条目。

当我添加了一个STORE_ID = 0条目“custom_field”与在设置为“ABCD”的价值catalog_category_entity_varchar表,loadByAttribute得到预期的结果。

我的问题是,为什么在“名称”字段中得到的STORE_ID = 0项catalog_category_entity_varchar和我的自定义字段是不是?
如何加载通过自定义属性类别?

--------------解决方案-------------

我运行1.4.1.1,发现有一个自定义的产品属性类似的问题。 如果你通过一个属性,属性必须具有默认存储,以及你所感兴趣的存储值筛选集合,你可以看到为什么如果你做以下

Mage::Log($collection->getSelect()->__toString());

当你看到在日志文件中查询,你会看到磁做一个内部联接到为STORE_ID 0的属性表,因此,如果您还没有店面零创建一个值时,它不能给你结果。 好像在我的错误,我想Magento的应该做一个LEFT JOIN。

如果你改变了以下主要对全球那么就应该将其添加为商店

'global' => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,

这里更多比知道什么对粟特,因为你有很多事情,我不知道如果我按照你对STORE_ID(不在于它是一个有效的关注关注一个猜测,我只是不知道它进入图片)

当你设置你的属性,你使用

'filterable' => false,

尝试建立与此设置为true的新属性。 如果你看一下loadByAttribute源代码,它的使用属性过滤工作,所以如果你想用这个方法,你将需要过滤的属性。

分类:Magento的 时间:2015-03-15 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.411 (s). 10 q(s)