Magento - 从选项值 ID 获取自定义选项值详细信息

2024-03-14

我有一些与产品自定义选项相关的有趣问题:-

  1. 选项和自定义选项之间有什么区别吗?这是因为我在几乎所有与产品相关的模块中为每个产品详细信息找到了两个不同的属性:

    • options
    • custom_options

    然而,只有一个类只适用于产品选项,它倾向于处理自定义选项。我正在寻求对这一点的澄清。

  2. 我正在尝试获取订购商品的自定义选项,包括自定义选项价格和价格类型。问题是 Magento 仅存储相应订购项目的选项值,而不存储其所有详细信息(如自定义选项价格和价格类型)。

    所以我创建了这个类的一个对象Mage_Catalog_Model_Product_Option_Value,仅考虑drop_down自定义选项类型。我在下面提供了我的代码,但它仍然是徒劳的,并且没有获取所需的结果。我怎样才能纠正这个代码?

第 2 点的代码:

echo "<pre>";
// $collection contains the whole Order Collection
foreach ($collection as $order) {
    foreach ($order->getAllItems() as $item) {
        $customOptions = $item->getProductOptions();
        
        foreach ($customOptions['options'] as $_eachOption) {
            // Value ID is stored in this field "option_value"
            $objModel = Mage::getModel('catalog/product_option_value')->load($_eachOption['option_value']);

            // This should provide all the details of this particular Option Value as chosen by the Customer when ordering this Product, but unfortunately it doesn't
            print_r($objModel->getData());
            
            /**
             * This gives the output as, without any details on Price and Price Type:-
             * Array
             * {
             *     [option_type_id] => 13014
             *     [option_id] => 4921
             *     [sku] => XBPS22
             *     [sort_order] => 0
             * }
             */

            unset($objModel);
        }
    }
}
echo "</pre>";

经过一番检查,我发现与每个选项值相关的价格都存储在catalog_product_option_type_price数据库表,与每个选项相关的价格存储在catalog_product_option_price数据库表。因此,必须有某种方法来让 Magento 如何获取相应的自定义选项价值价格。


在此代码中,我按 id 加载产品,获取选项集合(在我的测试中仅包含产品的自定义选项,而不包含属性或其他选项),迭代选项并加载每个选项的值集合。只要您有产品 ID,此演示代码就应该可以在几乎任何地方进行测试。

<?php

$productID = $this->getProductId(); //Replace with your method to get your product Id.

$product = Mage::getModel('catalog/product')->load($productID);
$options = Mage::getModel('catalog/product_option')->getProductOptionCollection($product);

foreach ($options as $option) {
    Mage::log('Name: ' . $option->getDefaultTitle());
    Mage::log('    Type: ' . $option->getType());
    Mage::log('    Class: ' . get_class($option));
    Mage::log('    Price/Type: ' . ($option->getPrice() ? $option->getPrice() : '0.00') . ' / ' . $option->getType());

    if ($option->getType() === 'drop_down') {
        $values = Mage::getSingleton('catalog/product_option_value')->getValuesCollection($option);
        Mage::log('    Values: (name/price/type)');

        foreach ($values as $value) {
            Mage::log('        ' . $value->getTitle() . ' / ' . $value->getPrice() . ' / ' . $value->getPriceType());
        }
    }
}
?>

日志输出示例:

2014-02-18T20:15:25+00:00 DEBUG (7): Name: Turtle Color
2014-02-18T20:15:25+00:00 DEBUG (7):     Type: drop_down
2014-02-18T20:15:25+00:00 DEBUG (7):     Class: Mage_Catalog_Model_Product_Option
2014-02-18T20:15:25+00:00 DEBUG (7):     Price/Type: 0.00 / drop_down
2014-02-18T20:15:25+00:00 DEBUG (7):     Values: (name/price/type)
2014-02-18T20:15:25+00:00 DEBUG (7):         Red / 0.0000 / fixed
2014-02-18T20:15:25+00:00 DEBUG (7):         White / 0.0000 / fixed
2014-02-18T20:15:25+00:00 DEBUG (7):         Blue / 0.0000 / fixed

可用数据示例$option Mage::log($option->toArray()):

注意:price 和 Price_type 仅适用于 drop_down 类型选项的选项值。

