2013-05-15 75 views
2

我有一個自定義類別屬性,我想添加到正文類。至於我能找到什麼人做的是Magento:在正文類中顯示自定義屬性

  1. 覆蓋的CategoryController並添加類似$root->addBodyClass($category->getMyAttribute());但我不希望覆蓋核心類...

  2. 在他們增加了管理面板像<reference name=」root」><action method=」addBodyClass」><className>caravan-motorhome-lighting</className></action></reference>這樣的每個類別都不使用屬性本身,而是直接添加類。因爲我已經有了一個屬性,我當然不想克隆它並以這種方式添加類。

那麼我最喜歡的解決辦法是一些佈局更新,我可以添加到該說

<reference name=」root」> 
    <action method=」addBodyClass」> 
     <className> 
      get value of my custom attribute here dynamically 
     </className> 
    </action> 
</reference> 

沒有人有一個想法local.xml中如何這可能是工作或其他想法,我沒有連想都沒想?

回答

5

您可以使用Magento佈局XML的一個非常酷的功能來實現這一點。你需要一個模塊來實現它。要麼專門爲此創建一個模塊,要麼使用主題模塊(如果有的話) - 這取決於您決定什麼是最好的。

我會告訴你一個例子,我將添加含有類body標籤的ID類:

在我的佈局XML,我會通過catalog_category_default手柄,以添加。這樣,我可以稍後使用Mage::registry('current_category')來檢索當前類別。因此,在您的佈局XML中執行類似如下的操作:

<catalog_category_default> 
    <reference name="root"> 
     <action method="addBodyClass"> 
      <className helper="mymodule/my_helper/getCategoryClass" /> 
     </action> 
    </reference> 
</catalog_category_default> 

此屬性是重要部分:helper="mymodule/my_helper/getCategoryClass"。這相當於在代碼中調用Mage::helper('mymodule/my_helper')->getCategoryClass();

無論從該函數返回什麼,都將用作<className>節點的值。您可能想要使用您認爲更合適的不同幫手,這取決於您自己決定。

進行着與例如,下面的功能:

public function getCategoryClass() { 
    return 'category-id-' . Mage::registry('current_category')->getId(); 
} 

你會想,這樣它檢索您的屬性的值更改代碼。例如由Mage::registry('current_category')返回的類別上的getMyAttribute()

另外,您需要確保返回的東西適合作爲CSS類。在這個例子中,我們不需要做任何事情,因爲ID將始終只是數字,將被附加到category-id-。如果你的屬性的值並不總是爲了安全起見,你可能要考慮使用的東西like this

It works!

+0

這聽起來很驚人的 - 正是我一直在尋找。我會嘗試一下! –

+0

作品像一個魅力 –

+0

@RiaElliger優秀的,很高興聽到它。 –

相關問題