Produktattributproblem mit dem Attributsatz mit dem Installationskript mit dem Installationskript
-
16-10-2019 - |
Frage
Ich stehe mit einem Problem mit dem Erstellen von Attribut- und Attribut -Set mit dem Installationsproskript.Attribute -Set und dem Attribut erstellt. Das Problem ist jedoch, dass Attribute für alle Attributsets zugewiesen werden, anstatt nur ein benutzerdefiniertes Erstellen mit dem Installationskript zu erstellen.
Im Folgenden finden Sie mein Installationskript:
<?php
$installer = $this;
$installer->startSetup();
try{
$sNewSetName = 'Product Bundler Package';
$iCatalogProductEntityTypeId = (int) $installer->getEntityTypeId('catalog_product');
$oAttributeset = Mage::getModel('eav/entity_attribute_set')
->setEntityTypeId($iCatalogProductEntityTypeId)
->setAttributeSetName($sNewSetName);
if ($oAttributeset->validate()) {
$oAttributeset
->save()
->initFromSkeleton($installer->getAttributeSetId('catalog_product', 'Default'))
->save();
}
else {
Mage::log('Attributeset with name ' . $sNewSetName . ' already exists.');
}
}
catch(Exception $ex){
Mage::log('Attributeset with name ' . $sNewSetName . ' already exists.');
}
$installer->addAttributeGroup('catalog_product', 'Product Bundler Package', 'Bundled Package Data', 1000);
$data1= array (
'attribute_set' => 'Product Bundler Package',
'group' => 'Bundled Package Data',
'label' => 'Preset1 name',
'visible' => true,
'type' => 'varchar',
'input' => 'text',
'system' => true,
'required' => false,
'user_defined' => 1,
);
$installer->addAttribute('catalog_product','bundle_preset1_name',$data1);
$data2= array (
'attribute_set' => 'Product Bundler Package',
'group' => 'Bundled Package Data',
'label' => 'Preset2 name',
'visible' => true,
'type' => 'varchar',
'input' => 'text',
'system' => true,
'required' => false,
'user_defined' => 1,
);
$installer->addAttribute('catalog_product','bundle_preset2_name',$data2);
$data3= array (
'attribute_set' => 'Product Bundler Package',
'group' => 'Bundled Package Data',
'label' => 'Preset3 name',
'visible' => true,
'type' => 'varchar',
'input' => 'text',
'system' => true,
'required' => false,
'user_defined' => 1,
);
$installer->addAttribute('catalog_product','bundle_preset3_name',$data3);
$data4 = array (
'attribute_set' => 'Product Bundler Package',
'group' => 'Bundled Package Data',
'label' => 'Preset4 name',
'visible' => true,
'type' => 'varchar',
'input' => 'text',
'system' => true,
'required' => false,
'user_defined' => 1,
);
$attribute = $installer->addAttribute('catalog_product','bundle_preset4_name',$data4);
$installer->endSetup();
?>
Ich möchte benutzerdefinierte Attribute mit Attributsatzname "Produkt -Bundler -Paket" erstellen und alle Attribut nur diesem Attributsatz zuweisen.
Bitte helfen Sie mir, es zu lösen.
Lösung
Nicht viel klar, was Sie wirklich tun möchten. Auf jeden Fall ist dies das Skript, um ein Produktattribut zu erstellen, nachdem Sie den Attributsatz erstellt haben.
<?php
$th = new Mage_Catalog_Model_Resource_Setup();
$th->addAttribute(Mage_Catalog_Model_Product::ENTITY, 'your_custom_attribute_code', array(
'group' => 'Prices',
'type' => 'text',
'attribute_set' => 'Default', // Your custom Attribute set
'backend' => '',
'frontend' => '',
'label' => 'My Custom Attribute',
'input' => 'text',
'global' => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
'visible' => true,
'required' => false,
'user_defined' => true,
'default' => '1',
'searchable' => false,
'filterable' => true,
'comparable' => false,
'visible_on_front' => true,
'visible_in_advanced_search' => true,
'used_in_product_listing' => true,
'unique' => false,
'apply_to' => 'simple', // Apply to simple product type
) );
HINWEIS: Weitere Informationen finden Sie auf http://www.magentocommerce.com/wiki/5_-_modules_and_development/catalog/programmatic_adding_attributes_and_attribute_sets
Andere Tipps
Grundsätzlich genau wie die Antwort von @sukeshini, aber Sie müssen gehen group
undefiniert in den Attributendaten und geben Sie an user_defined
wie true
.
Dann wird es nicht zu Attributsätzen hinzugefügt. Afaik Sie können das Attributsatz beim Erstellen des Attributs in dieser Methode nicht definieren. Sie können das Attribut zu einem Attribut -Set hinzufügen, nachdem Sie es im Upgrade- oder Setup -Skript erstellt haben.