我想使頁面的一部分可用於通過AJAX獲取。我想要使用URL參數bare
,它會告訴Magento顯示一個頁面,其中應用於根塊的不同模板。該裸模板看起來是這樣的:有條件地設置Magento中的模板
<?php echo $this->getChildHtml('content'); ?>
這就是它!這個想法是,JavaScript方法可以抓取另一個頁面的content
,並在適當的地方將其插入到DOM中。 (我不希望這是可能的只有任何頁面 - 只有頁面已被標記爲這樣做在佈局xml。)
我讀過其他地方I should avoid conditional layout xml。我能想到的唯一方法是重寫Page/Html塊本身,創建一個修改的setTemplate
方法,如下所示。本能地,我擔心壓倒Magento這樣的核心部分。
public function setTemplate($template, $bareTemplate='')
{
$bareMode = Mage::app()->getRequest()->getParam('bare');
$targetTemplate = (!empty($bareTemplate) && $bareMode === '1') ? $bareTemplate : $template;
return parent::setTemplate($targetTemplate);
}
還有什麼更好的方法沒有想到?
如果我們要提供「更好的方法」,這將有助於理解目的並查看期望結果的示例:)否則,任何建議可能有點泛化,是的?什麼是期望的目標?你真的想讓頁面看起來像屬於不同的主題嗎?或者您是否想要爲特定產品/類別/銷售獲得一些自定義佈局? – Kato 2012-02-01 17:53:17
@Kato通過添加* bare *模板的示例及其用途編輯。 – kojiro 2012-02-01 17:58:44
您是否考慮過僅通過HTTP獲取頁面並提取有用的部分?如果它只是您想要的純HTML代碼,這應該是一個很好的/簡單的答案,併爲您創建額外的模板或更換核心節省很多麻煩。 – Kato 2012-02-01 18:01:58