Pergunta


Na minha loja (mage-EE v12) tenho uma categoria que desejo restringir a um segmento específico de clientes.Alguém sabe de uma maneira que eu possa fazer isso?
Ex.: se eu configurar um segmento, quero que os clientes desse segmento tenham acesso ao catálogo completo, mas se os clientes não se enquadrarem nesse segmento eles não terão visibilidade da categoria restrita?
Alguma ideia ?
Saúde

Foi útil?

Solução

Para sua necessidade.

  • Primeiro você precisa criar um novo grupo de clientes em admin .
  • Atribua um segmento de cliente específico a este grupo.
  • Então usando evento/observador catalog_controller_category_init_beforeimpedir que o cliente vá nesta categoria, exceto que essa categoria específica

config.xml:

<config>
  <global>
    <config>
      <events>
        <catalog_controller_category_init_after>
          <observers>
            <redirect_to_account>
              <class>[ModuleNameSpace]_[ModuleName]_Model_Observer/class>
              <method>redirectNotLogged</method>
            </redirect_to_account>
          </observers>
        </catalog_controller_category_init_after>
      </events>
    </config>
  </global>
</config>

Observador.php

<?php 
class [ModuleNameSpace]_[ModuleName]_Model_Observer{

    public function redirectNotLogged(Varien_Event_Observer $observer)
    {
        $action = strtolower(Mage::app()->getRequest()->getActionName());
        $controller = strtolower(Mage::app()->getRequest()->getControllerName());
        $controller_action= $observer->getEvent()->getControllerAction();
        $category = $observer->getEvent()->getCategory();
        /* if category is not Match with your category then continue default behave */
        if($category->getId()!='YOUR_CATEGORY_ID'):
            return true;
        endif;

        /* Customer group id match and then previllage to access that category page.*/
        if (Mage::getSingleton('customer/session')->isLoggedIn() && Mage::getSingleton('customer/session')->getCustomerGroupId()=='CUSTOMER_GROUP_ID') {
           return  true;
        }

        Mage::app()->getResponse()->setRedirect($_SERVER['HTTP_REFERER']);
        Mage::app()->getResponse()->sendResponse();
        exit;
    }
}

Ou use uma extensão como

Licenciado em: CC-BY-SA com atribuição
Não afiliado a magento.stackexchange
scroll top