Ẩn các thuộc tính và các trường khác trong phần cuối Chỉnh sửa sản phẩm


10

Để giúp chỉnh sửa sản phẩm (và có thể cả danh mục) cho chủ cửa hàng dễ dàng hơn, chúng tôi muốn ẩn một số tab và trường không cần thiết khỏi một số người dùng trong phần phụ trợ quản trị viên.

Điều này có nghĩa là: Ẩn một số thuộc tính, nhưng cũng có các tab như "đánh giá của khách hàng", "bán chéo", v.v.

Điều này có thể giải quyết như thế nào?

Câu trả lời:


10

Đặt is_visiblethành 0thuộc tính và nó sẽ không hiển thị trong biểu mẫu quản trị viên (trang sản phẩm và trang quản lý thuộc tính).

Bạn có thể thực hiện thông qua công cụ SQL hoặc lập trình trong tập lệnh thiết lập:

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

Bạn có biết nếu các tab trống sẽ tự động biến mất? Và có cách nào để làm cho các thuộc tính đó tạm thời hiển thị cho quản trị viên không? Dù sao đi nữa - đây vẫn sẽ là điểm khởi đầu tốt cho một mô-đun làm cho chúng hiển thị trên cơ sở người dùng.
Alex

1
Bạn có thể mở rộng điều này - và đặt ACL của riêng bạn để xác định ai có thể / không thể chỉnh sửa nó
Ben Lessani - Sonassi

Tôi chỉ nhận ra rằng có rất nhiều điều hơn là chỉ các thuộc tính :-) Đã chỉnh sửa tiêu đề câu hỏi của tôi để làm cho điều đó rõ ràng hơn.
Alex

Tôi nghĩ rằng các tab biến mất nếu chúng trống. Để hiển thị chúng, chỉ cần thêm hai người quan sát để hiển thị chúng trước yêu cầu và ẩn chúng sau? Ý tưởng tốt nhất tôi có tại thời điểm này. Và không thất bại khi hai người ở trong cửa hàng song song. Thay thế: người quan sát và thay đổi truy vấn bộ sưu tập. nhưng sau đó tôi sẽ nghĩ rất nhiều ...
Fabian Blechschmidt

Chúng thực sự không biến mất - và tôi đang nói về các tab không liên quan đến các thuộc tính (bán chéo, v.v.)
Alex

8

Điều này có thể với việc quan sát các sự kiện core_block_abstract_prepare_layout_before(phương thức removeAttributes()) và core_block_abstract_prepare_layout_after(phương thức removeTabs()).

nhận xét : Tôi đang đưa phần này vào một mô-đun có thêm các mục ACL cho từng thuộc tính / tab để chúng có thể bị ẩn khỏi một số người dùng nhất định.

Trong các quan sát viên, chúng tôi phải kiểm tra xem chúng tôi có ở trong khối không Mage_Adminhtml_Block_Catalog_Product_Edit_Tabsvà có thể xóa các tab hoặc thuộc tính.

/**
 * 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]);
    }
}

Bạn đã bao giờ nhận được bất cứ nơi nào với mô-đun thiết lập ACL? Vấn đề tôi gặp phải là tôi có hàng trăm bộ thuộc tính. Làm thế nào điều này sẽ áp dụng như bây giờ cũng sẽ có hàng trăm Tab 'Nhóm'.
Anthony Cicchelli

vâng, nó đang chạy trong một dự án của chúng tôi
Alex

Bạn có GIT không? Chúng tôi chỉ đang làm việc trên cùng một dự án. Chỉ cần nhìn thấy các chiến lược khác nhau. Nếu không, tôi sẽ cho bạn biết khi nào tôi sẽ hoàn thành.
Anthony Cicchelli 11/03/2016

Chúng tôi chỉ xây dựng một phần mở rộng để cho phép điều này. Nó cũng sử dụng đầy đủ chức năng của Mô-đun Cấp phép Aitoc. Vì vậy, bạn có được một sự kết hợp tuyệt vời của cả hai.
Anthony Cicchelli

Oh! thật thú vị. Tôi không thích Aitoc mặc dù ... bạn có xuất bản mô-đun của mình không? Của chúng tôi chưa được công bố, ...
Alex

0

Một cách tương đối dễ dàng để ẩn các tab là chỉ cần tạo người dùng Quản trị viên mới và chỉ cấp quyền truy cập vào các khu vực mà Chủ cửa hàng sẽ sử dụng. Sẽ giữ mọi thứ đơn giản cho chủ cửa hàng trong khi vẫn để lại cho bạn hoặc một số nhà phát triển khác khả năng thực hiện thay đổi.


Chắc chắn - hoạt động cho các khu vực chung (mục menu và vv), nhưng chỉ cho rất ít tab trong màn hình chỉnh sửa sản phẩm (đánh giá có thể bị vô hiệu hóa như vậy). Các thuộc tính đơn lẻ không thể bị vô hiệu hóa.
Alex

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.