2017-02-13 10 views
1

Я пишу пользовательский плагин для Shopware 5. Как отобразить кнопку «Добавить в корзину» на странице для произвольной статьи?Использование Shopware Кнопка «Добавить в корзину» в плагине

В настоящее время я получаю некоторые существующие статьи непосредственно из базы данных. Затем я присваиваю эти статьи пользовательскому файлу tpl frontend (который расширяет файл tpl по умолчанию). Теперь я хочу, чтобы кнопка отображалась для одной из этих извлеченных статей.

Я нашел блок Smarty, который удерживает кнопку (frontend_detail_buy_button в themes/Frontend/Bare/frontend/detail/buy.tpl), но я не знаю, как ее продлить или изменить в соответствии с моими потребностями.

My 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.

В зависимости от ваших потребностей вы можете использовать sAddAccessories и sAddAccessoriesQuantity входов для добавления в список продуктов в корзину, example вы можете увидеть there. Если вы можете показать свой сайт, я могу предоставить вам более подходящее решение для вашего дела. Не забывайте о конфигураторе и вариантах, когда вы примените пользовательскую кнопку добавления в корзину.

Надеюсь, вы посчитаете этот ответ полезным.

+0

Я устал, чтобы скопировать соответствующий HTML для формы и ввода значения для 'sAdd' (номер заказа по какой-то статье), но когда я нажимаю кнопку, я получаю сообщение об ошибке: '503 (Service Unavailable)' для 'http: // [DOMAIN]/checkout/ajaxAddArticleCart? Callback = jQuery21406407849721801058_1488057735447 & sActionIdentifier = & sAddAccessories = & sAdd = [ORDERNUMBER] & __ csrf_token = [TOKEN] & isXHR = 1 & _ = [NUMBER]'. – edo

+0

Open /engine/Shopware/Controllers/Frontend/Checkout.php и найти: функция ajaxAddArticleCartAction На первой строке функции добавления строки: ini_set ('display_errors', 1); Затем вы увидите текст ошибки и сможете понять проблему, потому что я не могу ответить по запросу. –

0

Я не уверен, понимаю ли я это правильно, но вы можете посмотреть на странице с подробными сведениями о том, как в магазине добавить товар в корзину. Чем сменить sBasket с s. параметры использования нескольких сегментов магазина.

для расширения использования:

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

С {$smarty.block.parent} внутри блока, будет заполнить блок на шаблоне плагина с там по умолчанию содержание.

Pd: Извините за мой английский