2014-07-03 196 views
-1

我想添加一個購物車塊cms頁面,但每當我嘗試時,什麼都不會發生......甚至沒有錯誤。添加購物車塊到cms頁面

我試過按照這個教程http://www.magento.cc/how-to-use-php-on-a-cms-page.html

因此,我創建了新的文件夾中的應用程序/代碼/本地,然後test.php的文件,但是當我嘗試包括

{{block type="YourModule_Custom/test" my_param1="value 1" another_param="value 2"}} 
在CMS頁面

,似乎什麼都沒有。

這裏是我的test.php的頁面代碼:

<?php 
class YourModule_Custom_Block_Test extends Mage_Core_Block_Abstract 
{ 
    protected function _toHtml() 
    { 
     echo 'TEST'; 
     $this->getChildHtml('header'); 
     return $html; 
    } 
} 

回答

0

你可以做一個local.xml中更新。並把你的內容,一個.phtml文件

<cms_index_index> 
    <reference name="content"> 
     <block type="Your_custom/Block" name="home_main" as="home_main" template="cms/default/home.phtml"> 
     </block> 
    </reference> 
</cms_index_index> 

創建CMS文件名爲home.phtml /默認/然後你可以使用自己的塊型使用您的自定義模塊/功能

添加您的家頁面內容。

0

我不知道你想達到什麼目的。但是從你的問題來看,我有一種強烈的感覺,你試圖通過CMS頁面設置你自己的模板。如果是這樣,讓我們​​來分析爲什麼你的塊沒有顯示任何輸出。

你塊定義是這樣的

{{block type="YourModule_Custom/test" my_param1="value 1" another_param="value 2"}} 

沒有與此確定指標沒有問題。但是,如果您將name添加到您的區域,這很好。如果您設置template以及那個,那麼您不需要任何後端代碼來爲您的塊設置模板。這是你的塊應該是這樣的

{{block type="YourModule_Custom/test" name="test.block" template="test.phtml"}} 

現在,當Magento的遇到這種情況,會發現你的塊,組描述的名字在該塊(供以後參考此name將被使用。然而,它是不是在這個相關大小寫),將指定的模板設置爲您的塊,然後渲染該模板中的內容。

所以你應該有一個你指定的類型塊。你現在擁有它(你不需要那裏面的那個_toHtml())。除此之外,您需要一個模板文件test.phtml並且它應該位於app/design/frontend/<your_package>/<your_theme>/template/test.phtml的位置。你現在沒有這個文件。因此,創建它並在該文件中添加此內容

<p><?php echo "I am here. Can you see me ?"; ?></p> 

現在檢查您的CMS頁面輸出。你可以看到這些內容。不是嗎?

所以現在你要做的是,不是將模板和模塊定義一起設置,而是嘗試通過你的模塊進行設置。這是錯的嗎 ?顯然,沒有。有些情況下,我們需要這樣做。我假設你真的需要它。因此,讓我們再次以這種形式重新劃分我們的街區。

{{block type="YourModule_Custom/test" name="test.block"}} 

嗯。在這裏,我們現在沒有爲此塊設置模板。因此,您可以通過塊定義進行設置。您使用了_toHtml()方法。

<?php 
class YourModule_Custom_Block_Test extends Mage_Core_Block_Abstract 
{ 
    protected function _toHtml() 
    { 
     echo 'TEST'; 
     $this->getChildHtml('header'); 
     return $html; 
    } 
} 
?> 

此方法用於設置模板,然後呈現內容。所以你在正確的軌道上。但這裏的問題是,你沒有設置任何模板!加上你的方法返回一個變量$html,它不包含任何東西。那麼我們應該通過_toHtml()返回什麼?答案在於Mage_Core_Block_Template。讓我們來看看在_toHtml()定義

protected function _toHtml() 
{ 
    if (!$this->getTemplate()) { 
     return ''; 
    } 
    $html = $this->renderView(); 
    return $html; 
} 

基本上這樣做是什麼,它會檢查模板是否被設置,如果不返回任何結果。如果它呈現它。這意味着,顯然我們需要設置一個模板。所以你的塊應該看起來像這樣。

<?php 
class YourModule_Custom_Block_Test extends Mage_Core_Block_Template 
{ 
    protected function _toHtml() 
    { 
     $this->setTemplate('test.phtml'); 
     $html = parent::_toHtml(); 
     return $html; 
    } 
} 

