Attribute und andere Felder im Backend für die Produktbearbeitung ausblenden

10

Um dem Shopbesitzer die Bearbeitung von Produkten (und möglicherweise auch Kategorien) zu erleichtern, möchten wir einige unnötige Registerkarten und Felder vor einigen Benutzern im Admin-Backend ausblenden.

Dies bedeutet: Einige Attribute ausblenden, aber auch Registerkarten wie "Kundenbewertungen", "Cross-Selling" usw.

Wie kann das gemacht werden?

Alex
quelle

Antworten:

10

Stellen Sie is_visibleauf 0auf das Attribut und es wird nicht in Admin - Formulare (Produktseite und auch das Attribut Management Seite) nach oben.

Sie können dies über ein SQL-Tool oder programmgesteuert in einem Setup-Skript tun:

$installer->updateAttribute('catalog_product', $attribute_code, 'is_visible', '0');
Ben Lessani - Sonassi
quelle
Wissen Sie, ob leere Registerkarten automatisch verschwinden würden? Und gibt es eine Möglichkeit, diese Attribute für Administratoren vorübergehend sichtbar zu machen? Wie auch immer - dies wäre immer noch ein guter Ausgangspunkt für ein Modul, um sie auf Benutzerbasis sichtbar zu machen.
Alex
1
Sie könnten erweitern diese - und in Ihrem eigenen ACLs setzen, wer konnte zu bestimmen / konnte nicht bearbeiten es
Ben Lessani - Sonassi
Ich habe gerade festgestellt, dass es viel mehr als nur Attribute gibt :-) Den Titel meiner Frage bearbeitet, um das klarer zu machen.
Alex
Ich denke, Tabs verschwinden, wenn sie leer sind. Um sie anzuzeigen, fügen Sie einfach zwei Beobachter hinzu, um sie vor der Anfrage anzuzeigen und sie danach auszublenden. Die beste Idee, die ich im Moment habe. Und nicht ausfallsicher, wenn zwei Personen parallel im Laden sind. Alternative: Beobachten und ändern Sie die Sammlungsabfrage. aber dann wirst du viel zu viel haben, denke ich ...
Fabian Blechschmidt
Sie verschwinden tatsächlich nicht - und ich spreche von Registerkarten, bei denen es nicht um Attribute (Cross-Selling usw.) geht
Alex
8

Dies ist bei Beobachtung der Ereignisse core_block_abstract_prepare_layout_before(Methode removeAttributes()) und core_block_abstract_prepare_layout_after(Methode removeTabs()) möglich.

Anmerkung : Ich füge dies in ein Modul ein, das ACL-Einträge für jedes Attribut / jede Registerkarte hinzufügt, damit sie für bestimmte Benutzer ausgeblendet werden können.

Bei den Beobachtern müssen wir überprüfen, ob wir uns im Block befinden Mage_Adminhtml_Block_Catalog_Product_Edit_Tabsund Tabs oder Attribute entfernen können.

/**
 * 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
quelle
Haben Sie mit dem ACL-Setup-Modul jemals etwas erreicht? Das Problem, das ich habe, ist, dass ich Hunderte von Attributsätzen habe. Wie würde dies zutreffen, da es jetzt auch Hunderte von Registerkarten für Gruppen geben würde?
Anthony Cicchelli
Ja, es läuft in einem Projekt von uns
Alex
Hast du einen GIT? Wir arbeiten gerade am selben Projekt. Ich sehe nur verschiedene Strategien. Wenn nicht, werde ich Sie wissen lassen, wenn ich fertig bin, wie es bald sein sollte.
Anthony Cicchelli
Wir haben gerade eine Erweiterung gebaut, um dies zu ermöglichen. Es nutzt auch die volle Funktionalität des Aitoc-Berechtigungsmoduls. So erhalten Sie eine großartige Kombination von beiden.
Anthony Cicchelli
Oh, interessant. Ich mag Aitoc allerdings nicht ... veröffentlichen Sie Ihr Modul? Unsere ist noch nicht veröffentlicht, ...
Alex
0

Eine relativ einfache Möglichkeit, Registerkarten auszublenden, besteht darin, einfach einen neuen Administrator zu erstellen und nur auf die Bereiche zuzugreifen, die der Shop-Inhaber verwenden wird. Hält die Dinge für den Ladenbesitzer einfach, während Sie oder ein anderer Entwickler die Möglichkeit haben, Änderungen vorzunehmen.

andyjv
quelle
Sicher - das funktioniert für allgemeine Bereiche (Menüeinträge usw.), aber nur für sehr wenige Registerkarten im Produktbearbeitungsbildschirm (Bewertungen können so deaktiviert werden). Einzelne Attribute können nicht deaktiviert werden.
Alex