VirtueMart 2.6.6自定义字段(购物车变量)未显示在订单详细信息中

格里高利

我为Virtuemart 2.6.6编写了一个自定义字段插件,该插件在产品页面上显示了一些参数,例如“ size”,并且该参数也是cart变量。

这篇文章对我们有很大的帮助:

https://www.spiralscripts.co.uk/Joomla-Tips/custom-plugin-fields-in-virtuemart-2-2.html

当然还有stackoverflow论坛和出厂默认的VM自定义插件。

一切正常(将产品添加到购物车时,尺寸显示在产品详细信息视图和购物车中),但有一件事情:

  • 发送订单后,参数未显示在订单详细信息中,因此我不知道购买了多少尺寸的产品。

我在插件中放置了以下函数,但没有解决我的问题:

function plgVmOnViewCart($product, $row, &$html) 
{
    if (empty($product->productCustom->custom_element) or $product->productCustom->custom_element != $this->_name) return '';
if (!$plgParam = $this->GetPluginInCart($product)) return false ;
    $html  .= '<div class="parameterek_attributes">';

    foreach ($plgParam as $attributes) {
        foreach ($attributes as $k => $attribute) {
            if ($k =='child_id') continue;
    if ($k == 'custom_param_default3') $name = 'Veľkosť'; else $name = '';
            $html .='<span class="parameterek_attribute"> '.$name.': '.JText::_($attribute).' </span>';
        }
    }       

    $html.='</div>';
return true;
}

/**
 *
 * shopper order display BackEnd
 */
function plgVmDisplayInOrderBE($item, $row,&$html) 
{
    if (empty($item->productCustom->custom_element) or $item->productCustom->custom_element != $this->_name) return '';
    if(!empty($productCustom)){
        $item->productCustom = $productCustom;
    }

$this->plgVmOnViewCart($item, $row,$html);
}

/**
 *
 * shopper order display FrontEnd
 */
function plgVmDisplayInOrderFE($item, $row,&$html) 
{
    if (empty($item->productCustom->custom_element) or $item->productCustom->custom_element != $this->_name) return '';
$this->plgVmOnViewCart($item, $row,$html);
}

存入名为#__virtuemart_order_items的数据库表中的值已保存:类似:

{“ 357”:“ 5”}

但应该是这样的:

{“ 357”:“尺寸M”}

我看到关键函数是GetPluginInCart($ product),当我在结帐过程中打印出$ product-> param时,得到了以下输出:

Array
(
[0] => Array
    (
        [parameterek] => Array
            (
                [custom_param_default3] => L
            )

    )

)

但是在完成订单并进入订单详细信息之后,$ product-> param具有以下值:

Array
(
[357] => 5
)
  • 因此,我认为,在完成订单之前,我必须以某种方式处理所选的产品参数并将其转换为正确的形式,但是我不知道如何做。

在以下站点上https://dev.virtuemart.net/projects/virtuemart/wiki/Product_Plugins

我发现了一个功能:

plgVmOnViewCartOrder($product, $param,$productCustom, $row) 
handel $param before adding it in the order  

return $param;

但是当我在整个consmartmart安装中搜索字符串“ plgVmOnViewCartOrder”时,找不到该字符串,因此它没有启动(?)

如果有人可以帮助我或发送公正的文档,那将是很好的。谢谢!

格里高利

我想,我解决了我的问题,那是什么:

在功能plgVmOnDisplayProductVariantFE我犯了一个错误,我没有使用布局渲染,生成一个对象$可视数据与变量virtuemart_customfield_id

然后在插件的布局中,输入字段名称必须如下所示:

<input 
  class="parameterekInput" 
  type="radio" 
  id="plugin_param['.$viewData[0]->virtuemart_customfield_id.']['.$this->_name.']['.$c.']" 
  name="customPlugin['.$viewData[0]->virtuemart_customfield_id.']['.$this->_name.'][custom_param_default3]" 
  value="'.$size.'" />

因此name属性应始终为:

  • customPlugin ['。$ viewData [0]-> virtuemart_customfield_id。'] ['。$ this-> _ name。'] [无论如何]

plgVmOnDisplayProductVariantFE函数的正确用法是使用表达式:

  • $ group-> display。= $ this-> renderByLayout('default',array($ field,&$ idx,&$ group)

这里的整个函数具有正确的表达式:

function plgVmOnDisplayProductVariantFE ($field, &$idx, &$group) {
    if ($field->custom_element != $this->_name) return '';

    $this->getCustomParams($field);

        $this->getPluginCustomData($field, $field->virtuemart_product_id);

        $group->display .= $this->renderByLayout('default',array($field,&$idx,&$group ) );

    return true;
  }

现在,当我在函数GetPluginInCart($ product)中使用print_r -ing $ product-> param时,我得到了:

Array
(
[273] => Array  //previously the key was Zero, now it is 273, value of virtuemart_customfield_id
    (
        [parameterek] => Array
            (
                [custom_param_default3] => L
            )

    )

)

...现在我很高兴,我可以继续进行我的项目了:)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