2014-02-18T20:19:44+00:00 DEBUG (7): Array
(
    [option_id] => 135
    [product_id] => 80
    [type] => field
    [is_require] => 0
    [sku] =>
    [max_characters] => 25
    [file_extension] =>
    [image_size_x] =>
    [image_size_y] =>
    [sort_order] => 90
    [description] =>
    [default_title] => Turtle Name
    [store_title] =>
    [title] => Turtle Name
    [default_price] => 0.0000
    [default_price_type] => fixed
    [store_price] =>
    [store_price_type] =>
    [price] => 0.0000
    [price_type] => fixed
)

可用数据示例$values Mage::log($values->toArray()):

2014-02-18T20:25:21+00:00 DEBUG (7): Array
(
    [totalRecords] => 2
    [items] => Array
        (
            [0] => Array
                (
                    [option_type_id] => 1149
                    [option_id] => 229
                    [sku] =>
                    [sort_order] => 10
                    [default_price] => 0.0000
                    [default_price_type] => fixed
                    [store_price] => 0.0000
                    [store_price_type] => fixed
                    [price] => 0.0000
                    [price_type] => fixed
                    [default_title] => 31"
                    [store_title] => 31"
                    [title] => 31"
                )
            [1] => Array
                (
                    [option_type_id] => 1150
                    [option_id] => 229
                    [sku] =>
                    [sort_order] => 20
                    [default_price] => 0.0000
                    [default_price_type] => fixed
                    [store_price] => 0.0000
                    [store_price_type] => fixed
                    [price] => 0.0000
                    [price_type] => fixed
                    [default_title] => 31.5"
                    [store_title] => 31.5"
                    [title] => 31.5"
                )
        )
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Magento - 从选项值 ID 获取自定义选项值详细信息 的相关文章

  • 我需要进行哪些更改才能使 Magento 与 PHP 5.3 配合使用?

    我需要将我的服务器升级到 PHP 5 3 但安装了 Magento 而且我知道 Magento 不能很好地与 PHP 5 3 配合使用 我认为变化不会太大 根据我所读到的 但是 我想我应该向大众开放 有人成功做到这一点吗 如果是这样 你记好
  • Magento 多个 Authorize.net 网关

    我有一个用于处理信用卡付款的 CAD 和 USD 网关帐户 这两个帐户均来自支持 Authorize net API 的支付提供商 我已经使用 Magento 的内置 Authorize net 支持成功配置了一个 但是如何配置第二个 Au
  • Magento 一个订单可使用多个优惠券代码,无需延期

    我已经工作了 3 天 试图在一个订单中应用多个优惠券代码 我知道有可用的模块 但我不想投资购买模块 我想要一些自定义代码 以便我可以在单个订单中应用多个优惠券代码 要添加 2 个优惠券代码 我所做的是这样的 1 在 sales flat q
  • 如何导出带有产品完整 url 的产品 csv

    我想导出包含完整产品 url 的产品 CSV 即包括基本 url 我不想手动执行此操作 是否可以自定义代码 以便产品导出具有完整的 url
  • 如何在 Magento 中更改订单起始编号

    有没有办法在 Magento 中更改订单起始编号而不更改已有的订单号 我只想为所有新订单设置 170000xxxx Thanks Look in eav entity store并找到increment last id 更新此号码 确保en
  • 如何更改客户 ID 和订单 ID?

    当前 CustomerID 从 1 开始 而生成的第一个订单已OrderID 100000001 有什么方法可以改变这些字段 所以创建的第一个客户已经 顾客号码900000001并且创建的第一个订单有OrderID 900000001 通过
  • 如何配置 Magento Enterprise 使用 Solr 作为主要搜索引擎?

    我尝试寻找文档 但它非常稀疏 我编写了以下指南 希望它可以帮助人们节省 2 3 个小时的安装 设置和配置时间 与 MySQL 全文搜索标准设置相比 使用 Solr 带来的性能提升非常惊人 在您的 Magento 安装中让它工作绝对值得花时间
  • 将现有属性添加到所有属性集

    我有一个existing嵌入代码的属性 我需要将此属性与 120 多个现有属性集相关联 如果我知道属性集 ID 如何以编程方式将该属性添加到所有属性集 我发现为这个问题编写代码很有趣 所以这里是有效的解决方案 在 php 脚本 包括 mag
  • magento - 无法与 PayPal 网关通信

    有什么解决办法吗 我已经在配置 gt gt 系统 gt gt 支付方式 gt gt PayPal支付解决方案中禁用了SSL验证 但还是不行 您需要禁用 SSL 验证 进入后台 系统 gt 配置 gt 付款方式 找到PayPal Expres
  • 在 Magento 中获取过去 24 小时内的订单商品

    我正在尝试获取过去 24 小时内的所有订单商品 我已锁定查询 因此它返回了我需要的内容 order id 和created on 值 order items Mage getResourceModel sales order item co
  • 将搜索栏从 magento 主页的标题中移动

    我是 magento 的新手 我想将搜索栏从标题移动到主页的中间位置 以便它仅显示在主页上 我在 magento 论坛上阅读了许多相关答案 但所有人都在尝试编辑 box css 中的 mini search 元素 但不幸的是我在此文件中没有
  • 一旦我们点击取消按钮,文本字段就会隐藏

    我们正在使用 magento 多供应商网站 我们正在使用以下代码来更新和取消价格 但是一旦我们单击 取消 按钮 文本字段就会隐藏 PHTML span class label pro status span
  • 如何获取magento中登录客户的订单列表

    我正在努力获取客户订购的订单号 名称 列表 我尝试过使用 Mage getModel sales order gt load order id 但对我不起作用 实际上 我正在开发帮助台模块并尝试将订单分配给票证 好的朋友 感谢您的提示 我通
  • reindex 目录 URL 在 magento 中重写永无止境

    我已使用自定义导入配置文件将 6K 类别和 16K 产品导入到 magento 当我尝试重新索引时 除了 目录 URL 重写 之外的所有内容都正常工作 该 目录 URL 重写 一直显示 正在处理 但从未完成 日志和异常文件不显示任何内容 我
  • 如何在 magento 的左侧栏中显示最新、评价最高和最好的产品

    我正在使用 Magento 版本 1 5 0 1 在主页中 我使用了 2 列和左栏 我想逐一展示最新的 评价最高的和最好的产品 请帮助我如何做到这一点 我是magento新手请帮助我 在您的 app design frontend your
  • 如何从 Magento One Page Checkout 获取发布数据?

    为了在 Magento Checkout 中添加客户评论字段 我在相应的模板文件中添加了一个文本字段 并使用如下观察器将评论添加到订单中 comment strip tags Mage app gt getRequest gt getPar
  • Paypal Express Checkout 坚持使用电话号码,即使选项已关闭(从 Magento 拨打)

    我在 Magento 中使用 Paypal 快速结帐 选项 我没有使用任何快速结帐按钮 这只是因为我在从网站付款标准返回时遇到问题 在 Paypal 的网站付款首选项中 我已将 联系电话号码 字段设置为关闭 我还在 Magento 方面进行
  • Magento 从 Observer 重定向始终有效

    我无法从观察者在 Magento 中创建工作重定向 据我所知 有很多事件都获得了响应对象 在 observer目的 另一种方法是使用类似的东西 Mage app gt getResponse gt setRedirect Mage getU
  • Magento 重新索引问题

    I am facing one issue in Magento I am having one Magento store with multi website functionality which containing approx
  • 将客户分配到 magento 的多个客户组

    您好 我想将多个组分配给特定客户 例如 Rajat 客户 属于 批发 零售商 电力 实际上我在上面看到了同样的话题每个客户有多个客户组 https stackoverflow com questions 6153011 multiple c

随机推荐

  • IPython 3.5 返回“错误的解释器:没有这样的文件或目录”

    我在尝试使用 IPython 时遇到随机错误 我现在突然无法使用 iPython3 没有任何解释 我不记得除了以太坊客户端之外安装过任何重要的东西 而且我没有下载哈希值或任何东西 突然我明白了 cchilders ipython3 bash
  • 停止模型上的双向数据绑定

    我对 Angular 还很陌生 所以如果这里有一些不正确的想法 请告诉我 我正在尝试基于同一数据集创建两个单独的范围变量 我假设我能够将它们设置为不同的变量 如下所示 并且它会起作用 然而 我发现 无论它们的名称是什么或如何定义 即使是在指
  • 在 Python 中使用 XML 模式进行验证

    我有一个 XML 文件和另一个文件中的 XML 架构 我想验证我的 XML 文件是否遵循该架构 我如何在 Python 中做到这一点 我更喜欢使用标准库 但如果需要 我可以安装第三方包 我假设您的意思是使用 XSD 文件 令人惊讶的是 支持
  • 如何查看docker镜像的日志?

    在docker世界中 我们可以很容易地看到docker容器 即正在运行的镜像 的日志 但在图像创建过程中 通常会发出多个命令 例如 节点项目中的 npm install 命令 查看这些命令的日志也会很有帮助 我快速地从文档中搜索 但没有找到
  • 使用 PhantomJS 嵌入网页的所有图像会产生警告,但可以工作

    我试图通过嵌入所有图像 以及通过这一点后的其他外部资源 将网页转换为单个文件 以下是我运行 PhantomJs 的方式 phantomjs web security false embed images js http localhost
  • 构建代理离线

    我正在使用 TFS 2015 我看到我的构建代理处于离线状态 我启动 VsoWorker exe 来查看日志并了解错误 这是我得到的信息 但我从互联网上找不到任何内容 请问有什么想法吗 16 07 57 649004 Sending tra
  • 使用嵌套 ScrollViewer 忽略水平鼠标滚动

    我在网格周围有一个 ScrollViewer 来垂直滚动其内容
  • 键盘自动校正高度(带/不带自动校正)

    我得到的键盘高度是这样的 void keyboardNotification NSNotification notification NSDictionary keyboardInfo notification userInfo NSVal
  • 使用 CMake 进行 Boost 测试 - 未定义的 main

    我在使用 MacPorts 安装的 Boost 在 Mac 上构建一个使用 Boost Test 的小程序时遇到问题 opt local lib 这是我的最小源文件 test cpp define BOOST TEST MODULE MyT
  • 如何更改 Qthread 内 Qtimer 的时间间隔?

    我希望能够更改 QThread 内 QTimer 的间隔时间 这是我的代码 import sys from PyQt5 import QtWidgets from PyQt5 QtWidgets import QApplication QM
  • 计算 pow(a,b) mod n

    I want to calculate ab mod n for use in RSA decryption My code below returns incorrect answers What is wrong with it uns
  • 在 PHP openssl 中加密并在 javascript CryptoJS 中解密

    我正在使用 PHP 加密一些参数 openssl parameter AES 256 ECB client 我想解密CryptoJS CryptoJS AES decrypt parameter client mode CryptoJS m
  • 用图像设计按钮?

    我一直在尝试使用图像来设计提交按钮的样式 我会使用 CSS 但按钮的设计太复杂了 我尝试向按钮添加背景图像 但该图像的位置不正确 我也尝试过使用
  • wxPython 是否有原生的 FlowLayoutManager/FlowSizer/WrapSizer 实现?

    我正在尝试在wxPython 2 8 使用Python 2 7 中编写一个GUI 其中涉及在sizer中布置几个wx StaticTexts 我想要的是一个大小调整器 如果它检测到当前行的宽度比窗口的宽度宽 它会自动将任何附加元素添加到新行
  • 通过一组唯一的列值过滤 SQL 查询,无论其顺序如何

    我在 Oracle 中有一个表 其中包含两列 我想在其中查询包含唯一值组合的记录 而不管这些值的顺序如何 例如 如果我有下表 create table RELATIONSHIPS PERSON 1 number not null PERSO
  • 您可以使用 Python 正则表达式从偏移量开始向后搜索吗?

    给定一个字符串以及该字符串中的字符偏移量 我可以使用 Python 正则表达式向后搜索吗 我试图解决的实际问题是在字符串中的特定偏移量处获取匹配短语 但我必须匹配该偏移量之前的第一个实例 在我的正则表达式只有一个符号长 例如 单词边界 的情
  • Android 抛出 IndexOutOfBound 异常

    我制作了一个Android应用程序 因为数据来自服务器 所以这是一个耗时的过程 所以我创建了一个进度对话框 下面是我的代码 Override protected void onResume super onResume if placesL
  • JQuery UI 删除类动画似乎不起作用

    我正在使用一系列 CSS3 转换 但对于较旧的机器 通过使用 JQuery UI 添加和删除类进行备份 JQuery UI addClass 动画功能齐全 然而 JQuery UI removeClass 并没有设置动画 而是延迟动画时间
  • 读取 SML 中的命令行参数

    我正在尝试读取输入文件的名称 argv 1 这是我到目前为止所做的 val args CommandLine arguments val x y args val agora x 但我不断收到此错误消息 uncaught exception
  • Magento - 从选项值 ID 获取自定义选项值详细信息

    我有一些与产品自定义选项相关的有趣问题 选项和自定义选项之间有什么区别吗 这是因为我在几乎所有与产品相关的模块中为每个产品详细信息找到了两个不同的属性 options custom options 然而 只有一个类只适用于产品选项 它倾向于