ঘটনা core_block_abstract_prepare_layout_before
(পদ্ধতি removeAttributes()
) এবং core_block_abstract_prepare_layout_after
(পদ্ধতি removeTabs()
) পর্যবেক্ষণের মাধ্যমে এটি সম্ভব ।
মন্তব্য : আমি এটিকে এমন একটি মডিউলে রাখছি যা প্রতিটি বৈশিষ্ট্য / ট্যাবের জন্য এসিএল এন্ট্রি যুক্ত করে যাতে তারা নির্দিষ্ট ব্যবহারকারীর কাছ থেকে লুকানো যায়।
পর্যবেক্ষকদের মধ্যে আমাদের যাচাই করতে হবে, আমরা ব্লকে রয়েছি এবং 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]);
}
}