我已經繞過這一點,我試過各種不同的值,從各種網站和幾個電子書的主題。完全沒有任何一致性的表象使這比我覺得應該更加困難。Magento佈局XML沒有實例化塊
基本上我不能讓它使用content.phtml
覆蓋主模板中的content
部分。我已經迫使它通過控制器像這樣做了:
$content = $this->getLayout()->createBlock(...);
$this->getLayout()->getBlock('content')->append($content);
但我覺得,這使得我的模塊不靈活,並使得部分配置冗餘和誤導。
我正在使用一個名爲的塊,它擴展了Mage_Core_Block_Template
。
文件:config.xml中
<?xml version="1.0"?>
<config>
<modules>
<Company_AdvSearch>
<version>0.1.0</version>
</Company_AdvSearch>
</modules>
<frontend>
<routers>
<advsearch>
<use>standard</use>
<args>
<module>Company_AdvSearch</module>
<frontName>advsearch</frontName>
</args>
</advsearch>
</routers>
<layout>
<updates>
<advsearch module="Company_AdvSearch">
<file>advsearch.xml</file>
</advsearch>
</updates>
</layout>
</frontend>
<global>
<blocks>
<advsearch>
<class>Company_AdvSearch_Block</class>
</advsearch>
</blocks>
</global>
</config>
文件:advsearch.xml
<?xml version="1.0" encoding="UTF-8"?>
<layout version="0.1.0">
<advsearch_index_index>
<reference name="head">
<action method="setTitle">
<title>Advanced Search</title>
</action>
</reference>
<reference name="root">
<action method="setTemplate">
<template>page/2columns-left.phtml</template>
</action>
</reference>
<reference name="content">
<block type="advsearch/results" name="advsearch" template="advsearch/content.phtml"/>
</reference>
</advsearch_index_index>
</layout>
所以:
- 我將如何得到它的實際更新
content
佈局部分? - 如何使用我的模塊更新其他部分(即
left
),以便他們可以訪問相同的數據?
更新
我碰到的另一個問題。插入此塊後,引用的組件成功消失。
<reference name="left">
<remove name="catalog.compare.sidebar"/>
<remove name="left.reports.product.viewed"/>
<remove name="catalog.product.related"/>
</reference>
現在,在評論此塊,甚至從服務器刪除文件後,我無法讓這些部分回到這個頁面。它似乎完全忽略了XML文件(正常緩存和編譯器緩存均被禁用)。
你嘗試簡單地調用此2線你的行爲'$ this-> loadLayout(); $ this-> renderLayout();' –
我想我應該指出這一點。是的,他們在那裏。 –