1

我是一个非常新手的程序员,但这是我正在尝试做的事情,以及我到目前为止所做的事情:

我想要的是:

我正在尝试从产品的变体选择中获取购物车中的最终 SKU。

例如,如果初始产品是“Shovel”,并且它的 SKU 是“SHO”,则购物车变体选择 SKU 编号会添加到末尾。

如果其中一种变体是:

手柄颜色——绿色手柄(SKU为SKU1)——黄色手柄(SKU为SKU2)

如果选择绿色,最终 SKU 将是 SHO - SKU1,如果选择黄色,则为 SHO - SKU2)

然后,这将创建一个会话变量以传递到购物车,并且购物车将显示此变量,我可以将其传递给电子邮件通知,或者我之后需要的任何东西。

我做了什么:

我已将 custom_sku 列添加到表 traitsmart_product_customfields 中的购物车变体数据中。我还将此字段添加到管理员表文件夹 (/administrator/components/com_virtuemart/tables) 中的 custom.php 文件中

此字段现在更新到数据库中,每次添加购物车变体选项时,它都会在 customfield_id 行的“custom_sku”列中添加一个 SKU:

截图:http ://awesomescreenshot.com/02e1sfsef9

我还修改了 customfields.php (administrator/components/com_virtuemart/models) 中的函数 getProductCustomsFieldCart 以将其添加到选项下拉值中。

现在的值如下所示:“变体值 - 1.00 美元 - SKU1”

我坚持的是:我需要将此 SKU 值或选项的值传递给购物车,并拥有它,以便我可以将其用于订单的其余部分。

这很可能使用会话变量来完成,如下所示: sessionSKUselect = "20" 其中 20 是自定义字段 ID,因此我可以在购物车上的查询中使用它。

这也可以在数组中的会话变量中输出,只要它有效。

当前有一个通过表单传递的变量,如下所示:“customPrice[0][1]”(数字与哪个选择列表及其变体组(哪个选择列表)有关)

customPrice[0][1] 有一个自定义字段 ID 的值(只是一个数字,用于数据库值。我需要这个值是一个数组,或者能够在购物车中使用这个数组来查询最终 SKU数字。

有谁知道我需要做什么?谢谢!

4

1 回答 1

0

我知道如何使用购物车变体。每个都可以分配一个价格。我也这样做了,因此每个变体选项也可以分配一个自定义 SKU(项目编号),并且该变量位于同一个数据库表中。

我发现了如何使用函数 calculateModificators 提取变量

我几乎需要购物车页面上的选定选项值,并且此功能使它们可用。我已经在上面的函数中添加了自己的小代码,现在我可以输出 SKU 但需要将它显示在一个数组中。

这是代码,我已经注意到我的添加使用注释的位置。

    $query = 'SELECT  C.* , field.*
                    FROM `#__virtuemart_customs` AS C
                    LEFT JOIN `#__virtuemart_product_customfields` AS field ON C.`virtuemart_custom_id` = field.`virtuemart_custom_id`
                    WHERE field.`virtuemart_customfield_id`=' . $selected;
                $this->_db->setQuery($query);
                $productCustomsPrice = $this->_db->loadObject();
                $productCustomsSKU = $this->_db->loadObject(); // My Addition
                echo $productCustomsSKU->custom_sku. ' + '; // My Addition

所以如果我的两个SKU号是这样的,按照选择的顺序(SKU3,SKU1)

我得到像 SKU3SKU1 这样的输出

现在我需要让这个值最终看起来像这样:

  • SKU3 + SKU1

这需要在字符串的开头有一个+,并且在最后没有+。我最终需要这个值,所以我的值将是:

$value = " + SKU3 + SKU1" 并对来自上述数组的每个值执行此操作。

于 2013-10-07T05:13:50.870 回答