Скрыть атрибуты и другие поля в бэкэнде редактирования продукта


Чтобы упростить редактирование товаров (и, возможно, категорий) для владельца магазина, мы хотели бы скрыть некоторые ненужные вкладки и поля от некоторых пользователей в бэкэнде администратора.

Это означает: Скрытие некоторых атрибутов, а также вкладок, таких как "отзывы клиентов", "перекрестные продажи" и т.д.

Как это можно сделать?

Author: Fabian Schmengler, 2013-05-10

4 answers

Установите is_visible в 0 для атрибута, и он не будет отображаться в формах администратора (страница продукта, а также страница управления атрибутами).

Вы можете сделать это с помощью инструмента SQL или программно в сценарии установки:

$installer->updateAttribute('catalog_product', $attribute_code, 'is_visible', '0');
 10
Author: Ben Lessani - Sonassi, 2013-05-10 10:39:53

Это возможно при наблюдении за событиями 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]);
    }
}
 8
Author: Alex, 2013-05-14 13:36:55

Относительно простой способ скрыть вкладки - просто создать нового администратора и предоставить доступ только к областям, которые будет использовать владелец магазина. Это упростит работу владельца магазина, но при этом оставит вам или какому-либо другому разработчику возможность вносить изменения.

 0
Author: andyjv, 2013-05-14 19:33:00

Бесплатный модуль на Magento connect - непроверенный и немного старый (Magento 1.6)

Http://www.magentocommerce.com/magento-connect/product-fields-permission-3864.html

 -1
Author: Alex, 2013-09-02 13:00:46