Skip to content

Instantly share code, notes, and snippets.

@code-poel
Forked from magento-team/2500 config products
Last active August 29, 2015 14:06
Show Gist options
  • Select an option

  • Save code-poel/d7d9ed6652a44ddf49e7 to your computer and use it in GitHub Desktop.

Select an option

Save code-poel/d7d9ed6652a44ddf49e7 to your computer and use it in GitHub Desktop.

Revisions

  1. code-poel renamed this gist Sep 8, 2014. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  2. @magento-team magento-team created this gist Nov 8, 2012.
    151 changes: 151 additions & 0 deletions 2500 config products
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,151 @@
    <?php
    /**
    * Error reporting
    */
    error_reporting(E_ALL | E_STRICT);

    /**
    * Compilation includes configuration file
    */
    define('MAGENTO_ROOT', getcwd());
    $mageFilename = MAGENTO_ROOT . '/app/Mage.php';
    require_once $mageFilename;
    if (isset($_SERVER['MAGE_IS_DEVELOPER_MODE'])) {
    Mage::setIsDeveloperMode(true);
    }
    umask(0);
    /* Store or website code */
    $mageRunCode = isset($_SERVER['MAGE_RUN_CODE']) ? $_SERVER['MAGE_RUN_CODE'] : '';

    /* Run store or run website */
    $mageRunType = isset($_SERVER['MAGE_RUN_TYPE']) ? $_SERVER['MAGE_RUN_TYPE'] : 'store';
    Mage::app();



    /* Create attribute */
    /** @var $installer Mage_Catalog_Model_Resource_Setup */
    $installer = new Mage_Catalog_Model_Resource_Setup('catalog_setup');
    /** @var $attribute Mage_Catalog_Model_Resource_Eav_Attribute */
    $attribute = Mage::getResourceModel('catalog/eav_attribute');
    $attribute->load('test_configurable', 'attribute_code');
    if ($attribute->getId() == null) {
    $attribute->setData(
    array(
    'attribute_code' => 'test_configurable',
    'entity_type_id' => $installer->getEntityTypeId('catalog_product'),
    'is_global' => 1,
    'is_user_defined' => 1,
    'frontend_input' => 'select',
    'is_unique' => 0,
    'is_required' => 1,
    'is_configurable' => 1,
    'is_searchable' => 0,
    'is_visible_in_advanced_search' => 0,
    'is_comparable' => 0,
    'is_filterable' => 0,
    'is_filterable_in_search' => 0,
    'is_used_for_promo_rules' => 0,
    'is_html_allowed_on_front' => 1,
    'is_visible_on_front' => 0,
    'used_in_product_listing' => 0,
    'used_for_sort_by' => 0,
    'frontend_label' => array(
    0 => 'Test Configurable'
    ),
    'option' => array(
    'value' => array(
    'option_0' => array(0 => 'Option 1'),
    'option_1' => array(0 => 'Option 2'),
    ),
    'order' => array(
    'option_0' => 1,
    'option_1' => 2,
    )
    ),
    'backend_type' => 'int',
    )
    );
    $attribute->save();

    /* Assign attribute to attribute set */
    $installer->addAttributeToGroup('catalog_product', 'Default', 'General', $attribute->getId());
    }

    /* Create simple products per each option */
    /** @var $options Mage_Eav_Model_Resource_Entity_Attribute_Option_Collection */
    $options = Mage::getResourceModel('eav/entity_attribute_option_collection');
    $options->setAttributeFilter($attribute->getId());

    for ($i = 1; $i <= 2500; $i++) {
    $attributeValues = array();
    $productsData = array();
    foreach ($options as $option) {
    /** @var $product Mage_Catalog_Model_Product */
    $product = Mage::getModel('catalog/product');
    $product->setTypeId(Mage_Catalog_Model_Product_Type::TYPE_SIMPLE)
    ->setId($i * 10000 + $option->getId() * 10)
    ->setAttributeSetId($installer->getAttributeSetId('catalog_product', 'Default'))
    ->setWebsiteIds(array(1))
    ->setName('Configurable Option' . $option->getId() . '-' . $i)
    ->setSku('simple_'.$option->getId() . '_' . $i)
    ->setPrice(10)
    ->setTestConfigurable($option->getId())
    ->setVisibility(Mage_Catalog_Model_Product_Visibility::VISIBILITY_NOT_VISIBLE)
    ->setStatus(Mage_Catalog_Model_Product_Status::STATUS_ENABLED)
    ->setStockData(
    array(
    'use_config_manage_stock' => 1,
    'qty' => 100,
    'is_qty_decimal' => 0,
    'is_in_stock' => 1,
    )
    )
    ->save();

    $dataOption = array(
    'label' => 'test',
    'attribute_id' => $attribute->getId(),
    'value_index' => $option->getId(),
    'is_percent' => false,
    'pricing_value' => 5,
    );
    $productsData[$product->getId()] = array($dataOption);
    $attributeValues[] = $dataOption;
    }

    /** @var $product Mage_Catalog_Model_Product */
    $product = Mage::getModel('catalog/product');
    $product->setTypeId(Mage_Catalog_Model_Product_Type::TYPE_CONFIGURABLE)
    ->setId($i)
    ->setAttributeSetId($installer->getAttributeSetId('catalog_product', 'Default'))
    ->setWebsiteIds(array(1))
    ->setName('Configurable Product')
    ->setSku('configurable_' . $i)
    ->setPrice(100)
    ->setVisibility(Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH)
    ->setStatus(Mage_Catalog_Model_Product_Status::STATUS_ENABLED)
    ->setStockData(
    array(
    'use_config_manage_stock' => 1,
    'is_in_stock' => 1,
    )
    )
    ->setConfigurableProductsData($productsData)
    ->setConfigurableAttributesData(
    array(
    array(
    'attribute_id' => $attribute->getId(),
    'attribute_code'=> $attribute->getAttributeCode(),
    'frontend_label'=> 'test',
    'values' => $attributeValues,
    )
    )
    )
    ->save();

    echo '.';
    if ($i % 100 == 0) {
    echo "\n$i\n";
    }
    }