Answers:
在属性上设置is_visible
为0
,它将不会显示在管理表单(产品页面以及属性管理页面)中。
您可以通过SQL工具或在安装脚本中以编程方式进行操作:
$installer->updateAttribute('catalog_product', $attribute_code, 'is_visible', '0');
这可以通过观察事件core_block_abstract_prepare_layout_before
(方法removeAttributes()
)和core_block_abstract_prepare_layout_after
(方法removeTabs()
)来实现。
备注:我将其放入一个模块中,该模块为每个属性/选项卡添加ACL条目,以便可以对某些用户隐藏它们。
在观察者中,我们必须检查是否位于块中,Mage_Adminhtml_Block_Catalog_Product_Edit_Tabs
并且可以删除选项卡或属性。
/**
* Overwrite the cache field in the product to remove disabled attributes
*
* event: core_block_abstract_prepare_layout_before
*
* @param Varien_Event_Observer $event
*/
public function removeAttributes(Varien_Event_Observer $event)
{
$block = $event->getBlock();
if (!$block instanceof Mage_Adminhtml_Block_Catalog_Product_Edit_Tabs) {
return;
}
$editableAttributes = $block->getProduct()->getTypeInstance()->getEditableAttributes();
$adminSession = Mage::getSingleton('admin/session');
// TODO: remove attribute to hide from the $editableAttributes array
$block->getProduct()->setData('_cache_editable_attributes', $editableAttributes);
}
/**
* Remove hidden tabs from product edit
* event: core_block_abstract_prepare_layout_after
*
* @param Varien_Event_Observer $event
*/
public function removeTabs(Varien_Event_Observer $event)
{
$block = $event->getBlock();
if (!$block instanceof Mage_Adminhtml_Block_Catalog_Product_Edit_Tabs) {
return;
}
// TODO / Example: remove inventory tab
$block->removeTab('inventory');
// fix tab selection, as we might have removed the active tab
$tabs = $block->getTabsIds();
if (count($tabs) == 0) {
$block->setActiveTab(null);
} else {
$block->setActiveTab($tabs[0]);
}
}
Magento连接上的免费模块-未经测试且有点旧(Magento 1.6)
http://www.magentocommerce.com/magento-connect/product-fields-permission-3864.html