請注意,您的塊從Mage_Core_Block_Template而從Mage_Core_Bock_Abstract延伸。這是因爲setTemplate()方法在Mage_Core_Block_Template類中定義。在_toHtml()中,我們正在設置我們的模板,然後將其餘部分留給我們的父塊。現在檢查您的CMS頁面中是否顯示test.phtml中的內容。它是對的?

+0

非常感謝你爲你詳細解答,我很欣賞這一點。我現在要試一試。 – BenjaminFranklin

+0

此解決方案不起作用。我在您所描述的目錄中創建了phtml文件,並且已將新的{{block}}代碼添加到CMS頁面,但「我在這裏」文本未顯示在CMS頁面上。請幫忙!再次感謝! – BenjaminFranklin

+0

它應該工作。因爲我在這裏回答之前已經測試過這些代碼。你能告訴我你的配置文件嗎? –

0

我不明白你想要什麼。但通過你的問題我的理解是你想顯示購物車塊到任何CMS頁面,如主頁,關於我們頁面等。

如果我的理解是正確的,那麼這裏是一個解決方案。

您可以將此代碼從管理員插入到您的cms頁面。

Admin - > CMS - > Pages - >選擇要在其上顯示塊的任何頁面 - >從左側導航欄中單擊設計選項卡 - >在頁面佈局部分下的「佈局更新XML」字段中插入以下代碼。點擊保存。

<reference name="content"> 
     <block type="checkout/cart" name="checkout.cart"> 
      <action method="setCartTemplate"><value>checkout/cart.phtml</value></action> 
      <action method="setEmptyTemplate"><value>checkout/cart/noItems.phtml</value></action> 
      <action method="chooseTemplate"/> 
      <action method="addItemRender"><type>simple</type><block>checkout/cart_item_renderer</block><template>checkout/cart/item/default.phtml</template></action> 
      <action method="addItemRender"><type>grouped</type><block>checkout/cart_item_renderer_grouped</block><template>checkout/cart/item/default.phtml</template></action> 
      <action method="addItemRender"><type>configurable</type><block>checkout/cart_item_renderer_configurable</block><template>checkout/cart/item/default.phtml</template></action> 

      <block type="core/text_list" name="checkout.cart.top_methods" as="top_methods" translate="label"> 
       <label>Payment Methods Before Checkout Button</label> 
       <block type="checkout/onepage_link" name="checkout.cart.methods.onepage" template="checkout/onepage/link.phtml"/> 
      </block> 

      <block type="page/html_wrapper" name="checkout.cart.form.before" as="form_before" translate="label"> 
       <label>Shopping Cart Form Before</label> 
      </block> 

      <block type="core/text_list" name="checkout.cart.methods" as="methods" translate="label"> 
       <label>Payment Methods After Checkout Button</label> 
       <block type="checkout/onepage_link" name="checkout.cart.methods.onepage" template="checkout/onepage/link.phtml"/> 
       <block type="checkout/multishipping_link" name="checkout.cart.methods.multishipping" template="checkout/multishipping/link.phtml"/> 
      </block> 

      <block type="checkout/cart_coupon" name="checkout.cart.coupon" as="coupon" template="checkout/cart/coupon.phtml"/> 
      <block type="checkout/cart_shipping" name="checkout.cart.shipping" as="shipping" template="checkout/cart/shipping.phtml"/> 
      <block type="checkout/cart_crosssell" name="checkout.cart.crosssell" as="crosssell" template="checkout/cart/crosssell.phtml"/> 

      <block type="checkout/cart_totals" name="checkout.cart.totals" as="totals" template="checkout/cart/totals.phtml"/> 
     </block> 
    </reference> 

之後,您會在CMS頁面上看到購物車塊。如果你不需要從他們的任何塊,你可以從上面的代碼中刪除該缺陷。

0

如果您嘗試調用從CMS頁添加到購物車,然後添加URL就像

checkout/cart/add?product=$id&qty=$qty 

例 -

<a href="{{store url='checkout/cart/add?product=5&qty=3'}}"> 
<img src="{{skin url='images/addtocart.jpg' 
}}" alt="product5" /></a> 
相關問題