ซ่อนคุณสมบัติและฟิลด์อื่น ๆ ในผลิตภัณฑ์แก้ไขแบ็กเอนด์


10

เพื่อให้การแก้ไขผลิตภัณฑ์ (และอาจเป็นหมวดหมู่) เพื่อให้เจ้าของร้านง่ายขึ้นเราต้องการซ่อนแท็บและฟิลด์ที่ไม่จำเป็นจากผู้ใช้บางคนในแบ็กเอนด์ผู้ดูแลระบบ

ซึ่งหมายความว่า: ซ่อนคุณลักษณะบางอย่าง แต่ยังแท็บเช่น "บทวิจารณ์ของลูกค้า", "การซื้อต่อเนื่อง" เป็นต้น

สิ่งนี้สามารถทำได้?

คำตอบ:


10

ตั้งค่าis_visibleการ0แอตทริบิวต์และมันจะไม่แสดงขึ้นในรูปแบบของผู้ดูแลระบบ (หน้าผลิตภัณฑ์และยังหน้าการจัดการแอตทริบิวต์)

คุณสามารถทำได้ผ่านเครื่องมือ SQL หรือโดยทางโปรแกรมในสคริปต์การติดตั้ง:

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

คุณรู้หรือไม่ว่าแท็บเปล่าจะหายไปโดยอัตโนมัติ และมีวิธีที่จะทำให้ผู้ดูแลระบบสามารถมองเห็นแอตทริบิวต์เหล่านั้นได้หรือไม่ Anyways - นี่จะเป็นจุดเริ่มต้นที่ดีสำหรับโมดูลที่ทำให้พวกเขามองเห็นได้บนพื้นฐานของผู้ใช้แต่ละคน
อเล็กซ์

1
คุณสามารถขยายสิ่งนี้ - และใส่ ACL ของคุณเองเพื่อพิจารณาว่าใครสามารถ / ไม่สามารถแก้ไขได้
Ben Lessani - Sonassi

ฉันเพิ่งรู้ว่ามีหลายสิ่งหลายอย่างมากกว่าคุณลักษณะเฉพาะ :-) แก้ไขชื่อคำถามของฉันเพื่อให้ชัดเจนยิ่งขึ้น
อเล็กซ์

ฉันคิดว่าแท็บจะหายไปหากไม่มีแท็บ เพื่อแสดงให้พวกเขาเพียงเพิ่มผู้สังเกตการณ์สองคนเพื่อแสดงพวกเขาก่อนที่จะร้องขอและซ่อนพวกเขาหลังจาก? ความคิดที่ดีที่สุดที่ฉันมีในขณะนี้ และไม่ล้มเหลวเมื่อคนสองคนอยู่ในร้านขนานกัน ทางเลือก: ผู้สังเกตการณ์และแก้ไขคิวรีการรวบรวม แต่แล้วคุณจะต้องอยู่ไกลออกไปมากผมคิดว่า ...
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 ปัญหาที่ฉันมีคือฉันมีชุดแอ็ตทริบิวต์หลายร้อยชุด สิ่งนี้จะมีผลอย่างไรขณะนี้จะมีแท็บ 'กลุ่ม' หลายร้อยรายการ
Anthony Cicchelli

ใช่มันกำลังทำงานอยู่ในโครงการของเรา
อเล็กซ์

คุณมี GIT หรือไม่? เรากำลังทำงานในโครงการเดียวกัน เพิ่งเห็นกลยุทธ์ที่แตกต่าง ถ้าไม่ฉันจะแจ้งให้คุณทราบเมื่อฉันทำตามที่ควรจะเป็นในไม่ช้า
Anthony Cicchelli

เราเพิ่งสร้างส่วนขยายเพื่อให้สิ่งนี้ นอกจากนี้ยังใช้ฟังก์ชั่นเต็มรูปแบบของ Aitoc Permission Module อีกด้วย ดังนั้นคุณจะได้รับทั้งสองอย่างรวมกัน
Anthony Cicchelli

โอ้น่าสนใจ ฉันไม่ชอบ Aitoc แม้ว่า ... คุณเผยแพร่โมดูลของคุณหรือไม่ เรายังไม่ได้เผยแพร่ ...
อเล็กซ์

0

วิธีที่ง่ายในการซ่อนแท็บคือเพียงแค่สร้างผู้ใช้ผู้ดูแลระบบใหม่และให้การเข้าถึงพื้นที่ที่เจ้าของร้านจะใช้เท่านั้น จะทำให้ทุกอย่างง่ายสำหรับเจ้าของร้านในขณะที่ยังคงทิ้งคุณหรือนักพัฒนาซอฟต์แวร์รายอื่น ๆ ที่สามารถเปลี่ยนแปลงได้


แน่นอนว่า - ใช้งานได้กับพื้นที่ทั่วไป (รายการเมนูและอื่น ๆ ) แต่สำหรับแท็บน้อยมากในหน้าจอแก้ไขผลิตภัณฑ์ (ความคิดเห็นสามารถปิดการใช้งานเช่นนั้น) คุณลักษณะเดียวไม่สามารถปิดการใช้งาน
อเล็กซ์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.