我有一個我寫的特色產品模塊,它在頁面上放置一個自定義塊,其中包含與我在塊中定義的任何屬性相匹配的產品列表。最初我的工作是在CMS頁面的Content部分添加一條{{block...}}
行。這工作得很好,但我沒有得到傳呼機。所以,我固定的從內容部分去除{{block...}}
線和添加XML來佈局更新XML部分,像這樣:什麼是使用CMS頁面進行佈局更新的正確方法?
<reference name="content">
<block type="cms/block" name="product_list_top" />
<block type="vps_featured/list" name="vps_featured_list" template="catalog/product/sale_list.phtml">
<block type="catalog/product_list_toolbar" name="product_list_toolbar" template="catalog/product/list/toolbar.phtml">
<block type="page/html_pager" name="product_list_toolbar_pager"/>
</block>
<action method="setToolbarBlockName"><name>product_list_toolbar</name></action>
<action method="setAttributeName"><name>my_attribute</name></action>
</block>
</reference>
這也很好工作。然後我決定,因爲這個塊有這麼多的實例,如果我將一個XML文件添加到我的主題的佈局文件夾並將此代碼放在那裏,它會更清潔。然後,在佈局更新單元,我只是有這個代替:
<reference name="vps_featured_list">
<action method="setAttributeName"><name>other_attribute</name></action>
</reference>
所以,我創建了一個名爲vps_featured.xml
文件,並添加到了它:
<layout version="0.1.0">
<default>
<reference name="content">
<block type="cms/block" name="product_list_top" />
<block type="vps_featured/list" name="vps_featured_list" template="catalog/product/sale_list.phtml">
<block type="catalog/product_list_toolbar" name="product_list_toolbar" template="catalog/product/list/toolbar.phtml">
<block type="page/html_pager" name="product_list_toolbar_pager" />
</block>
<action method="setToolbarBlockName"><name>product_list_toolbar</name></action>
</block>
</reference>
</default>
</layout>
此佈局更新XML文件中引用在3210爲我的自定義功能模塊。我天真地認爲vps_featured.xml
只有當我的VPS精選模塊在頁面上時纔會被合併到頁面佈局中,這隻會發生在特殊CMS頁面上的這幾個實例中。顯然情況並非如此。這打破了每隔一頁,我猜是因爲它覆蓋了默認的句柄。
因此,這導致我問題#1:何時在頁面佈局中包含佈局xml文件?它們是否用於所有頁面,而不管引用它們的模塊是否實際使用?
然後我決定嘗試添加一個新的佈局句柄,我可以在我的CMS頁面中查找時引用它。我修改了我的佈局XML文件,因此主要部分位於<vps_featured_list>
標籤內,而不是<default>
標籤。這帶來了其他頁面的生命,但當然,我的CMS頁面不再有效,因爲該佈局更新句柄沒有在這些頁面上使用。我嘗試將<update handle="vps_featured_list" />
添加到CMS頁面的佈局更新XML部分,但那不起作用(我沒有想到它)。
所以這給我帶來了問題#2:什麼是正確的方法來實現這一點?
這聽起來不像是應該這麼難,但顯然我錯過了一些東西。我已經閱讀了所有可以在佈局中找到的內容,但它們總是很簡單的例子,比如「將其添加到每個產品頁面」。我不希望將某些內容添加到每個cms頁面...只是其中的一些。我堅持使用有問題的CMS頁面的佈局更新XML部分?我覺得必須有一個更清潔的方式。
感謝,
布賴恩
已更新,以糾正有關在CMS頁面中工作的更新標記的錯誤信息。 –
非常感謝你在alan-storm中的精彩迴應。實際上,我在尋求答案時發現了你最近的一本書,很可能會拿到一份。有趣的是,我已經嘗試了你剛纔建議的那些,當然這並不奏效。我會盡快查看你的其他建議。同時更新XML似乎工作得很好。當然會喜歡更新CMS頁面的手柄,雖然.... – BrianVPS
GRR!我增加了更多,但我花了很長時間,並超過了5分鐘的編輯限制。我厭倦了所有這些該死的規則!我只想成爲社區的一員!停止讓我經歷這麼多繁文!!節! – BrianVPS