Ocultar atributos e outros campos no back-end de edição do produto


10

Para facilitar a edição de produtos (e talvez também categorias) para o proprietário da loja, gostaríamos de ocultar algumas guias e campos desnecessários de alguns usuários no back-end do administrador.

Isso significa: ocultar alguns atributos, mas também guias como "análises de clientes", "vendas cruzadas" etc.

Como isso pode ser feito?

Respostas:


10

Defina is_visiblecomo 0no atributo e ele não será exibido nos formulários de administração (página do produto e também na página de gerenciamento de atributos).

Você pode fazer isso por meio de uma ferramenta SQL ou programaticamente em um script de instalação:

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

Você sabe se guias vazias desapareceriam automaticamente? E existe uma maneira de tornar esses atributos temporariamente visíveis para os administradores? De qualquer forma - esse ainda seria um bom ponto de partida para um módulo que os torna visíveis por usuário.
— 1028 Alex

1
Você poderia estender esta - e colocar em suas próprias ACLs para determinar quem poderia / não poderia editá-lo
— Ben Lessani - Sonassi

Acabei de perceber que há muito mais coisas do que apenas atributos :-) Editou o título da minha pergunta para deixar isso mais claro.
— Alex #

Acho que as guias desaparecem se estiverem vazias. Para mostrá-los, basta adicionar dois observadores para mostrá-los antes da solicitação e ocultá-los depois? A melhor ideia que tenho no momento. E não é à prova de falhas quando duas pessoas estão na loja paralela. Alternativa: observador e altere a consulta de coleção. mas então você terá muito, eu acho ... #
— Fabian Blechschmidt 10/10

Eles realmente não desaparecem - e eu estou falando sobre guias que não são sobre os atributos (cross-sell etc.)
— Alex

8

Isso é possível com a observação dos eventos core_block_abstract_prepare_layout_before(método removeAttributes()) e core_block_abstract_prepare_layout_after(método removeTabs()).

observação : estou colocando isso em um módulo que adiciona entradas ACL para cada atributo / guia, para que possam ser ocultados de determinados usuários.

Nos observadores, precisamos verificar se estamos no bloco Mage_Adminhtml_Block_Catalog_Product_Edit_Tabse podemos remover guias ou atributos.

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

Você chegou a algum lugar com o módulo de configuração da ACL? O problema que estou tendo é que tenho centenas de conjuntos de atributos. Como isso se aplicaria agora, também haveria centenas de guias 'Grupos'.
— Anthony Cicchelli

sim ele está sendo executado em um projeto de nós
— Alex

Você tem um GIT? Estamos apenas trabalhando no mesmo projeto. Apenas vendo estratégias diferentes. Caso contrário, avisarei quando terminar, como deve ser em breve.
— Anthony Cicchelli 11/03/16

Acabamos de criar uma extensão para permitir isso. Ele também usa toda a funcionalidade do Aitoc Permission Module. Então você obtém uma ótima combinação de ambos.
— Anthony Cicchelli

Oh interessante. Mas não gosto do Aitoc ... você publica seu módulo? Ours ainda não foi publicado, ...
— Alex

0

Uma maneira relativamente fácil de ocultar guias é criar apenas um novo usuário Admin e conceder acesso apenas às áreas que o Dono da loja usará. Manterá as coisas simples para o dono da loja e ainda assim você ou outro desenvolvedor poderá fazer alterações.


Claro - isso funciona para áreas gerais (entradas de menu e assim por diante), mas apenas para muito poucas guias na tela de edição do produto (as revisões podem ser desativadas dessa maneira). Atributos únicos não podem ser desativados.
— 1155 Alex

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.