2012-01-04 12 views
6

Magento'da, farklı bir mağazadaki kategorileri geçerli mağazadan farklı bir kök kategorisine sahip özel bir navigasyon menüsü yapıyorum. How do I detect if a category has Include in Navigation Menu set to NO?Magento Category model tüm veriyi yüklemiyor

Ancak $ KATEGORİ-: oldukları gibi kategorilerde bazıları gizli olmalıdır sorunda olduğu gibi kategori modelinden bu niteliği okumak mümkün olmalıdır sayılı

ayarlı 'Navigasyon Menüsünde dahil et' > getIncludeInMenu(), Magento EE 1.11 kurulumundaki tüm kategoriler için NULL döndürüyor. beklendiği gibi 'is_active' özelliği çalışır halde

// 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> 
    } 
} 

kategoriden birine bir var dökümü, hayır 'include_in_menu' özelliği gösterir. Navigasyonda bir kategorinin görüntülenip görüntülenmeyeceğini belirlemenin alternatif bir yolu var mı? kategori nesnenin

Var dökümü:

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

Var dökümünüz nesneyi göstermiyor. Hangi nesne $ _category? İlk adım, nesnenin kullanmak istediğiniz özelliği/yöntemi içermesi gerektiğini doğrulamaktır. –

+0

Nesne bir "Mage_Catalog_Model_Category" dir. Tam nesneyi göstermek için var dökümü güncelledim. –

cevap

14

Bu Magento tembel yükleme kategori modeli kaynaklanmaktadır. Mage_Catalog_Model_Category modelindeki getChildrenCategories() yöntemi, bir kategori modeli koleksiyonu döndürür ve Magento, her model için ek EAV verileri yerine yalnızca temel model verilerini yükler. include_in_menu özniteliği EAV veri deposunda saklanır ve yüklenmemiş. Her kategori, Magento'nun her kategori için ek EAV verilerini yüklemesine zorlayacak olan $_category->load(); numaralı telefonu arayarak yüklemek zorunda kalabilir. Buna

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) 

: include_in_menu özelliği içerir

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 

// Loop through the categories 
foreach ($_sub_categories as $_category) 
{ 
    $_category->load(); 
    if ($_category->getIsActive() && $_category->getIncludeInMenu()) 
    { 
     <echo navigation link> 
    } 
} 

Bu bundan _data dizi değiştirir.

0

Sen kullanmak zorunda:

$ _category-> yük ($ _ KATEGORİ-> getId());

benim için çalıştı;)