我正在为Shopware 5编写自定义插件。 如何显示"添加到购物车"任意文章页面上的按钮?
目前,我直接从数据库中提取一些现有文章。然后我将这些文章分配给自定义前端tpl文件(扩展了默认的tpl文件)。现在我希望为这些提取的文章之一显示按钮。
我找到了一个智能块,其中包含按钮(frontend_detail_buy_button
中的themes/Frontend/Bare/frontend/detail/buy.tpl
),但我不知道如何根据我的需要扩展/更改它。
我的Shopware版本是5.2.8。
答案 0 :(得分: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>
根据您的需求,您可以使用sAddAccessories
和sAddAccessoriesQuantity
输入将产品列表添加到购物篮,example您可以看到there。
如果您可以展示您的网站,我可以为您提供更合适的解决方案。当您将自定义添加到购物车按钮时,请不要忘记配置器和变体。
我希望你认为这个答案很有帮助。
答案 1 :(得分:0)
我不确定我是否理解它,但您可以在详细页面上查看商品如何将商品添加到购物篮中。比s文章更改sBasket。 shopware使用几个参数。
扩展使用:
Sub macro()
Dim Ws As Worksheet
Dim LstObj As ListObject
Dim rngDB As Range, n As Integer
For Each Ws In Worksheets
With Ws
Set rngDB = .Range("a1").CurrentRegion
For Each LstObj In Ws.ListObjects
LstObj.Unlist
Next
If WorksheetFunction.CountA(rngDB) > 0 Then
n = n + 1
Set LstObj = .ListObjects.Add(xlSrcRange, rngDB, , xlYes)
With LstObj
.Name = "Table" & n
.TableStyle = "TableStyleLight9"
End With
End If
End With
Next Ws
End Sub
在一个区块内部使用{extends file="parent:frontend/detail/index.tpl"}
,将填充插件模板上的阻止,并显示默认内容。
P.d。:抱歉我的英文