2012-11-02 63 views
2

有誰知道我如何使用小部件渲染器添加自定義產品屬性? 如果您選擇SKU,您將在促銷規則中看到這一點,您將獲得帶產品選擇的Ajax彈出窗口。將產品選擇小部件添加到Magento中的自定義屬性

那麼我該怎麼辦呢? 在:

$installer->addAttribute(Mage_Catalog_Model_Product::ENTITY... 

換句話說,我怎麼可以用一個小窗口以選擇自定義屬性值?

編輯: 的場景如下:

我想創建一個產品屬性,將,在點擊一個按鈕,打開產品選擇小部件。

選擇後,選定的SKU將以逗號分隔的格式進入。

此行爲可以在目錄和購物車價格規則中看到。 如果您通過SKU過濾規則(SKU屬性必須啓用爲「適用於規則」),您將獲得一個字段和一個將打開產品選擇小部件的按鈕。

+0

你能提供一些更多的解釋嗎?這是完全可以做你所描述的(如果我理解正確的話)。我很樂意花時間,如果我確切地知道我們的目標是什麼,它肯定會有所幫助。 –

+0

我真的很感激它。編輯以添加更多信息 – boruch

+0

您打算將此功能放在哪裏?在產品頁面/屬性管理頁面上? –

回答

1

下面是一些想法,應該讓你去正確的軌道上:

首先,在安裝腳本,創建實體:

$installer->addAttribute('catalog_product', 'frontend_display', array(
    'label' => 'Display Test', 
    'type' => 'varchar', 
    'frontend_model' => 'Test_Module/Entity_Attribute_Frontend_CsvExport', 
    'input' => 'select', 
    'required' => 0, 
    'user_defined' => false, 
    'group' => 'General' 
)); 

確保將frontend_model設置爲模型你將會使用。前端模型影響屬性的顯示(在前端和adminhtml部分)。

接下來,創建自己的類,並重寫的以下功能的一個或兩個:

public function getInputType() 
{ 
    return parent::getInputType(); 
} 

public function getInputRendererClass() 
{ 
    return "Test_Module_Block_Adminhtml_Entity_Renderer_CsvExport"; 
} 

第一(getInputType())用於輸入類型改變爲在輸入型烘烤(見Varien_Data_Form_Element_*爲選項)。但是,要設置您自己的渲染器類,請使用後一個函數 - getInputRendererClass()。這就是我要在下面展示:

public function getElementHtml() 
{ 
    return Mage::app()->getLayout()->createBlock('Test_Module/Adminhtml_ExportCsv', 'export')->toHtml(); 
} 

這裏,清理東西,我實例化另一個塊,作爲元素本身不具備額外的功能,以顯示按鈕等。

於是最後,創建這個文件:

class Test_Module_Block_Adminhtml_ExportCsv extends Mage_Adminhtml_Block_Widget 
{ 
    protected function _prepareLayout() 
    { 
     $button = $this->getLayout()->createBlock('adminhtml/widget_button') 
      ->setData(array(
      'label' => $this->__('Generate CSV'), 
      'onclick' => '', 
      'class' => 'ajax', 
     )); 

     $this->setChild('generate', $button); 
    } 

    protected function _toHtml() 
    { 
     return $this->getChildHtml(); 
    } 
} 

這不包括AJAX的一部分,但將讓你非常接近得到休息的工作。

+0

感謝一家工廠。我會試試這個,讓你知道 – boruch

+0

高興地幫助! –

相關問題