新闻中心
Magento 2 插件中获取商品最终价格的正确方法

本文旨在解决在 Magento 2 插件中获取商品最终价格(包括目录价格规则折扣)时遇到的问题。通过示例代码,详细讲解了如何使用 `getPriceInfo()` 方法获取简单商品和可配置商品的常规价格和最终价格,并强调了在获取可配置商品最终价格时需要注意的细节。 确保在插件中正确获取并使用商品最终价格,避免价格计算错误。
在 Magento 2 开发插件时,正确获取商品最终价格至关重要,尤其是在存在目录价格规则等折扣的情况下。 直接使用 vendor/magento/module-catalog/Model/Product/Type/Price::getFinalPrice() 方法可能无法如预期计算出包含折扣的价格。本文将介绍一种更可靠的方法,通过 getPriceInfo() 获取商品的常规价格和最终价格,并针对不同类型的商品(简单商品和可配置商品)提供相应的代码示例。
获取简单商品的价格
对于简单商品,可以使用以下代码获取常规价格和最终价格:
<?php
namespace Vendor\Module\Helper;
use Magento\Catalog\Model\Product;
class PriceHelper
{
/**
* 获取简单商品的价格信息
*
* @param Product $product
* @return array
*/
public function getSimpleProductPrices(Product $product): array
{
$regularPrice = $product->getPriceInfo()->getPrice('regular_price')->getValue();
$specialPrice = $product->getPriceInfo()->getPrice('special_price')->getValue();
return [
'regular_price' => $regularPrice,
'final_price' => $specialPrice, // 这里实际上已经包含了目录价格规则的折扣
];
}
}代码解释:
- $product->getPri
ceInfo()->getPrice('regular_price')->getValue(): 获取商品的常规价格。 - $product->getPriceInfo()->getPrice('special_price')->getValue(): 获取商品的最终价格,它已经考虑了目录价格规则等折扣。
获取可配置商品的价格
对于可配置商品,获取价格的方式略有不同,需要区分常规价格和最终价格:
Zyro AI Background Remover
Zyro推出的AI图片背景移除工具
145
查看详情
<?php
namespace Vendor\Module\Helper;
use Magento\Catalog\Model\Product;
class PriceHelper
{
/**
* 获取可配置商品的价格信息
*
* @param Product $product
* @return array
*/
public function getConfigurableProductPrices(Product $product): array
{
if ($product->getTypeId() == 'configurable') {
$basePrice = $product->getPriceInfo()->getPrice('regular_price');
$regularPrice = $basePrice->getMinRegularAmount()->getValue();
$finalPrice = $product->getFinalPrice();
return [
'regular_price' => $regularPrice,
'final_price' => $finalPrice,
];
}
return [
'regular_price' => 0,
'final_price' => 0,
];
}
}代码解释:
- $product->getTypeId() == 'configurable': 判断商品类型是否为可配置商品。
- $basePrice = $product->getPriceInfo()->getPrice('regular_price'): 获取常规价格信息对象。
- $regularPrice = $basePrice->getMinRegularAmount()->getValue(): 获取可配置商品中最低的常规价格。
- $finalPrice = $product->getFinalPrice(): 获取可配置商品的最终价格,这个价格已经包含了目录价格规则的折扣。
注意: 获取可配置商品最终价格时,直接使用 $product->getFinalPrice() 方法是更简洁有效的方式。
使用示例
以下是如何在你的插件中使用上述代码的示例:
<?php
namespace Vendor\Module\Plugin;
use Magento\Catalog\Model\Product;
use Vendor\Module\Helper\PriceHelper;
class MyPlugin
{
private $priceHelper;
public function __construct(PriceHelper $priceHelper) {
$this->priceHelper = $priceHelper;
}
public function afterGetName(Product $product, $result)
{
$productType = $product->getTypeId();
if ($productType == 'simple') {
$prices = $this->priceHelper->getSimpleProductPrices($product);
} elseif ($productType == 'configurable') {
$prices = $this->priceHelper->getConfigurableProductPrices($product);
} else {
$prices = ['regular_price' => 0, 'final_price' => 0];
}
$regularPrice = $prices['regular_price'];
$finalPrice = $prices['final_price'];
// 使用价格进行后续操作
return $result . " (Regular Price: " . $regularPrice . ", Final Price: " . $finalPrice . ")";
}
}总结
通过使用 getPriceInfo() 方法,可以更准确地获取 Magento 2 中商品(包括简单商品和可配置商品)的常规价格和最终价格,尤其是在存在目录价格规则等折扣的情况下。 请务必根据商品类型选择正确的方法,并确保在你的插件中正确使用这些价格信息。 此外,定期清理缓存和重新索引数据也是确保价格信息准确性的重要步骤。
以上就是Magento 2 插件中获取商品最终价格的正确方法的详细内容,更多请关注php中文网其它相关文章!
# 多维
# 是在
# 键值
# 情况下
# 转数
# 包含了
# 相关文章
# php
# 网络营销推广怎么引流
# 浙江网站建设公司排名
# 邹城网站建设方案
# 上海快速营销推广中心
# 丽水抖音seo推广招聘
# 大连最好的网站推广公司
# 中医理疗馆营销推广方式
# 唐山海外网站优化
# 网站建设 客户拜访
# 绵竹旅游网站建设
# 解决问题
# 中文网
# 要注意
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
必由学网页版入口 必由学官方平台直接访问
UE5.7引擎表现爆炸优化无敌!5090跑4K稳定60FPS
QQ邮箱登录官网首页 腾讯QQ邮箱网页入口
蛙漫漫画官网在线入口 蛙漫全本漫画免费阅读平台
搜狗浏览器如何使用密码生成器创建强密码 搜狗浏览器内置密码安全工具
如何在CSS中使用浮动制作导航栏_float实现水平菜单
J*aScript打印功能_j*ascript输出控制
J*aScript数组对象转换:按指定键分组与值收集
Excel Power Pivot如何处理XML数据源 构建高级数据模型
Win11怎么用U盘重装系统 Win11制作启动盘并重装系统完整教程【详解】
单12V-2×6实现为RTX 5090供电750W!甚至都没敢跑分
QQ官网正版登录链接 QQ在线登录入口最新
sublime怎么进行远程开发编辑_配置rsub/rmate实现sublime编辑服务器文件
PHP中获取MongoDB服务器运行时间(Uptime)的专业指南
Composer如何在生产环境安全地执行composer update
R星幕后开发视频泄露 包含《GTA6》等多款大作
谷歌邮箱注册显示错误Gmail服务器异常与延迟处理
在J*aScript中复现SciPy的B样条拟合与求值:关键考量
品牌机怎么重装系统 联想/戴尔/惠普笔记本恢复出厂系统教程
C++ typeid如何获取类型信息_C++ RTTI运行时类型识别用法
wps文字怎么插入目录并自动更新_wps文字如何插入目录并自动更新方法
php源码怎么看淘宝客系统_看php源码淘宝客系统技巧
中兴BladeV30怎样用测距估书架层高_iPhone中兴BladeV30测距估书架层高【家装参考】
qq游戏免费畅玩入口_qq游戏电脑版快速启动
Win11怎么修改默认浏览器_Windows 11设置Chrome为默认
Yandex官方入口网址 Yandex俄罗斯搜索引擎最新在线地址
极兔快递快件信息查询系统 极兔快递官网运单号追踪
百度浏览器字体显示异常偏小_百度浏览器字体渲染修复方案
整合Supabase认证与Django模型:跨模式迁移的解决方案
抓大鹅无需下载版 抓大鹅秒玩版入口
美团外卖商家服务中心入口 美团商家版官网入口
千牛数据看板网页版_千牛数据看板网页版访问方法
J*aScript井字棋(Tic-Tac-Toe)核心交互逻辑实现教程
Golang切片为何属于引用类型_Golang slice底层结构与引用语义说明
windows10怎么关闭系统提示音_windows10彻底静音设置方法
Composer的 "check-platform-reqs" 命令有什么用_在部署前检查生产环境是否满足Composer依赖需求
顺丰快件物流信息 官方网站查询入口
C++的std::mdspan是什么_C++23中用于操作多维数组的非拥有视图
反效果?《战地6》免费试玩开启后玩家数不升反降
微信网页版官方快速登录入口 微信网页版网页版账号直达
谷歌浏览器最新官方入口链接 谷歌浏览器网页版官网导航
多闪网页版在线观看免费入口_多闪官网访问入口
怎么在浏览器上运行HTML文件_浏览器运行HTML文件技巧【技巧】
C++如何检测键盘输入_C++ _kbhit与_getch函数非阻塞输入
MAC怎么安装Homebrew包管理器_MAC为开发者和高级用户安装命令行工具
J*aScript中向JSON对象添加新属性的正确姿势
台积电1.4nm工艺A14瞄准2028:10年来性能提升80%
J*a里如何实现线程安全的懒加载单例_懒加载单例实现方法解析
微信聊天记录怎么加密_微信聊天记录加密方法
C++指针和引用有什么区别_C++内存管理核心概念深度解析


2025-11-17
浏览次数:次
返回列表
ceInfo()->getPrice('regular_price')->getValue(): 获取商品的常规价格。