31 de maio de 2013

[UPDATED]Esta solução só é indicada para quem usa o TBT Enhancedgrid, se você deseja esta funcionalidade recomendo utilizar o módulo Flagbit Change Attribute Set disponível aqui:

http://www.magentocommerce.com/magento-connect/flagbit-change-attribute-set.html

Apesar de não constar compatibilidade com o Magento 1.7.x, funciona!

Este é o meu primeiro post sobre magento, acredito que deverá ser útil, principalmente em pt_BR.

O magento não permite nativamente que esta operação seja realizado obrigando ao administrador exportar e importar os produtos.
É um pouco chato isso pois perde-se muito tempo, mas com essa simples solução o processo se torna bem simples e possível diretamente através da listagem de produtos.
Uma nova ação é adicionada à lista, permitindo assim escolher o grupo de atributos para os produtos selecionados.

 Mão na massa:

Copie o arquivo em app/code/core/Mage/Adminhtml/Block/Catalog/Product/Grid.php para app/code/local/Mage/Adminhtml/Block/Catalog/Product/Grid.php

Se os diretórios/estrutura não existirem, crie!

Edite o arquivo Grid.php e (na versão 1.7.0.2) adicione na função  _prepareMassaction(), linha 286:

        $sets = Mage::getResourceModel('eav/entity_attribute_set_collection')
                ->setEntityTypeFilter(Mage::getModel('catalog/product')
                ->getResource()->getTypeId())->load()->toOptionHash();

        array_unshift($statuses, array('label'=>'', 'value'=>''));

        $this->getMassactionBlock()->addItem('attribute_set', array(
            'label'=> 'Alterar Grupo de Atributos',
            'url' => $this->getUrl('*/*/massAttributeSet', array('_current'=>true)),
            'additional' => array(
                'visibility' => array(
                    'name' => 'attribute_set',
                    'type' => 'select',
                    'class' => 'required-entry',
                    'label' => Mage::helper('catalog')->__('Attribute Set'),
                    'values' => $sets
                )
            )
            ));

Copie o arquivo em app/code/core/Mage/Adminhtml/controllers/Catalog/ProductController.php para app/code/local/Mage/Adminhtml/controllers/Catalog/ProductController.php

Se os diretórios/estrutura não existirem, crie!

Edite o arquivo ProductController.php e (na versão 1.7.0.2) adicione ao final da classe a função massAttributeSetAction, na linha 1103:

public function massAttributeSetAction(){
        $productIds = $this->getRequest()->getParam('product');
        $storeId = (int)$this->getRequest()->getParam('store', 0);
        if(!is_array($productIds)) {
            $this->_getSession()->addError($this->__('Please select product(s)'));
        } else {
            try {
                foreach ($productIds as $productId) {
                $product = Mage::getSingleton('catalog/product')
                ->unsetData()
                ->setStoreId($storeId)
                ->load($productId)
                ->setAttributeSetId($this->getRequest()->getParam('attribute_set'))
                ->setIsMassupdate(true)
                ->save();
                }
                Mage::dispatchEvent('catalog_product_massupdate_after', array('products'=>$productIds));
                $this->_getSession()->addSuccess(
                $this->__('Total of %d record(s) were successfully updated', count($productIds)));
            } catch (Exception $e) {
                $this->_getSession()->addError($e->getMessage());
            }
        }
//        $this->_redirect('*/*/index', array('store'=>(int)$this->getRequest()->getParam('store', 0)));
        $this->_redirect('*/*/index');
}

Se você utilizar a extensão/módulo TBT Enhancedgrid, ela subscreve a customização em /local e estas alterações devem ser feitas nos mesmo arquivos mas só que em /app/community/TBT/Enhancedgrid/Block/Catalog/Product/Grid.php na linha 543 e em /app/controllers/Catalog/ProductController.php linha 153.

 

UPDATE:
Dependendo da configuração do PHP do seu servidor, específicamente para:

max_input_vars
e
Maximum execution time

A quantidade de produtos que poderão ser alterados ao mesmo tempo pode variar.

14 de julho de 2010

O Cuber Flash é um componente gratuito que funciona com efeitos bem interessantes em imagens no estilo banner animado, o site do fabricante é http://www.progressivered.com/cu3er.

São vários efeitos disponíveis e seu uso é bem simples, consiste em um arquivo .html, um arquivo .swf (flash), um arquivo .xml (configurações e endereços de imagens) e alguns scripts que você nem precisa saber para que serve.

Um amigo me pediu uma alteração no componente padrão que consistia basicamente em apresentar as imagens de forma aleatória, fui além e adicionei efeitos aleatórios de transição entre as fotos e para isso criei um script PHP que pode consumir qualquer pasta com imagens.

Abaixo seguem as principais mudanças.

No arquivo .html que você deseja utilizar o componente altere a linha do comando FLASHVARS.XML de forma que fique assim:
flashvars.xml = “config.php”; <!– CUSTOMIZAÇÃO: aqui alterei de config.xml para config.php –>

Bom, você deve estar se perguntando, e agora?

Baixe o pacote completo com todos arquivos para testes baseado na distribuição original clicando aqui.

Descompacte e edite o arquivo config.php. Na linha abaixo indique o caminho relativo ou a pasta onde estão as imagens que você deseja apresentar.

$dir = “./images”;

Confira este exemplo real de uso deste pacote customizado, acesse: http://www.construimos.com.br, aproveite e conheça o site ideal da sua obra!

Boa diversão!

Escrito em Flash, PHP, XML | 4 Comentários »