- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试从其中一个子简单产品的 SKU 或 ID 中获取父可配置产品 SKU。我的理解是一个简单的可以属于多个可配置项,但我希望客户添加到他们的购物车中的特定可配置项。我读了 related question但它获得了所有父配置。
我正在使用 Magento EE 1.12
编辑:关于我在做什么的更多细节。当客户成功结帐时,我试图获取简单的 SKU 和客户 checkout 的可配置项。
尝试将代码应用于:
app/design/frontend/enterprise/mytheme/template/checkout/success.phtml
最佳答案
如果可配置项已经在购物车中,我认为您可以查询购物车以找到可配置项及其简单 ID。
$myTargetSimpleProductId = $someIdThatYouKnow;
$quote = Mage::getSingleton('checkout/session')->getQuote();
$cartItems = $quote->getAllVisibleItems();
foreach ($cartItems as $item){
if ($option = $item->getOptionByCode('simple_product')) {
$productIdArray[] = $option->getProduct()->getId(); //for the record
if ($option->getProduct()->getId()==$myTargetSimpleProductId ){
$myMatchingConfigurableProductId = $item->getProductId(); //capture the ID of the configurable
}
}
}
//$productIdArray holds a list of all the IDs of simple products that are in the basket due to configurables.
echo("The answer is ".$myMatchingConfigurableProductId);
$item->getProductId(); //Really means [pseudo code] $item->getConfiguredProductId()
$item->getOptionByCode('simple-product') //Accesses the underlying simple product object, hence
$item->getOptionByCode('simple-product')->getProduct()->getId() //gives accesse to the ID of the underlying simple product - ie the thing you want to test.
$_order = Mage::getModel('sales/order')->loadByIncrementId($this->getOrderId());
foreach ($_order->getAllItems() as $item) {
$_customerId = Mage::getSingleton('customer/session')->getCustomerId();
$lastOrderId = Mage::getSingleton('checkout/session')->getLastOrderId();
$order = Mage::getSingleton('sales/order');
$order->load($lastOrderId);
foreach ($order->getItemsCollection() as $item) {
$order = $observer->getOrder();
/* @var $item Mage_Sales_Model_Order_Item */
foreach ($order->getItemsCollection() as $item) {
$orderId = Mage::getSingleton('checkout/session')->getLastRealOrderId();
$order = Mage::getModel('sales/order')->loadByIncrementId($orderId);
$cartItems = $order->getAllItems();
foreach($cartItems as $item) {
template/checkout/success.phtml
中。或在
checkout_type_onepage_save_order_after
上的观察者中上面的片段将指导您。
$product
即
product_type = 'configurable'
那么要获取它的 SKU,您应该调用
$product->getData('sku');
如果您只调用
$product->getSku();
这将始终返回简单的 SKU,因为
//file: app/code/core/Mage/Core/Catalog/Model/Product.php
//class: Mage_Catalog_Model_Product
public function getSku()
{
return $this->getTypeInstance(true)->getSku($this);
}
//file: app/code/core/Mage/Core/Catalog/Model/Product/Type/Configurable.php
//class: Mage_Catalog_Model_Product_Type_Configurable
public function getSku($product = null)
{
$sku = $this->getProduct($product)->getData('sku');
if ($this->getProduct($product)->getCustomOption('option_ids')) {
$sku = $this->getOptionSku($product,$sku);
}
return $sku;
}
checkout_type_onepage_save_order_after
上设置观察者时然后
$cartItems = $observer->getEvent()->getOrder()->getAllVisibileItems();
foreach ($cartItems as $item){
if ($item->getProductType() == 'configurable') {
$skuConfigurable = $item->getProduct()->getData('sku');
$skuMatchingSimple = $item->getProduct()->getSku();
Mage::log("skuConfigurable ".$skuConfigurable." has skuMatchingSimple ".$skuMatchingSimple, null, 'mylogfile.log');
}else{
Mage::log("Configurable SKU"." (not configurable product)", null, 'mylogfile.log');
}
}
success.phtml
中访问订单项时然后两个
getSku()
和
getData('sku')
两者都返回可配置的 SKU。这让我认为我没有加载
sales/order
正确或不理解如何从可配置的
$item
中确定“可配置选项” .但我不明白为什么观察者中的“$item”与success.phtml 之间存在差异。
<?php //TEST CODE to retrieve SKUs from the order
$_checkoutSession = Mage::getSingleton('checkout/session');
$_customerSession = Mage::getSingleton('customer/session');
$orderId = Mage::getSingleton('checkout/session')->getLastRealOrderId();
$order = Mage::getModel('sales/order')->loadByIncrementId($orderId);
echo("<br>Order Id".$orderId);
$myTargetSimpleProductId = 42;//$someIdThatYouKnow;
//$cartItems = $order->getAllVisibleItems(); //returns the configurable items only
$cartItems = $order->getAllItems();
Mage::log(':PHTML--PHTML--PHTML--PHTML--PHTML--PHTML--PHTML--PHTML--', null, 'mylogfile.log');
Mage::log(':', null, 'mylogfile.log');
Mage::log('cartItems (from order):', null, 'mylogfile.log');
foreach ($cartItems as $item){
Mage::log("product_id".$item->getProductId(), null, 'mylogfile.log');
Mage::log("product_type".$item->getProductType(), null, 'mylogfile.log');
Mage::log("product_real_type".$item->getRealProductType(), null, 'mylogfile.log');
if ($option = $item->getOptionByCode('simple_product')) { //NEVER RETURNS TRUE, why?
Mage::log("item_opByCode_getProd_getId".$item->getOptionByCode('simple_product')->getProduct()->getId(), null, 'mylogfile.log');
}else{
Mage::log("item_opByCode_getProd_getId"." (not simple_product option)", null, 'mylogfile.log');
}
if ($item->getProductType() == 'configurable') {
$dummy = $item->getProduct()->getData('sku');
Mage::log("Configurable SKU ".$dummy, null, 'mylogfile.log'); $myAnswers[]=array('simpleSku'=>$item->getProduct()->getSku(),'configurableSku'=>$item->getProduct()->getData('sku')); //in success.phtml these two are always the same (the configurable SKU)
}else{
Mage::log("Configurable SKU"." (not configurable product)", null, 'mylogfile.log');
}
Mage::log("item options".print_r($item->getOptions(),true), null, 'mylogfile.log');
Mage::log("getProduct()->getId()".$item->getProduct()->getId(), null, 'mylogfile.log');
Mage::log("getProduct()->getSku".$item->getProduct()->getSku(), null, 'mylogfile.log');
Mage::log("getProduct()->getName()".$item->getProduct()->getName(), null, 'mylogfile.log');
Mage::log("SKUs : ".print_r($myAnswers,true), null, 'mylogfile.log');
Mage::log("<br>********************************", null, 'mylogfile.log');
if($item->getOptions()){ //NEVER RUNS - how get the configurable product options?
echo("OPTIONS".print_r($item->getOptions(),true));
}
}
echo("SKU's array".print_r($myAnswers,true));
关于magento - 从简单的 SKU 或 ID 获取可配置的 sku,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22492411/
假设我们有: SKU 为“product-sku”的产品 带有 SKU“custom-option”的自定义选项 如果我们现在添加此产品并在购物车中选择此自定义选项,则此产品的 SKU 将在结帐页面上
有没有一种方法可以将我现有的基本 sku LB 替换为标准 LB,而不会造成停机? 运行 3 层架构应用程序/网络/数据库。 我的想法是创建新的标准 sku,按照基本配置 100%,然后只需将每个公共
在购物车页面上,我需要能够使用子 SKU 获取父 SKU。 我尝试了从 Magento 论坛和 StackOverflow 上类似问题中截取的几段代码,但没有成功。 我可以使用 getTypeId()
每一个。我有一个像这样的 mySQL 表: DATA(sku,quantity) ABC 55 ABC_DE005 1 ABC_DE006 1 ABC_DE007
我正在尝试从其中一个子简单产品的 SKU 或 ID 中获取父可配置产品 SKU。我的理解是一个简单的可以属于多个可配置项,但我希望客户添加到他们的购物车中的特定可配置项。我读了 related que
我不是编码员(只是脚本 fiddler ),我遇到了 Magento 的一个特殊问题,我无法用代码或数据来解释,所以我需要解释一下情况。我销售有多种选择的可配置产品。这些家具产品使用各种代码来描述产品
我有一个奇怪的情况。这是我的模型: UpcCode => UpcCode(id: integer, Upc: string, Sku: string, Active: boolean, created
这可以通过一条语句实现吗? 我的数据库中有多个表。 使用这个SELECT检索子 sku 数组(又名产品列表 sku) SELECT SKU FROM MasterSKU WHERE '4048' IN
我们有一个附加了 IP 的虚拟网络网关。它的设置如上所述here . 现在我们有这个“警报”: Upgrade to Standard SKU - Microsoft recommends Stand
我们正在开发一款应用程序,允许我们的 Azure 管理员监控组织中人员的 Azure 资源请求。 有一个要求,我想通过某些 API(如果可用)获取所有可能的 SKU 和 SKU 容量的列表。我本可以对
我们正在开发一款应用程序,允许我们的 Azure 管理员监控组织中人员的 Azure 资源请求。 有一个要求,我想通过某些 API(如果可用)获取所有可能的 SKU 和 SKU 容量的列表。我本可以对
在我的新订单电子邮件中,我有产品的 SKU,但我想从订单电子邮件中删除它。我该怎么做? 最佳答案 这其实是个好问题。感谢您询问 Patrik。 此操作无法从管理界面完成,因为带有订单项的 block
在functions.php中 add_action( 'woocommerce_add_order_item_meta', 'custom_add_item_sku', 10, 3 ); funct
我正在开发的网站上的完整和部分 SKU 搜索已停止工作,此功能之前曾有效。 当此方法有效时,比较网站的旧版 .SQL,我看不到 core_config_data 的任何更改会以这种方式影响网站。 搜索
在functions.php中 add_action( 'woocommerce_add_order_item_meta', 'custom_add_item_sku', 10, 3 ); funct
我尝试在订购 sample 时将文本附加到 SKU。 我尝试了以下代码来修改标题, function cart_title($title, $values, $cart_item_key){
loadByIncrementId($orderNumber); foreach ($order->getAllItems() as $item){ $productOptions = $it
我正在为我的产品 SKU 编写自定义文本字段类型。 如果我有一个 SKU,例如 ABC-DEF123G/5(仅作为示例),我希望用户能够使用或不使用标点符号进行搜索。在许多情况下,只有部分 SKU 是
我正在构建一个模块化项目,并且正在寻找使我们能够为不同客户构建该产品的多个倾斜的最佳方法。它需要在构建过程中完成,以免客户更改配置文件中的值来启用模块。 我最好的猜测是与特定构建相关联的某种环境变量集
我正在将应用内结算添加到我现有的一个应用中。为了测试这一点,我在 google play 中创建了一个草稿应用程序,上传了带有应用程序内计费的新版本的 apk 并添加了一个产品。我激活了这个产品,但我
我是一名优秀的程序员,十分优秀!