Ukryj atrybuty i inne pola w zapleczu edycji produktu


10

Aby ułatwić edytowanie produktów (a może także kategorii) dla właściciela sklepu, chcielibyśmy ukryć niepotrzebne karty i pola przed niektórymi użytkownikami w backendie administratora.

Oznacza to: Ukrywanie niektórych atrybutów, ale także kart takich jak „recenzje klientów”, „sprzedaż krzyżowa” itp.

Jak można to zrobić?

Odpowiedzi:


10

Ustaw is_visiblesię 0na atrybut i nie pojawi się w formach administratora (strona produktu, a także na stronie zarządzania atrybut).

Możesz to zrobić za pomocą narzędzia SQL lub programowo w skrypcie instalacyjnym:

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

Czy wiesz, czy puste karty zniknęłyby automatycznie? Czy istnieje sposób, aby te atrybuty były tymczasowo widoczne dla administratorów? W każdym razie - nadal byłby to dobry punkt wyjścia dla modułu, dzięki któremu będą widoczne dla poszczególnych użytkowników.
— Alex

1
Można rozszerzyć ten - i umieścić we własnych ACL, aby ustalić, kto mógł / mogła nie do edycji
— Ben Lessani - Sonassi

Właśnie zdałem sobie sprawę, że jest o wiele więcej rzeczy niż tylko atrybuty :-) Zredagowałem tytuł mojego pytania, aby było bardziej jasne.
— Alex

Myślę, że zakładki znikają, jeśli są puste. Aby je pokazać, wystarczy dodać dwóch obserwatorów, aby pokazać ich przed żądaniem i ukryć po nich? Najlepszy pomysł, jaki mam w tej chwili. I nie jest odporny na uszkodzenia, gdy dwie osoby są w sklepie równolegle. Alternatywnie: obserwator i zmień zapytanie dotyczące kolekcji. ale myślę, że będziesz miał o wiele za dużo ...
— Fabian Blechschmidt

W rzeczywistości nie znikają - a mówię o kartach, które nie dotyczą atrybutów (sprzedaż krzyżowa itp.)
— Alex

8

Jest to możliwe dzięki obserwacji zdarzeń core_block_abstract_prepare_layout_before(metoda removeAttributes()) i core_block_abstract_prepare_layout_after(metoda removeTabs()).

uwaga : Umieszczam to w module, który dodaje wpisy ACL dla każdego atrybutu / karty, aby mogły być ukryte przed niektórymi użytkownikami.

W obserwatorach musimy sprawdzić, czy jesteśmy w bloku Mage_Adminhtml_Block_Catalog_Product_Edit_Tabsi możemy usunąć zakładki lub atrybuty.

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

Czy kiedykolwiek dostałeś się gdziekolwiek z modułem konfiguracji ACL? Problem w tym, że mam setki zestawów atrybutów. Jak by to miało zastosowanie, ponieważ teraz byłyby setki kart „Grupy”.
— Anthony Cicchelli,

tak, działa w naszym projekcie
— Alex

Czy masz GIT? Pracujemy tylko nad tym samym projektem. Po prostu widzę różne strategie. Jeśli nie, dam ci znać, kiedy skończę, tak jak powinno być wkrótce.
— Anthony Cicchelli,

Właśnie zbudowaliśmy rozszerzenie, aby to umożliwić. Wykorzystuje również pełną funkcjonalność modułu uprawnień Aitoc. Otrzymujesz więc świetne połączenie obu.
— Anthony Cicchelli,

Interesujące. Nie podoba mi się Aitoc ... czy publikujesz swój moduł? Nasz nie został jeszcze opublikowany, ...
— Alex

0

Stosunkowo łatwym sposobem na ukrycie kart jest po prostu utworzenie nowego użytkownika administracyjnego i zapewnienie dostępu tylko do obszarów, z których będzie korzystał właściciel sklepu. Ułatwi to właścicielowi sklepu, pozostawiając jednocześnie tobie lub innemu deweloperowi możliwość wprowadzania zmian.


Jasne - działa to w obszarach ogólnych (pozycje menu itd.), Ale tylko w przypadku bardzo niewielu kart na ekranie edycji produktu (recenzje można tak wyłączyć). Pojedynczych atrybutów nie można wyłączyć.
— Alex

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.