2012-08-29 36 views
1

我在我的magento商店有800个产品,我试图更改所有SKU,但保留旧的到另一个文本字段。我发现一个脚本可以一次更改所有SKU,但问题在于首先我必须将属性字段SKU的文本插入新属性字段“old_sku”。magento update属性1 =属性2

我该如何更新old_sku = sku?

感谢您的帮助!

+0

刚刚标签是否正确?你做这个的目的是什么? – Gowri

回答

0

如果你想保持它非常简单那么解决的办法是

一)添加“old_sku” B中的属性)出口的所有产品 二)改变CSV - 复制&粘贴“SKU”列的值在“old_sku”和 d)进口的所有产品

就是这样

希望这有助于!

+1

导出所有产品,删除所有产品,修改CSV,导入..以及为什么,只需克隆一个属性值。 – Kalpesh

+0

无需删除产品,就好像使用sku一样,那么它将在同一sku上更新,上述解决方案用于将sku保存到其他属性并且不会更改当前的sku值。 –

+0

感谢所有人的帮助,我确实将所有产品导出为@GreatIndianBrain表示,删除除sku和old_sku以外的所有列,将所有数据从一列复制到另一列,并创建一个导入配置文件。我检查了所有产品并更新了old_sku。 – GeorgeV

2

如果你确实有一些PHP的知识,你可以用它来创建一个运行一次的PHP脚本并替换所有的属性值。例如,我会做到这一点,像这样:

<?php 
// Magento initialization code; taken from here: http://www.ecomdev.org/2010/06/01/application-bootstrap-in-magento.html 
require 'app/Mage.php'; 

if (!Mage::isInstalled()) { 
    echo "Application is not installed yet, please complete install wizard first."; 
    exit; 
} 

$initializationCode = 'admin'; 
$initializationType = 'store'; 
$scope = 'frontend'; 
Mage::app($initializationCode, $initializationType); 
Mage::getConfig()->init(); 
Mage::getConfig()->loadEventObservers($scope); 
Mage::app()->addEventArea($scope); 

// Update products 
try 
{ 
    $products = Mage::getModel('catalog/product')->getCollection(); 

    foreach ($products as $product) { 
     $product->setOldSku($product->getSku())->save(); 
    } 
} catch (Exception $e) 
{ 
    echo "Something bad happened: {$e->getMessage()}. Shutting down..."; 
    exit; 
} 
?> 

只需创建,比方说,你的Magento设置(在index.php文件附近)的根目录中的update_skus.php文件,用我提供的代码填充它并将浏览器导航至该文件(例如http://magento.local/update_skus.php)。您应该将所有产品的old_sku属性完全设置为它们的sku属性的值。

+0

我会尝试一下。只是关于代码的一个问题。昨天,我从管理员那里逐一更新了30款产品的sku和oldsku。只有当字段中没有值时,才可以更新oldsku,所以我不会丢失30个产品的数据;谢谢 – GeorgeV

+0

当然!只需在$ product-> setOldSku($ product-> getSku()) - > save();前添加'if(empty($ product-> getOldSku()))'''''''''' – shybovycha

+0

' PHP文件,我得到一个白色的屏幕。此外,我在管理员检查了一些产品和oldsku不更新,只是空的。 – GeorgeV