2017-02-13 104 views
1

我正在爲Shopware 5編寫一個自定義插件。 如何在任意文章的頁面上顯示「添加到購物車」按鈕?在插件中使用Shopware「添加到購物車」按鈕

目前我正在直接從數據庫獲取一些現有的文章。然後我將這些文章分配給一個自定義的前端tpl文件(它擴展了默認的tpl文件)。現在我想要顯示這些獲取的文章之一的按鈕。

我發現smarty塊持有按鈕(frontend_detail_buy_buttonthemes/Frontend/Bare/frontend/detail/buy.tpl),但我不知道如何擴展/改變它到我的需要。

我的Shopware版本是5.2.8。

回答

0

不知道,我右明白你的問題,但如果你需要添加add to cart按鈕,你需要傳輸全sAddToBasket形式。

<form name="sAddToBasket" method="post" action="{url controller=checkout action=addArticle}" class="buybox--form" data-add-article="true" data-showOverlay="false" data-eventName="submit"{if $theme.offcanvasCart} data-showModal="false" data-addArticleUrl="{url controller=checkout action=ajaxAddArticleCart}"{/if}> 
{if $sArticle.sConfigurator&&$sArticle.sConfiguratorSettings.type==3} 
    {foreach $sArticle.sConfigurator as $group} 
     <input type="hidden" name="group[{$group.groupID}]" value="{$group.selected_value}"/> 
    {/foreach} 
{/if} 

<input type="hidden" name="sActionIdentifier" value="{$sUniqueRand}"/> 
<input type="hidden" name="sAddAccessories" id="sAddAccessories" value=""/> 

<input type="hidden" name="sAdd" value="{$sArticle.ordernumber}"/> 

{$sCountConfigurator=$sArticle.sConfigurator|@count} 

{if (!isset($sArticle.active) || $sArticle.active)} 
    {if $sArticle.isAvailable} 
     <div class="buybox--button-container block-group{if $NotifyHideBasket && $sArticle.notification && $sArticle.instock <= 0} is--hidden{/if}"> 

      <div class="buybox--quantity block"> 
       {$maxQuantity=$sArticle.maxpurchase+1} 
       {if $sArticle.laststock && $sArticle.instock < $sArticle.maxpurchase} 
        {$maxQuantity=$sArticle.instock+1} 
       {/if} 

       <select name="sQuantity" class="quantity--select"> 
        {section name="i" start=$sArticle.minpurchase loop=$maxQuantity step=$sArticle.purchasesteps} 
         <option value="{$smarty.section.i.index}">{$smarty.section.i.index}{if $sArticle.packunit} {$sArticle.packunit}{/if}</option> 
        {/section} 
       </select> 
      </div> 

      {* "Buy now" button *} 
      {if $sArticle.sConfigurator && !$activeConfiguratorSelection} 
       <button class="buybox--button block btn is--disabled is--icon-right is--large" disabled="disabled" aria-disabled="true" name="{s name="DetailBuyActionAdd"}{/s}"{if $buy_box_display} style="{$buy_box_display}"{/if}> 
        {s name="DetailBuyActionAdd"}In den Warenkorb{/s} <i class="icon--arrow-right"></i> 
       </button> 
      {else} 
       <button class="buybox--button block btn is--primary is--icon-right is--center is--large" name="{s name="DetailBuyActionAdd"}{/s}"{if $buy_box_display} style="{$buy_box_display}"{/if}> 
        {s name="DetailBuyActionAdd"}In den Warenkorb{/s} <i class="icon--arrow-right"></i> 
       </button> 
      {/if} 
     </div> 
    {/if} 
{/if} 
</form> 

您可以see它真正的網站there是如何工作的。

取決於您的需求,您可以使用sAddAccessoriessAddAccessoriesQuantity輸入將產品列表添加到購物籃中,example您可以看到there。 如果您可以展示您的網站,我可以爲您提供更適合您的案例的解決方案。當您將自定義添加到購物車按鈕時,不要忘記配置器和變化。

我希望你認爲這個答案有幫助。

+0

我累到相關的HTML複製的形式,並把一個值'sAdd'(訂單號爲一些文章),但是當我按一下按鈕我得到一個錯誤: 'http:// [DOMAIN]/checkout/ajaxAddArticleCart?callback ='503(Service Unavailable)''callback = jQuery21406407849721801058_1488057735447&sActionIdentifier =&sAddAccessories =&sAdd = [ORDERNUMBER]&__ csrf_token = [TOKEN]&isXHR = 1&_ = [NUMBER]'。 – edo

+0

打開 /engine/Shopware/Controllers/Frontend/Checkout.php 和發現: 功能ajaxAddArticleCartAction 在函數add線的第一行: 函數ini_set( '的display_errors',1); 然後你會看到錯誤文本,並可以理解問題,因爲我不能根據請求回答.. –

0

我不確定我是否理解正確,但您可以查看詳細信息頁面,瞭解Shopware如何向購物籃中添加商品。比改變sBasket與s文章。餐具使用幾個參數。

延長使用:

{extends file="parent:frontend/detail/index.tpl"} 

隨着{$smarty.block.parent}塊內,將填補上有默認內容插件模板塊。

PD:對不起,我的英語

相關問題