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.