获取Magento2的购物车详细信息

来自分类Dev

Virtuemart呼叫添加到购物车功能

来自分类Dev

Virtuemart升级/迁移1到2

来自分类Dev

定制分页课程Joomla Virtuemart 2

来自分类Dev

Virtuemart哪个变量保存购物车的order_number值?

来自分类Dev

Paypal 购物车自定义创建订单对象和用户详细信息

来自分类Dev

在Magento 2-如何检索废弃的购物车详细信息?

来自分类Dev

Joomla,如何在Virtuemart类别表单中添加自定义字段?

来自分类Dev

添加到购物车后,Virtuemart 2.6.6返回同一页

来自分类Dev

使Virtuemart使用用户组而不是购物者组

来自分类Dev

如何在Virtuemart中将“产品详细信息”文本更改为我自己的文本?

来自分类Dev

如何在Virtuemart中将“产品详细信息”文本更改为我自己的文本?

来自分类Dev

Azure中的Joomla-添加VirtueMart,错误502

来自分类Dev

Virtuemart从查询字符串中应用优惠券

来自分类Dev

Virtuemart查询

来自分类Dev

Android联系人-自定义字段图标未显示在android 6中

来自分类Dev

Android联系人-自定义字段图标未显示在android 6中

来自分类Dev

使用OData2中的响应发送自定义异常详细信息

来自分类Dev

设置产品自定义字段并在购物车,结帐和查看订单中显示值

来自分类Dev

前端的 Virtuemart 订单列表。过滤掉取消和挂单

来自分类Dev

Virtuemart-已预订的订购产品库存值未更新

来自分类Dev

woocommerce:从购物车页面中结帐时,收货详细信息未显示在“谢谢”页面上

来自分类Dev

VirtueMart结帐数量

来自分类Dev

Shopware 6中自定义字段的继承

来自分类Dev

jBPM6中的文件自定义字段类型

来自分类Dev

在WooCommerce中的购物车中显示自定义字段值

来自分类Dev

在WooCommerce中的购物车中显示自定义字段值

来自分类Dev

购物车和结帐中显示的管理产品页面自定义字段

来自分类Dev

在WooCommerce订单和电子邮件中添加和显示自定义购物车项目数据

Related 相关文章

  1. 1

    获取Magento2的购物车详细信息

  2. 2

    Virtuemart呼叫添加到购物车功能

  3. 3

    Virtuemart升级/迁移1到2

  4. 4

    定制分页课程Joomla Virtuemart 2

  5. 5

    Virtuemart哪个变量保存购物车的order_number值?

  6. 6

    Paypal 购物车自定义创建订单对象和用户详细信息

  7. 7

    在Magento 2-如何检索废弃的购物车详细信息?

  8. 8

    Joomla,如何在Virtuemart类别表单中添加自定义字段?

  9. 9

    添加到购物车后,Virtuemart 2.6.6返回同一页

  10. 10

    使Virtuemart使用用户组而不是购物者组

  11. 11

    如何在Virtuemart中将“产品详细信息”文本更改为我自己的文本?

  12. 12

    如何在Virtuemart中将“产品详细信息”文本更改为我自己的文本?

  13. 13

    Azure中的Joomla-添加VirtueMart,错误502

  14. 14

    Virtuemart从查询字符串中应用优惠券

  15. 15

    Virtuemart查询

  16. 16

    Android联系人-自定义字段图标未显示在android 6中

  17. 17

    Android联系人-自定义字段图标未显示在android 6中

  18. 18

    使用OData2中的响应发送自定义异常详细信息

  19. 19

    设置产品自定义字段并在购物车,结帐和查看订单中显示值

  20. 20

    前端的 Virtuemart 订单列表。过滤掉取消和挂单

  21. 21

    Virtuemart-已预订的订购产品库存值未更新

  22. 22

    woocommerce:从购物车页面中结帐时,收货详细信息未显示在“谢谢”页面上

  23. 23

    VirtueMart结帐数量

  24. 24

    Shopware 6中自定义字段的继承

  25. 25

    jBPM6中的文件自定义字段类型

  26. 26

    在WooCommerce中的购物车中显示自定义字段值

  27. 27

    在WooCommerce中的购物车中显示自定义字段值

  28. 28

    购物车和结帐中显示的管理产品页面自定义字段

  29. 29

    在WooCommerce订单和电子邮件中添加和显示自定义购物车项目数据

热门标签

归档