【问题标题】:How to save an option title and values for a specific store view?如何保存特定商店视图的选项标题和值?
【发布时间】:2014-06-27 16:00:36
【问题描述】:

我正在尝试在 Magento 1.8 中以编程方式创建产品,然后为其添加一些自定义选项。到目前为止,一切正常,所有选项都在“默认”范围内与产品一起正确保存。

问题是我的商店有两种不同的“商店视图”,一种是英文的,一种是法文的。我不知道如何设置选项的范围。

当我在产品上设置范围时,我似乎无法获取已添加的默认选项。请记住,我不想为每个商店视图设置不同的选项,我只想翻译一些字段。

这是一个代码示例:

     $option = array(
            'title' => 'Option title', // this needs to be translated per store view
            'type' => 'radio',
            'is_require' => 1,
            'sort_order' => 6,
            'values' => array(
                array(
                    'title' => 'Value 1', // this needs to be translated per store view
                    'price' => 0,
                    'price_type' => 'fixed',
                    'sku' => '',
                    'sort_order' => '1'
                ),
                array(
                    'title' => 'Value 2', // this needs to be translated per store view
                    'price' => 0,
                    'price_type' => 'fixed',
                    'sku' => '',
                    'sort_order' => '2'
                )
            )
        );

【问题讨论】:

  • 到目前为止,我已经能够通过使用直接 db 查询来翻译选项来解决这个问题,但这确实是一个丑陋的修复,我很确定有一个更好的内置 magento 方法来解决这个问题问题。

标签: magento magento-1.8


【解决方案1】:

例如,您可以在下面尝试:

//Create options array
$values = array(
 //15 is the option_id of the option in 'eav_attribute_option_value' table
 15 => array(
   0 => 'Apple' //0 is current store id, Apple is the new label for the option
  ),
 19 => array(
   0 => 'Nexus'
  ),
 12 => array(
   0 => 'HTC'
  ),
);

清除翻译缓存,因为属​​性标签存储在翻译中

 Mage::app()->cleanCache(array(Mage_Core_Model_Translate::CACHE_TAG));

【讨论】:

    【解决方案2】:

    如果你想修改保存产品的选项,你不仅要为产品设置商店ID,还要在$option数组中添加一个'option_id'键确定您正在保存相同的选项。

    如果您想使用选项,最好查看 Mage_Catalog_Model_Product_Option::saveOptions() 方法。

    这是一个代码示例,可让您使用翻译保存自定义选项:

    /** @var Mage_Catalog_Model_Product_Option $option */
    $option->setData($optionData)
        ->setData('product_id', $productId)
        ->setData('store_id', $firstStoreId)
        ->save();
    $optionData['title'] = $translatedTitle;
    $option->setData($optionData)
        ->setData('product_id', $productId)
        ->setData('store_id', $secondStoreId)
        ->save();
    

    【讨论】:

      【解决方案3】:

      您只需进入目录 -> 属性 -> 管理属性。单击您的属性并转到管理标签/选项

      您可以在这里设置翻译/存储。

      【讨论】:

      • 我想以编程方式进行。
      猜你喜欢
      • 2014-06-14
      • 1970-01-01
      • 2015-05-14
      • 2021-10-17
      • 1970-01-01
      • 1970-01-01
      • 2021-01-31
      • 1970-01-01
      • 2014-10-26
      相关资源
      最近更新 更多