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


10

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

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

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

Ответы:


10

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

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

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

Знаете ли вы, если пустые вкладки исчезнут автоматически? И есть ли способ сделать эти атрибуты временно видимыми для администраторов? В любом случае - это все равно будет хорошей отправной точкой для модуля, делающего их видимыми для каждого пользователя.
— Алекс

1
Вы можете расширить это - и добавить свои собственные списки ACL, чтобы определить, кто может / не может их редактировать
— Бен Лессани - Sonassi

Я только что понял, что есть намного больше вещей, чем только атрибуты :-) Отредактировал заголовок моего вопроса, чтобы сделать это более ясным.
— Алекс

Я думаю, что вкладки исчезают, если они пусты. Чтобы показать их, просто добавьте двух наблюдателей, чтобы показать их перед запросом и скрыть их после? Лучшая идея, которая у меня есть на данный момент. И не безотказно, когда два человека находятся в магазине параллельно. Альтернатива: наблюдать и изменять запрос коллекции. но тогда, я думаю, у Вас будет очень много ...
— Фабиан Блехшмидт

Они на самом деле не исчезают - и я говорю о вкладках, которые не относятся к атрибутам (перекрестные продажи и т. Д.)
— Алекс

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.