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ć?

Alex
źródło

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');
Ben Lessani - Sonassi
źródło
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]);
    }
}
Alex
źródło
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.

andyjv
źródło
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