2014-09-16 2 views
0

Я работаю над добавлением атрибута affiliate_link (текстовое поле) к настраиваемому типу продукта. Вот инсталлятор сценарий, но, к сожалению, это не работает:Как программно добавлять атрибуты к типу продукта

<?php /** @var $installer Mage_Catalog_Model_Resource_Setup */ 


$installer = $this; 
$installer->startSetup(); 

$installer->addAttribute(
    Mage_Catalog_Model_Product::ENTITY, 
    'affiliate_link', 
    array(
     'type'     => 'text', 
     'backend'     => '', 
     'frontend'    => '', 
     'label'     => 'Affiliate Link', 
     'input'     => 'text', 
     'class'     => '', 
     'source'     => '', 
     'global'     => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_STORE, 
     'visible'     => true, 
     'required'    => true, 
     'user_defined'   => false, 
     'default'     => '', 
     'searchable'    => false, 
     'filterable'    => false, 
     'comparable'    => false, 
     'visible_on_front'  => false, 
     'unique'     => false, 
     'apply_to'    => 'gift', 
     'is_configurable'   => false, 
     'used_in_product_listing' => false 
    ) 
); 


$attributeId = $installer->getAttributeId(
    'catalog_product', 
    'affiliate_link' 
); 

$defaultSetId = $installer->getAttributeSetId('catalog_product', 'default'); 

$installer->addAttributeGroup(
    'catalog_product', 
    $defaultSetId, 
    'Affiliate Information' 
); 

//find out the id of the new group 
$groupId = $installer->getAttributeGroup(
    'catalog_product', 
    $defaultSetId, 
    'Affiliate Information', 
    'attribute_group_id' 
); 

//assign the attribute to the group and set 
if ($attributeId > 0) { 
    $installer->addAttributeToSet(
     'catalog_product', 
     $defaultSetId, 
     $groupId, 
     $attributeId 
    ); 
} 

$installer->endSetup();?> 

Код для config.xml:

<config> 
    <modules> 
     <Cueblocks_Newtype> 
      <version>0.1.0</version> 
     </Cueblocks_Newtype> 
    </modules> 
    <global> 
     <catalog> 
      <product> 
       <type> 
        <gift translate="label" module="cueblocks_newtype"> 
         <label>Gift Product</label> 
         <model>cueblocks_newtype/product_type</model> 
         <is_qty>0</is_qty> 
         <composite>0</composite> 
         <can_use_qty_decimals>0</can_use_qty_decimals> 
        </gift> 
       </type> 
      </product> 
     </catalog> 



     <!-- code omitted for brevity --> 
        <blocks> 
      <cueblocks_newtype> 
       <class>Cueblocks_Newtype_Block</class> 
      </cueblocks_newtype> 
     </blocks> 
     <helpers> 
      <cueblocks_newtype> 
       <class>Cueblocks_Newtype_Helper</class> 
      </cueblocks_newtype> 
     </helpers> 
        <models> 
      <cueblocks_newtype> 
       <class>Cueblocks_Newtype_Model</class> 
      </cueblocks_newtype> 
     </models> 


     <!-- code omitted for brevity --> 
       <resources> 
      <cueblocks_newtype_setup> 
       <setup> 
        <module>Cueblocks_Newtype</module> 
        <class>Mage_Catalog_Model_Resource_Setup</class> 
       </setup> 
       </cueblocks_newtype_setup> 

        <newtype_write> 
    <connection> 
    <use>core_write</use> 
    </connection> 
    </newtype_write> 
    <newtype_read> 
    <connection> 
    <use>core_read</use> 
    </connection> 
    </newtype_read> 
     </resources> 
    </global> 
</config> 

Любая помощь будет принята с благодарностью.

ответ

0

код выглядит хорошо, но следующий кусок кода работает для меня. но для всех типов продуктов. и создать системный атрибут. так изменить

$installer->addAttribute('catalog_product', 'affiliate_link', array(
       'group' => 'Affiliate', 
       'label' => 'Affiliate Link',    
       'type' => 'varchar', 
       'input' => 'text',      
       'visible' => true, 
       'required' => true, 
       'position' => 1, 
       'global' => 'Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL', 
     'note' => "comments note" 
    )); 
+0

Hey Asif спасибо за то, что посмотрели на это ... Лемме попробуй и вернемся к тебе. –

+0

Не работает .... Я использую magento 1.9 version.On, в какой версии вы это пробовали? –

+0

Интересно, что это даже не добавление новой группы атрибутов «Affiliate», которую мы пытались добавить через скрипт установщика. Возможно, это проблема с версией magento 1.9 .... Любые идеи ??? –

0

Наконец я понял это out..The инсталлятор скрипт не работает, потому что я не удалил запись из таблицы core_resource ... Код размещен выше мною для инсталлятора скрипт не работает .. Я заменил код обновленным кодом, предоставленным Asif ...

Но в соответствии с поведением по умолчанию magento он запускает скрипт установщика один раз в начале модуля &, он добавляет запись в таблицу core_resource этим именем модуля .. Теперь, если вы обновите один и тот же скрипт, он не будет запущен, потому что соответствующая ему запись уже присутствует в базе данных. Чтобы запустить ее с обновленным кодом, я удалил запись вручную с e core_resource table & затем попробовал его с обновленным кодом Asif ... И я работаю как Charm !!!

** Примечания: -1.) Всякий раз, когда какой-либо модуль magento выполняется, он сначала проверяет наличие каких-либо сценариев установки/обновления, присутствующих в модуле. Всегда проверяйте скрипты, печатая сообщение & в самом начале.

2.) Если ваш код установки не работает желаемым образом & вы обновили одну проверку script..Please ранее в core_resource таблице, если запись, соответствующую этот модуль уже present..Delete этой записи вручную & то ваш обновленный скрипт установщика будет работать. **