gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 08:40:01 25 4
gpt4 key购买 nike

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

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

    • 选项
    • 自定义选项

    但是,产品选项只有一个类,它往往负责自定义选项。我正在寻求有关这一点的澄清。

  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>";

经过一番检查,我发现与每个Option Value相关的价格存储在catalog_product_option_type_price数据库表中,与每个Option相关的价格存储在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"
)
)
)

关于Magento - 从选项值 ID 获取自定义选项值详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9993483/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com