我正在Magento中构建一个自定义导航菜单,该菜单显示来自不同商店的类别,这些商店具有与当前商店不同的根类别。某些类别应隐藏,因为它们将“包含在导航菜单中”设置为“否”。
应该可以从类别模型中读取此属性,如以下问题:How do I detect if a category has Include in Navigation Menu set to NO?
然而,$ class-> getIncludeInMenu()为我的Magento EE 1.11安装上的所有类别返回NULL。
// Load child categories for a specific root category
$_uk_default_root_id = Mage::app()->getStore('uk_default')->getRootCategoryId();
$_uk_default_root_category = Mage::getModel('catalog/category')->load($_uk_default_root_id);
$_sub_categories = $_uk_default_root_category->getChildrenCategories();
// Loop through the categories
foreach ($_sub_categories as $_category)
{
if ($_category->getIsActive() && $_category->getIncludeInMenu())
{
<echo navigation link>
}
}
其中一个类别的var转储显示没有'include_in_menu'属性,尽管'is_active'属性按预期工作。是否有其他方法可以确定是否应在导航中显示某个类别?
类别对象的转储:
object(Mage_Catalog_Model_Category)[423]
protected '_eventPrefix' => string 'catalog_category' (length=16)
protected '_eventObject' => string 'category' (length=8)
protected '_cacheTag' => string 'catalog_category' (length=16)
protected '_useFlatResource' => boolean false
private '_designAttributes' =>
array (size=6)
0 => string 'custom_design' (length=13)
1 => string 'custom_design_from' (length=18)
2 => string 'custom_design_to' (length=16)
3 => string 'page_layout' (length=11)
4 => string 'custom_layout_update' (length=20)
5 => string 'custom_apply_to_products' (length=24)
protected '_treeModel' => null
protected '_defaultValues' =>
array (size=0)
empty
protected '_storeValuesFlags' =>
array (size=0)
empty
protected '_lockedAttributes' =>
array (size=0)
empty
protected '_isDeleteable' => boolean true
protected '_isReadonly' => boolean false
protected '_resourceName' => string 'catalog/category' (length=16)
protected '_resource' => null
protected '_resourceCollectionName' => string 'catalog/category_collection' (length=27)
protected '_dataSaveAllowed' => boolean true
protected '_isObjectNew' => null
protected '_data' =>
array (size=15)
'entity_id' => string '16' (length=2)
'entity_type_id' => string '3' (length=1)
'attribute_set_id' => string '3' (length=1)
'parent_id' => string '15' (length=2)
'created_at' => string '2011-11-16 12:16:27' (length=19)
'updated_at' => string '2011-12-19 16:19:08' (length=19)
'path' => string '1/15/16' (length=7)
'position' => string '1' (length=1)
'level' => string '2' (length=1)
'children_count' => string '8' (length=1)
'is_active' => string '1' (length=1)
'request_path' => null
'name' => string 'Vacuum Cleaners' (length=15)
'url_key' => string 'vacuum-cleaners' (length=15)
'is_anchor' => string '1' (length=1)
protected '_hasDataChanges' => boolean true
protected '_origData' =>
array (size=15)
'entity_id' => string '16' (length=2)
'entity_type_id' => string '3' (length=1)
'attribute_set_id' => string '3' (length=1)
'parent_id' => string '15' (length=2)
'created_at' => string '2011-11-16 12:16:27' (length=19)
'updated_at' => string '2011-12-19 16:19:08' (length=19)
'path' => string '1/15/16' (length=7)
'position' => string '1' (length=1)
'level' => string '2' (length=1)
'children_count' => string '8' (length=1)
'is_active' => string '1' (length=1)
'request_path' => null
'name' => string 'Vacuum Cleaners' (length=15)
'url_key' => string 'vacuum-cleaners' (length=15)
'is_anchor' => string '1' (length=1)
protected '_idFieldName' => string 'entity_id' (length=9)
protected '_isDeleted' => boolean false
protected '_oldFieldsMap' =>
array (size=0)
empty
protected '_syncFieldsMap' =>
array (size=0)
empty
答案 0 :(得分:14)
这是由于Magento延迟加载类别模型。 getChildrenCategories()
模型上的Mage_Catalog_Model_Category
方法返回类别模型的集合,Magento仅加载核心模型数据而不是每个模型的附加EAV数据。 include_in_menu
属性存储在EAV数据存储中,尚未加载。
可以通过调用$_category->load();
强制加载每个类别,这将迫使Magento为每个类别加载额外的EAV数据。
// Loop through the categories
foreach ($_sub_categories as $_category)
{
$_category->load();
if ($_category->getIsActive() && $_category->getIncludeInMenu())
{
<echo navigation link>
}
}
这会更改_data
数组:
array (size=15)
'entity_id' => string '16' (length=2)
'entity_type_id' => string '3' (length=1)
'attribute_set_id' => string '3' (length=1)
'parent_id' => string '15' (length=2)
'created_at' => string '2011-11-16 12:16:27' (length=19)
'updated_at' => string '2011-12-19 16:19:08' (length=19)
'path' => string '1/15/16' (length=7)
'position' => string '1' (length=1)
'level' => string '2' (length=1)
'children_count' => string '8' (length=1)
'is_active' => string '1' (length=1)
'request_path' => null
'name' => string 'Vacuum Cleaners' (length=15)
'url_key' => string 'vacuum-cleaners' (length=15)
'is_anchor' => string '1' (length=1)
对此:
array (size=33)
'entity_id' => string '16' (length=2)
'entity_type_id' => string '3' (length=1)
'attribute_set_id' => string '3' (length=1)
'parent_id' => string '15' (length=2)
'created_at' => string '2011-11-16 12:16:27' (length=19)
'updated_at' => string '2011-12-19 16:19:08' (length=19)
'path' => string '1/15/16' (length=7)
'position' => string '1' (length=1)
'level' => string '2' (length=1)
'children_count' => string '8' (length=1)
'is_active' => string '1' (length=1)
'request_path' => null
'name' => string 'Vacuum Cleaners' (length=15)
'url_key' => string 'vacuum-cleaners' (length=15)
'is_anchor' => string '1' (length=1)
'meta_title' => null
'display_mode' => string 'PRODUCTS' (length=8)
'custom_design' => null
'page_layout' => null
'url_path' => string 'vacuum-cleaners' (length=15)
'image' => string 'heading_vacuums_1.png' (length=21)
'include_in_menu' => string '1' (length=1)
'landing_page' => null
'custom_use_parent_settings' => string '0' (length=1)
'custom_apply_to_products' => string '0' (length=1)
'filter_price_range' => null
'description' => null
'meta_keywords' => null
'meta_description' => null
'custom_layout_update' => null
'available_sort_by' => null
'custom_design_from' => null
'custom_design_to' => null
其中包含include_in_menu
属性。
答案 1 :(得分:0)
你必须使用:
$ _类别 - &GT;负载($ _类别 - &GT;的getId());
为我工作;)