【问题标题】:Create Magento attribute option multilingual programmatically以编程方式创建多语言 Magento 属性选项
【发布时间】:2014-04-11 11:47:48
【问题描述】:

我正在寻找一种方法来创建多语言的 magento 属性选项,用于多种语言。

假设我确实有商店视图名称“德语”和“英语”。 我确实使用以下方式检索商店语言代码(必须在商店视图配置页面上设置每种语言):

$storelist = Mage::app()->getStores();
$storelang = array();
foreach ($storelist as $id => $s) {
    $storelang[$id] = substr(Mage::getStoreConfig('general/locale/code', $id), 0, 2);
}

这样我确实创建了属性选项(属性确实已经存在):

function addAttributeValue($arg_attribute, $arg_value) {
   $attribute_model = Mage::getModel('eav/entity_attribute');
   $attribute_code = $attribute_model->getIdByCode('catalog_product', $arg_attribute);
   $attribute = $attribute_model->load($attribute_code);

   if (!attributeValueExists($arg_attribute, $arg_value)) {
       $value['option'] = array($arg_value, $arg_value);
       $result = array('value' => $value);
       $attribute->setData('option', $result);
       $attribute->save();
       echo "Attribute '" . $arg_attribute . "' with 
       option '" . $arg_value . "' saved.<br />";
}

但是第二语言在哪里发挥作用?现在只有默认值/默认值被填充到数据库中。

我想为每种语言准备一个循环,但我不知道该语言的正确“切换”。

在创建产品时,不是属性选项,有一种方法可以根据语言设置所有产品字段

$Product->setStoreId($lang_value);

但我不确定属性选项的这一点。 各位大侠能给个提示吗?

谢谢。

【问题讨论】:

  • 尝试从管理表单中添加一个选项,并在Mage_Adminhtml_Catalog_Product_AttributeController::saveAction 中添加此行echo "&lt;pre&gt;"; print_r($model);exit; 就在$model-&gt;save() 之前。这将向您展示属性模型实例在保存之前的样子。在打印的对象中查找成员option,您将了解如何构建选项并通过代码保存它们。

标签: magento attributes add multilingual entity-attribute-value


【解决方案1】:

问题解决了。感谢 Marius 指出我的混乱数组。 这一行是错误的:

$value['option'] = array($arg_value, $arg_value);

将其设置为:

$value['option'] = array($arg_value_label, $arg_value_lang1, $arg_value_lang2);

现在我可以加载每种语言的值并使用上面的单行设置它们。也许这不是最好的解决方案,但它目前对我有用。 祝大家周末愉快。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-06
    • 2016-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多