답변:
속성으로 설정 is_visible
하면 0
관리 양식 (제품 페이지 및 속성 관리 페이지)에 표시되지 않습니다.
SQL 도구를 통해 또는 설정 스크립트에서 프로그래밍 방식으로 수행 할 수 있습니다.
$installer->updateAttribute('catalog_product', $attribute_code, 'is_visible', '0');
이벤트 core_block_abstract_prepare_layout_before
(method removeAttributes()
) 및 core_block_abstract_prepare_layout_after
(method 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 Connect의 무료 모듈-테스트되지 않았으며 약간 낡음 (Magento 1.6)
http://www.magentocommerce.com/magento-connect/product-fields-permission-3864.html