제품 편집 백엔드에서 속성 및 기타 필드 숨기기


10

상점 소유자를 위해 제품 (및 카테고리)을 쉽게 편집 할 수 있도록 관리자 백엔드의 일부 사용자로부터 불필요한 탭과 필드를 숨기려고합니다.

의미 : 일부 속성 숨기기와 "고객 리뷰", "교차 판매"등과 같은 탭

어떻게 할 수 있습니까?

답변:


10

속성으로 설정 is_visible하면 0관리 양식 (제품 페이지 및 속성 관리 페이지)에 표시되지 않습니다.

SQL 도구를 통해 또는 설정 스크립트에서 프로그래밍 방식으로 수행 할 수 있습니다.

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

빈 탭이 자동으로 사라지는 지 알고 있습니까? 그리고 관리자에게 해당 속성을 일시적으로 표시하는 방법이 있습니까? 어쨌든-이것은 여전히 ​​사용자별로 볼 수있는 모듈의 좋은 출발점이 될 것입니다.
— Alex

1
당신은 확장 할 수 이 - 그리고 결정하기 위해 자신의 ACL에 넣어 사람 수 / 할 수없는 편집이
— 벤 Lessani - Sonassi

방금 속성보다 더 많은 것이 있다는 것을 깨달았습니다 :-) 더 명확하게하기 위해 내 질문의 제목을 편집했습니다.
— Alex

탭이 비어 있으면 사라집니다. 그것들을 보여 주려면, 요청하기 전에 두 명의 관찰자를 추가하여 보여주고 후에 숨기시겠습니까? 내가 지금 가지고있는 최고의 아이디어. 두 사람이 상점에 병행 할 때에도 확실한 증거는 아닙니다. 대안 : 관찰자 및 수집 쿼리 변경 하지만 당신은 내가 생각까지 많이해야합니다 ...
— 파비안 Blechschmidt

그것들은 실제로 사라지지 않습니다. 저는 속성 (교차 판매 등)이 아닌 탭에 대해 이야기하고 있습니다
— Alex

8

이벤트 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]);
    }
}

ACL 설정 모듈을 사용해 본 적이 있습니까? 내가 겪고있는 어려움은 수백 개의 속성 세트가 있다는 것입니다. 수백 개의 '그룹'탭도 현재와 같이 어떻게 적용됩니까?
— Anthony Cicchelli

예, 그것은 우리 프로젝트에서 실행됩니다
— Alex

GIT이 있습니까? 우리는 같은 프로젝트에서 일하고 있습니다. 다른 전략을보고 있습니다. 그렇지 않은 경우 조만간 완료되면 알려 드리겠습니다.
— Anthony Cicchelli

우리는 이것을 허용하기 위해 확장을 만들었습니다. 또한 Aitoc Permission Module의 모든 기능을 사용합니다. 그래서 당신은 둘 다의 훌륭한 조합을 얻습니다.
— Anthony Cicchelli

오 재밌 네요 나는 Aitoc을 좋아하지 않지만 ... 모듈을 게시합니까? 우리는 아직 출판되지 않았습니다 ...
— Alex

0

탭을 숨기는 비교적 쉬운 방법은 새 관리자를 만들고 상점 소유자가 사용할 영역에만 액세스하는 것입니다. 귀하 또는 다른 개발자가 변경을 수행 할 수있는 능력을 유지하면서 상점 소유자를 위해 일을 단순하게 유지합니다.


물론-일반 영역 (메뉴 항목 등)에서 작동하지만 제품 편집 화면에서 탭이 거의없는 경우에만 해당됩니다 (검토를 비활성화 할 수 있음). 단일 속성은 비활성화 할 수 없습니다.
— Alex

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.