Сховати атрибути та інші поля в програмі Backend Edit


10

Щоб полегшити редагування продуктів (а може бути і категорій) для власника магазину, ми хотіли б приховати кілька непотрібних вкладок і полів від деяких користувачів у адміністративному сервісі.

Це означає: приховування деяких атрибутів, але також вкладки "огляди покупців", "перехресний продаж" тощо.

Як це можна зробити?

Відповіді:


10

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

Це можна зробити за допомогою інструмента SQL або програмно в сценарії налаштування:

$installer->updateAttribute('catalog_product', $attribute_code, 'is_visible', '0');

Чи знаєте ви, чи автоматично порожні вкладки зникнуть? І чи є спосіб зробити ці атрибути тимчасово видимими для адміністраторів? У будь-якому разі - це все-таки буде хорошою відправною точкою для модуля, що робить їх видимими для кожного користувача.
Олексій

1
Ви можете продовжити це - і вкласти власні ACL, щоб визначити, хто міг / не міг його відредагувати
Бен Лессані - Сонассі

Я щойно зрозумів, що є набагато більше речей, ніж лише атрибути :-) Редагував заголовок мого питання, щоб зробити це більш зрозумілим.
Олексій

Я думаю, що вкладки зникають, якщо вони порожні. Щоб показати їх, просто додайте двох спостерігачів, щоб показати їх перед запитом і приховати? Найкраща ідея, яку я маю на даний момент. І не безвідмовно, коли в магазині паралельно двоє людей. Альтернатива: спостерігач і зміна запиту колекції. але тоді у вас буде набагато багато чого, я думаю ...
Fabian Blechschmidt

Вони насправді не зникають - і я говорю про вкладки, які не стосуються атрибутів (крос-продаж тощо)
Олексій

8

Це можливо при спостереженні за подіями 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]);
    }
}

Ви коли-небудь потрапляли з модулем налаштування ACL? Проблема у мене полягає в тому, що у мене є сотні наборів атрибутів. Як би це застосовувалося, оскільки зараз також буде сотні вкладок "Групи".
Ентоні Цічеллі

так, це працює у проекті з нас
Алекс

У вас GIT? Ми просто працюємо над тим самим проектом. Просто бачити різні стратегії. Якщо ні, я дам вам знати, коли я закінчу, як це має бути найближчим часом.
Ентоні Цічеллі

Ми просто побудували розширення, щоб дозволити це. Він також використовує повну функціональність модуля дозволу Aitoc. Так ви отримуєте чудове поєднання обох.
Ентоні Цичеллі

О цікаво. Мені не подобається Aitoc, хоча ... ти публікуєш свій модуль? Наш ще не опублікований, ...
Олексій

0

Порівняно простий спосіб приховати вкладки - це просто створити нового користувача адміністратора та надати доступ лише до тих областей, якими користується власник магазину. Зробитиме прості речі для власника магазину, поки все ще залишатиме вам або іншому розробникові можливість вносити зміни.


Звичайно - це працює для загальних областей (записи меню тощо), але лише для дуже небагато вкладок на екрані редагування продукту (огляди можна відключити). Окремі атрибути не можна відключити.
Олексій

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.