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


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.