我想在任何订单中添加一个类似于装运成本行的服务产品,该行提供有关包装成本的信息。
谁能给我一些提示,以实现所描述的目标需要哪些步骤。先感谢您。
选项1
最好的方法是创建一个“自由文本字段”(配置 -> 自由文本字段管理),然后在 Storefrontsettings 中修改 SQL 查询(配置 -> 基本设置 -> 前端 -> 运输成本模块)。
现在取决于您要如何改变它或包装成本是否相同。虽然我相信你可能想让它们取决于产品的大小。
所以你可以这样:
//You put this code in the Shipping Costs Modules
MAX(a.topseller) AS has_topseller, MAX(at.attr3) AS has_comment
MAX(b.esdarticle) AS has_esd,
SUM(at.attr4*b.quantity)
这里重要的部分是最后一行代码。
要完成这项工作,您必须创建一个名为 attr4 的“自由文本字段”,现在在后端的文章详细信息(项目 -> 概述 -> 笔符号)中输入您希望的文章值。
然而,这个例子非常具体,因为您必须为每篇文章都这样做,但方法几乎对每种情况都保持不变。
如果您懂德语,您还可以在此处查看该主题的文档。
选项 2
在选项 1 中,价格只是添加到正常运输成本中。虽然如果您希望它们单独显示,我能想到的唯一方法是创建一个小插件。
不过,要从选项 2 开始,您必须创建一个自由文本字段。创建后转到结帐-> cart_footer.tpl
在那里,您在运费和总金额之间添加新添加的自由文本字段,如下所示:
{block name='frontend_checkout_cart_footer_field_labels_shipping'}{/block}
{block name='frontend_checkout_cart_footer_field_labels_package}
{block name='frontend_checkout_cart_footer_field_labels_package_label'}
<div class="entry--label block">
Packaging Costs
</div>
{/block}
{block name='frontend_checkout_cart_footer_field_labels_package_label'}
<div class="entry--label block">
{s name="CartFooterLabelPackage"}{/s}
</div>
{/block}
{/block}
{block name='frontend_checkout_cart_footer_field_labels_total'}{/block}
这基本上只是为了让客户看到他为包装支付的价格。
现在是创建插件的时候了。
您基本上要做的就是创建一个本地插件,提交一些简单的 SQL 查询。
您创建基本的插件结构,如下所示
然后修改它,在结帐/完成控制器上操作 invoice_amount:
public function addPackage()
{
$package = 2.5;
$select = "SELECT invoice_amount FROM s_attribute_configuration ORDER BY id DESC LIMIT 1";
$select_result = Shopware()->Container()->get('models')->getConnection()->fetchColumn($select);
$new_price = $select_result + $package;
$update = "UPDATE s_attribute_configuration SET invoice_amount = $new_price ORDER BY id DESC LIMIT 1"
$update_result = Shopware()->Db()->query($update);
}
应该这样做。只需将其挂钩到完成动作中即可。
您现在遇到的最后一个问题是总和已经在前端更新。我想你可以用一些 Javascript 来更新它。
选项 1.1
在为选项 2 创建 PHP 脚本时刚刚得到了这个想法:
只需将包装添加到选项 1 中的运输成本中,然后在运输成本下添加一些信息,其中包含(在此处插入包装总和)的包装成本。您也可以使用自由文本字段来做到这一点。将是最简单的解决方案,可以让您几乎完美地达到您想要的结果。
我希望这些帮助。