2017-02-13 6 views
1

Shopware 5 용 사용자 정의 플러그인을 작성하고 있습니다. 임의의 기사에 대한 페이지에 "장바구니에 추가"버튼을 표시하려면 어떻게합니까?Shopware 사용 "장바구니에 담기"버튼

현재 데이터베이스에서 직접 기존 기사를 가져오고 있습니다. 그런 다음이 기사를 기본 tpl 파일을 확장하는 사용자 정의 프론트 엔드 tpl 파일에 할당합니다. 이제이 가져온 기사 중 하나에 대해 버튼을 표시하고 싶습니다.

단추 (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> 

당신은 진짜 사이트 there에 작동하는 방법에 see 수 있습니다.

귀하의 필요에 따라 sAddAccessoriessAddAccessoriesQuantity 입력을 사용하여 바구니에 제품 목록을 추가 할 수 있습니다. examplethere입니다. 귀하의 사이트를 표시 할 수있는 경우 귀하의 사례에 적합한 솔루션을 제공 할 수 있습니다. 사용자 정의 장바구니에 추가 버튼을 적용 할 때 구성자 및 변형을 잊지 마십시오.

이 답변이 도움이 되셨기를 바랍니다.

+0

I 형태의 관련 HTML을 복사 (일부 기사에 대한 주문 번호)를 sAdd''에 대한 값을 넣어하지만 버튼을 클릭 할 때 나는 오류가 피곤 : 'HTTP'대 '(503) (서비스를 사용할 수 없음) // [DOMAIN]/체크 아웃/ajaxAddArticleCart 콜백 = jQuery21406407849721801058_1488057735447 및 sActionIdentifier = sAddAccessories = 사드 = ORDERNUMBER] __ csrf_token = TOKEN] isXHR = 1 & _ = NUMBER]'?. – edo

+0

/engine/Shopware/Controllers/Frontend/Checkout.php 찾아 열기 : 함수 ajaxAddArticleCartAction 을 제 1 기능 추가 라인에서 라인 : 위해서는 ini_set ('display_errors를', 1); 그러면 요청에 따라 답할 수 없기 때문에 오류 텍스트가 표시되고 문제를 이해할 수 있습니다. –

0

내가 제대로 이해하는지 모르겠지만, shopware가 기사를 바구니에 추가하는 방법에 대한 세부 정보 페이지를 볼 수 있습니다. s 기사로 변경 sBasket보다. shopware는 severals 매개 변수를 사용합니다. 확장 사용을 위해

는 :

블록 내부 {$smarty.block.parent}
{extends file="parent:frontend/detail/index.tpl"} 

,이 기본 콘텐츠와 함께 플러그인 템플릿에 블록을 채울 것입니다.

의 Pd : 죄송합니다 내 영어