0

请我尝试在 magento 中创建一个模块,通过将现有产品名称与随机生成的数字连接来编辑产品名称。

$model = Mage::getModel('catalog/product') ->load(1111) //获取产品型号

$collection = $model->getCollection(); //产品集合

foreach ($collection as $product) //获取产品的循环

{

$model->load($product->getId());

$pname = $product->getName(); 

$this->model = Mage::getModel('catalog/product');

$new_name = $pname。'.rand(1000,5000);

$this->model->setName($new_name);

}

这是我的代码,我正在尝试创建一个模块来实现此功能,而无需编辑核心文件或使用管理面板。

4

2 回答 2

2

抱歉,您的代码很难看。

如果你想使用集合(这是从对象列表访问数据的好方法),你不能使用 ->load() (非常昂贵,应该只在访问单个对象的数据时使用,比如产品页)

试试这个代码:

    $collection = Mage::getModel('catalog/product')->getCollection(); //products collection
    $collection->addAttributeToSelect('name'); //retrieve only product name (optimising SQL)

    foreach ($collection as $product) //loop for getting products
    {
        $pname = $product->getName(); 
        $new_name = $pname.' '.rand(1000,5000);
        $product->setName($new_name);
        $product->save(); // you missed that
    }

如果您有大量数字或产品,您还可以使用 SQL CONCAT() 函数进行单个 SQL 查询...

于 2013-05-29T08:44:00.767 回答
0

类 Digital_GoogleMpn_Model_Observer {

public function googleMpn(Varien_Event_Observer $observer)
{

$product = $observer->getEvent()->getProduct();

    $pname = $product->getName();         

$google_mpn = rand(1000,5000);
  
    $new_name = "{$pname}.' '.{$google_mpn}"; 
  
    $product->setName($new_name);
  
    $product->save(); 

  
}      }
于 2013-05-30T11:12:45.443 回答