【问题标题】:Creating configurable product programmatically以编程方式创建可配置产品
【发布时间】:2011-10-06 09:23:15
【问题描述】:

我正在尝试在 Magento 1.5.1 中以编程方式创建可配置产品。
我知道我首先需要创建简单的相关产品,我做了什么。现在,我设法将这些简单的产品关联起来,制作出可配置的产品。

这是关键部分...
我将 id 和一些属性值保存在一个数组中,以便以后制作我的可配置产品,但是其中一些丢失了,我不知道要调用哪个方法。 我在 Magento Wiki 中找到了 this entry,这对我有帮助并且似乎符合我的需求。
但是,最后作者设置了两件事:

$product->setConfigurableProductsData($data);
$product->setConfigurableAttributesData($data);

并且数组中的值已使用 Firebug 在管理页面源中获取......然后翻译成 PHP 数组(第一次调用的数组示例):

“我已对关联产品和属性的值进行了硬编码 数据。您可以通过查看源来获取属性数据 管理界面并使用 Firebug for Firefox。”

$data = array('5791'=>array('0'=>array('attribute_id'=>'491', // I already got this
                                       'label'=>'vhs',        // this too
                                       'value_index'=>'5',    // but what is value_index ?
                                       'is_percent'=>0,
                                       'pricing_value'=>'')),
              '5792'=>array('0'=>array('attribute_id'=>'491',
                                       'label'=>'dvd',
                                       'value_index'=>'6',
                                       'is_percent'=>0,
                                       'pricing_value'=>'')));

我的问题是:有没有办法在不使用 Firebug 的情况下检索这些值(这在我的脚本中对我没有多大帮助!),但是以编程方式。我已经找到了一种使用其代码检索属性值、标签等的方法,但我不知道的一个字段是value_index
我猜这可能是选项列表中的选项位置,但不确定。 此外,如果有人知道在 Magento 中创建可配置产品的好/更好的方法,请告诉我。
欢迎任何帮助,谢谢。

【问题讨论】:

  • 维基页面上的哪个作者?能具体一点吗?
  • 我说的是页面上的第二个帖子,作者是 juice1492..
  • 我的书呆子想指出链接页面不是维基条目,它是一个论坛主题。我什至为提出这一点感到内疚。
  • @clockworkgeek - 不要感到内疚。是的,一个论坛帖子.. 但你肯定知道,什么是“value_index”以及如何检索它?

标签: php magento import magento-1.5


【解决方案1】:

您似乎在询问在哪里检索您已经拥有labelvalue_index 值。这就是我所拥有的:我没有在 1.5x 上进行测试。

function get_attribute_id($option, $type) {
   $attributeId      = Mage::getResourceModel('eav/entity_attribute')->getIdByCode('catalog_product', $type);
   $attribute        = Mage::getModel('catalog/resource_eav_attribute')->load($attributeId);
   $attributeOptions = $attribute->getSource()->getAllOptions();

   foreach ($attributeOptions as $opts_arr) {
       if (strtoupper($opts_arr['label']) == strtoupper($option)) {
          return $opts_arr['value'];
       }
    }
    return FALSE;
}

$value_index = get_attribute_id('vhs', 'media_format');

似乎没有其他人提到找出 vhs 的 value_index 是什么的最简单方法:在后端,在 Catalog > Manage > media_format > Manage Label/Options 检查各个表单输入的来源。如果你有'vhs',你应该有一个名为option[value][6]的输入

【讨论】:

    【解决方案2】:

    据我了解您的问题,有两种选择:a)通过脚本创建简单的产品,将生成的 id 放入数组中并使用 id 创建可配置项或 b)从管理员处读取 id 并将它们放入在你的脚本中。由于编程是关于自动化的,我肯定会选择选项 a。

    【讨论】:

    • 是的,我需要这个来编写产品更新脚本,但是如何检索在管理页面源中找到的值?再一次,在我的脚本中没有这样的东西......有没有我可以调用的好方法来获取它们?
    • 我不会在简单的产品数据中找到该信息...我正在寻找一种解决方案来找到作者使用 Firebug 抓取的内容。我认为它与属性有关......
    • 那么你必须先加载产品。如果您执行 $data = $simple->getData() 您将获得基本数据,例如 db id。如果你想要所有数据,你必须加载产品: $data = $simple->load($simple->getId())->getData();
    • 不,你不明白,我根本不需要产品数据(不需要更多简单产品的数据)。我需要检索 attribute 数据以创建 可配置 产品并将我的 simple 产品链接到...以编程方式告诉 Magento 哪些属性用于。
    猜你喜欢
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 2012-05-18
    • 2013-05-05
    • 2014-03-04
    • 2015-02-15
    • 2014-08-11
    • 1970-01-01
    相关资源
    最近更新 更多