Sembunyikan Atribut dan Bidang Lainnya di Backend Edit Produk

10

Untuk mempermudah pengeditan produk (dan mungkin juga kategori) bagi pemilik toko, kami ingin menyembunyikan beberapa tab dan bidang yang tidak perlu dari beberapa pengguna di admin backend.

Ini berarti: Menyembunyikan beberapa atribut, tetapi juga tab seperti "ulasan pelanggan", "cross-selling" dll.

Bagaimana ini bisa dilakukan?

Alex
sumber

Jawaban:

10

Diatur is_visibleke 0pada atribut dan itu tidak akan muncul di formulir admin (halaman produk dan juga halaman manajemen atribut).

Anda bisa melakukannya melalui alat SQL atau secara terprogram dalam skrip pengaturan:

$installer->updateAttribute('catalog_product', $attribute_code, 'is_visible', '0');
Ben Lessani - Sonassi
sumber
Apakah Anda tahu jika tab kosong akan hilang secara otomatis? Dan apakah ada cara untuk membuat atribut tersebut terlihat sementara untuk admin? Bagaimanapun - ini masih akan menjadi titik awal yang baik untuk sebuah modul yang membuatnya terlihat pada basis per pengguna.
Alex
1
Anda dapat memperpanjang ini - dan masukkan ACL Anda sendiri untuk menentukan siapa yang bisa / tidak bisa mengeditnya
Ben Lessani - Sonassi
Saya baru menyadari bahwa ada banyak hal lebih dari sekedar atribut :-) Mengedit judul pertanyaan saya untuk membuatnya lebih jelas.
Alex
Saya pikir tab menghilang jika kosong. Untuk menunjukkannya, cukup tambahkan dua pengamat untuk menunjukkannya sebelum permintaan dan sembunyikan setelahnya? Ide terbaik yang saya miliki saat ini. Dan tidak failproof ketika dua orang berada di paralel toko. Alternatif: pengamat dan ubah kueri koleksi. tapi saya pikir Anda akan jauh ...
Fabian Blechschmidt
Mereka sebenarnya tidak hilang - dan saya berbicara tentang tab yang bukan tentang atribut (cross-sell dll.)
Alex
8

Ini dimungkinkan dengan mengamati peristiwa core_block_abstract_prepare_layout_before(metode removeAttributes()) dan core_block_abstract_prepare_layout_after(metode removeTabs()).

komentar : Saya menempatkan ini ke dalam modul yang menambahkan entri ACL untuk setiap atribut / tab sehingga mereka dapat disembunyikan dari pengguna tertentu.

Di pengamat kita harus memeriksa, bahwa kita berada di blok Mage_Adminhtml_Block_Catalog_Product_Edit_Tabsdan dapat menghapus tab atau atribut.

/**
 * 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]);
    }
}
Alex
sumber
Apakah Anda pernah mendapatkan tempat dengan modul pengaturan ACL? Masalah yang saya alami adalah saya memiliki ratusan set atribut. Bagaimana ini berlaku karena sekarang akan ada ratusan Tab 'Grup' juga.
Anthony Cicchelli
ya itu berjalan dalam proyek kita
Alex
Apakah Anda punya GIT? Kami hanya mengerjakan proyek yang sama. Hanya melihat strategi yang berbeda. Jika tidak, saya akan memberi tahu Anda kapan saya selesai sebagaimana mestinya segera.
Anthony Cicchelli
Kami baru saja membangun ekstensi untuk memungkinkan ini. Itu juga menggunakan fungsionalitas penuh dari Modul Izin Aitoc juga. Jadi, Anda mendapatkan kombinasi keduanya.
Anthony Cicchelli
Oh Menarik. Saya tidak suka Aitoc ... apakah Anda menerbitkan modul Anda? Buku kami belum diterbitkan, ...
Alex
0

Cara yang relatif mudah untuk menyembunyikan tab adalah dengan hanya membuat pengguna Admin baru dan memberikan akses hanya ke area yang akan digunakan oleh Pemilik Toko. Akan membuat hal-hal sederhana bagi pemilik toko sambil tetap membuat Anda atau pengembang lain kemampuan untuk melakukan perubahan.

andyjv
sumber
Tentu - itu berfungsi untuk area umum (entri menu dan sebagainya), tetapi hanya untuk beberapa tab di layar edit produk (ulasan dapat dinonaktifkan seperti itu). Atribut tunggal tidak dapat dinonaktifkan.
Alex