2013-08-05 197 views
0

我對自定義頁面上顯示的Magento cms靜態塊有一些疑問。 例如,我有3個靜態塊(塊1,塊2,塊3),我需要顯示塊1在類別1和子類別1,塊2在類別2和子類別2,塊3在其他頁面(家庭,約等)在自定義頁面上顯示自定義靜態塊Magento

我嘗試使用Mage::app()->getFrontController()->getRequest()->getRequestUri()

但我接收到的請求,如「category1.html」如果我們打算到這一類的子類 - 塊改變爲默認。

如果使用Mage::app()->getFrontController()->getRequest()我收到「目錄/類別/視圖/ ID/ID_NUMBER」

我真的不知道如何來解決這個問題。

感謝您的回答!在你

+0

你的問題是有點混亂。你是否試圖將靜態塊分配給特定的類別? – Axel

+0

是的,我只有3個類別+子類別和其他頁面,如主頁,運輸等,我想顯示在這個類別(cat1 + subcat1 = block1等)的管理員創建3個不同的靜態塊和其他頁面的塊4。 – Oleg

+0

爲什麼不能使用允許您將靜態塊分配給類別的內置功能?我添加了一個答案,概述了執行此操作的步驟。 – Axel

回答

1

您可以使用自定義佈局更新功能將一個塊添加到頁面的特定部分。

注意:如果您有自定義主題,則頁腳的引用名稱可能會有所不同。這種方法已經過測試工作在現代主題包含Magento的

  1. 轉到目錄>管理類別
  2. 選擇你想你的塊分配給該類別。
  3. 轉至自定義設計選項卡。
  4. 設置使用父類別設置No
  5. 自定義佈局更新,插入你的靜態塊以下XML
    <reference name="bottom.container">
    <block type="cms/block" name="my_footer_block"> <action method="setBlockId"> <block_id>my_footer_block</block_id>
    </action>
    </block>
    </reference>

  6. 標識符(BLOCK_ID)更換my_footer_block

  7. 根據清除Magento緩存系統>緩存管理並刷新分類頁面。

如果這不起作用,那麼參考名稱可能對您正在使用的主題不正確。您可以通過查看app/design/frontend/[THEME PARENT]/[THEME CHILD]/layout/page.xml並在文件中搜索page/html_footer來查看參考名稱。

在該文件中,你會發現這樣的事情:

<block type="page/html_footer" name="footer" as="footer" template="page/html/footer.phtml"> 
    <block type="page/html_wrapper" name="bottom.container" as="bottomContainer" translate="label"> 
     <label>Page Footer</label> 
     <action method="setElementClass"><value>bottom-container</value></action> 
    </block> 
    <block type="page/template_links" name="footer_links" as="footer_links" template="page/template/links.phtml"/> 
     <block type="page/switch" name="store_switcher" as="store_switcher" template="page/switch/stores.phtml"/> 
    </block> 
    <block type="core/text_list" name="before_body_end" as="before_body_end" translate="label"> 
     <label>Page Bottom</label> 
    </block> 
</block> 

注意name屬性爲page/html_wrapper塊。這是在步驟步驟5中提供的代碼中使用的名稱參考。如果與bottom.container不同,請更改bottom.container以匹配page.xml文件中的內容。

+0

謝謝你的幫助!這個例子真的幫助我! – Oleg

0

覆蓋的catalog.xml本地模塊 添加在 內容參考

在您目錄/分類/ voew.phtml 添加以下代碼

$ _current_category = $這 - > getCurrentCategory();

if(cond =='1st category'){ echo $ this-> getChildHtml('block1'); }

類似地,對於其它的塊

0

可以簡單地分配使用內置的功能的Magento提供了一個靜態塊特定類別。

  1. 轉到目錄>管理類別
  2. 單擊要塊分配給左側的類別。
  3. 轉到顯示設置標籤
  4. 設置顯示模式要麼Static block onlyStatic block with products
  5. 設置CMS塊到您要在此類別上顯示的靜態塊。
  6. 點擊保存類別按鈕。

對不同的類別重複此步驟。您可以選擇一個唯一的靜態塊,或者按照這種方式將相同的一個分配給多個類別。

+0

我試過這個版本,但我需要在頁腳中顯示當前塊 – Oleg

+0

我已經添加了另一個答案,詳細說明如何做到這一點。今後,請詳細說明您嘗試實現的所有細節,直至放置在頁面上(在您的情況下,類別頁腳中的靜態塊)。這將允許這裏的人給你一個正確的答案,你正在努力達到的目標。 – Axel

1

這可能幫助你

Strategy : Check current page is whether current category is available on current page or not, If available then you can check it's level and depending on that you can show you block 

Solution : 
$_current_category=$this->getCurrentCategory(); 
1)get current category and if category not available then show default block 
2)if category found get it's level $_current_category->getLevel() and then you can place your block accordingly