Nascondi attributi e altri campi nel back-end di modifica del prodotto


10

Per semplificare la modifica dei prodotti (e forse anche delle categorie) per il proprietario del negozio, vorremmo nascondere alcune schede e campi non necessari ad alcuni utenti nel back-end dell'amministratore.

Ciò significa: nascondere alcuni attributi, ma anche schede come "recensioni dei clienti", "cross-selling" ecc.

Come si può fare?

Risposte:


10

Impostato is_visiblesu 0sull'attributo e non verrà visualizzato nei moduli di amministrazione (pagina del prodotto e anche la pagina di gestione degli attributi).

Puoi farlo tramite uno strumento SQL o programmaticamente in uno script di installazione:

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

Sai se le schede vuote scomparirebbero automaticamente? E c'è un modo per rendere questi attributi temporaneamente visibili agli amministratori? Comunque - questo sarebbe comunque un buon punto di partenza per un modulo che li rende visibili per ogni utente.
Alex,

1
Si potrebbe estendere questo - e mettere il proprio ACL per determinare chi potrebbe / non poteva modificarlo
Ben Lessani - Sonassi

Mi sono appena reso conto che ci sono molte più cose che solo attributi :-) Ho modificato il titolo della mia domanda per renderlo più chiaro.
Alex,

Penso che le schede scompaiano se sono vuote. Per mostrarli, basta aggiungere due osservatori per mostrarli prima della richiesta e nasconderli dopo? L'idea migliore che ho al momento. E non a prova di errore quando due persone sono nello stesso negozio. Alternativa: osservatore e modifica della query di raccolta. ma poi avrai troppe cose credo ...
Fabian Blechschmidt,

In realtà non scompaiono - e sto parlando di schede che non riguardano gli attributi (cross-sell ecc.)
Alex,

8

Questo è possibile osservando gli eventi core_block_abstract_prepare_layout_before(metodo removeAttributes()) e core_block_abstract_prepare_layout_after(metodo removeTabs()).

osservazione : sto inserendo questo in un modulo che aggiunge voci ACL per ogni attributo / scheda in modo che possano essere nascosti da determinati utenti.

Negli osservatori dobbiamo verificare che siamo nel blocco Mage_Adminhtml_Block_Catalog_Product_Edit_Tabse che possiamo rimuovere le schede o gli attributi.

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

Sei mai arrivato da nessuna parte con il modulo di configurazione ACL? Il problema che sto avendo è che ho centinaia di set di attributi. Come si applicherebbe questo dato che ora ci sarebbero anche centinaia di schede "Gruppi".
Anthony Cicchelli,

sì, è in esecuzione in un nostro progetto
Alex

Hai un IDIOTA? Stiamo solo lavorando allo stesso progetto. Vedendo solo strategie diverse. In caso contrario, ti farò sapere quando avrò finito come dovrebbe essere presto.
Anthony Cicchelli,

Abbiamo appena creato un'estensione per consentirlo. Utilizza anche la piena funzionalità del modulo di autorizzazione Aitoc. Quindi ottieni un'ottima combinazione di entrambi.
Anthony Cicchelli,

Oh interessante Aitoc non mi piace però ... pubblichi il tuo modulo? Il nostro non è ancora stato pubblicato, ...
Alex

0

Un modo relativamente semplice per nascondere le schede è semplicemente creare un nuovo utente amministratore e dare accesso solo alle aree che il proprietario del negozio utilizzerà. Manterrà le cose semplici per il proprietario del negozio lasciando comunque a te o qualche altro sviluppatore la possibilità di apportare modifiche.


Sicuro - che funziona per aree generali (voci di menu e così via), ma solo per pochissime schede nella schermata di modifica del prodotto (le recensioni possono essere disabilitate in questo modo). I singoli attributi non possono essere disabilitati.
Alex,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.