Я хотел бы добавить новую вкладку, как показано на снимке экрана, и заполнить ее полями и т. Д., Используя system.xml моего расширения.Как добавить новую вкладку в категории с помощью system.xml? (Magento)
.
Возможно ли это?
Я хотел бы добавить новую вкладку, как показано на снимке экрана, и заполнить ее полями и т. Д., Используя system.xml моего расширения.Как добавить новую вкладку в категории с помощью system.xml? (Magento)
.
Возможно ли это?
Вы можете добавить категорию полей с помощью скрипта настройки
/app/code/local/MagePal/AddCategoryFields/sql/addcategoryfields_setup/upgrade-0.9.5-0.9.8.php
$installer = $this;
$installer->startSetup();
$setup = new Mage_Eav_Model_Entity_Setup('core_setup');
$setup->addAttribute('catalog_category', 'magepal_category_fieldname', array(
'group' => 'My Tab',
'input' => 'text',
'type' => 'varchar',
'label' => 'Field desc',
'backend' => '',
'visible' => 1,
'required' => 0,
'user_defined' => 1,
'global' => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
));
//$setup->removeAttribute('catalog_category', 'magepal_category_fieldname');
$installer->endSetup();
Чтобы добавить новую вкладку категории magento (управляйте страницей категорий/областью администратора), перепишите или просто скопируйте файл из: core/Mage/Adminhtml/Block/Catalog/Category/Tabs.php в: local/Mage/Adminhtml/Block/Каталог/Категория/Tabs.php.
Следующая в методе _prepareLayout после этого кода:
$this->addTab(’products’, array(‘label’ =>
Mage::helper(’catalog’)->__(’Category Products’), ‘content’ =>
$this->getLayout()->createBlock(’adminhtml/catalog_category_tab_product’,‘category.product.grid’)->toHtml(),));
Добавить это один:
$this->addTab(’new_tab’, array(
‘label’ => Mage::helper(’catalog’)->__(’New Category Tab’),
‘content’ => $this->getLayout()->createBlock(’yourmodule/adminhtml_category_form’)->toHtml(),));
Параметр «содержание» относится к блоку, этот блок должен быть добавлен в модуль вы работают здесь, вот пример содержимого блока:
<?php class Namespace_Module_Block_Adminhtml_Category_Form extends Mage_Adminhtml_Block_Widget_Form {
protected function _prepareForm(){
$form = new Varien_Data_Form();
$this->setForm($form);
$fieldset = $form->addFieldset('custom_category_tab_form', array('legend'=>Mage::helper('catalog')->__('Custom Tab'))); $fieldset->addField('anytext', 'text', array('label'=> Mage::helper('catalog')->__('Any Text'),'name'=> 'anytext',));
return parent::_prepareForm();
}
}
После этого в порядке чтобы иметь возможность сохранять добавленные поля вкладок в таблицу модуля, вам нужно добавить наблюдателя событий. Добавьте его в раздел «глобального» файла config.xml:
<events>
<catalog_category_prepare_save >
<observers>
<yourmodule>
<type>singleton</type>
<class> yourmodule /observer</class>
<method>categorySave</method>
</ yourmodule >
</observers>
</catalog_category_prepare_save >
</events>
И добавить модель наблюдателя в папку «моделей» модуля:
<?php
class Namespace_Module _Model_Observer
{
public function categorySave($observer){
$params = $observer->getRequest()->getParams();
// now you could save your custom category params to your db table
}
}
Я знаю, как добавить поля , дело в том, что мне нужно сначала добавить свою собственную вкладку. –
Просто измените '' group '=>' My Tab'' –
Он работает для уже существующих вкладок, но не для той, которую я создал. Я переопределил Mage_Adminhtml_Block_Catalog_Category_Tabs и внутри метода _prepareLayout() я использовал addTab(). –