0

我想在任何订单中添加一个类似于装运成本行的服务产品,该行提供有关包装成本的信息。

谁能给我一些提示,以实现所描述的目标需要哪些步骤。先感谢您。

在此处输入图像描述

4

1 回答 1

1

选项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 的“自由文本字段”,现在在后端的文章详细信息(项目 -> 概述 -> 笔符号)中输入您希望的文章值。

然而,这个例子非常具体,因为您必须为每篇文章都这样做,但方法几乎对每种情况都保持不变。

  1. 添加新的自由文本字段
  2. 在文章详细信息中编辑它的值
  3. 修改“运费模块”中的 SQL

如果您懂德语,您还可以在此处查看该主题的文档。


选项 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 中的运输成本中,然后在运输成本下添加一些信息,其中包含(在此处插入包装总和)的包装成本。您也可以使用自由文本字段来做到这一点。将是最简单的解决方案,可以让您几乎完美地达到您想要的结果。

我希望这些帮助。

于 2017-08-16T12:07:19.287 回答