Я пишу пользовательский плагин для Shopware 5.
Как отобразить кнопку «Добавить в корзину» на странице для произвольной статьи?
В настоящее время я загружаю некоторые существующие статьи прямо из базы данных. Затем я назначаю эти статьи пользовательскому tpl-файлу внешнего интерфейса (который расширяет tpl-файл по умолчанию). Теперь я хочу, чтобы кнопка отображалась для одной из этих статей.
Я нашел умный блок, который держит кнопку (frontend_detail_buy_button
в themes/Frontend/Bare/frontend/detail/buy.tpl
), но я не знаю, как расширить / изменить его в соответствии с моими потребностями.
Версия моего магазина — 5.2.8.
Не уверен, я правильно понимаю ваш вопрос, но в случае, если вам нужно добавить 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
входы для добавления списка продуктов в корзину, пример ты можешь видеть там.
Если вы можете показать свой сайт, я могу предоставить вам более подходящее решение для вашего случая. Не забудьте о конфигураторе и вариациях, когда вы примените пользовательскую кнопку добавления в корзину.
Я надеюсь, что вы считаете этот ответ полезным.
Я не уверен, правильно ли я это понял, но вы можете посмотреть на странице с подробностями, как магазин добавляет в корзину статью. Чем изменить sBasket с твоей статьей. Магазин использует несколько параметров.
Для расширенного использования:
{extends file="parent:frontend/detail/index.tpl"}
С {$smarty.block.parent}
внутри блока, заполнит блок на вашем шаблоне плагина там содержанием по умолчанию.
П.д .: Извините за мой английский