سؤال


في متجري (mage-EE v12) لدي فئة أريد قصرها على شريحة معينة من العملاء.هل يعرف أحد طريقة يمكنني القيام بها؟
على سبيل المثال، إذا قمت بإعداد شريحة، أريد أن يتمكن العملاء في هذه الشريحة من الوصول إلى الكتالوج الكامل، ولكن إذا لم يندرج العملاء ضمن هذه الشريحة، فلن يكون لديهم إمكانية رؤية الفئة المقيدة؟
أي أفكار ؟
هتافات

هل كانت مفيدة؟

المحلول

لمتطلباتكم.

  • تحتاج أولاً إلى إنشاء مجموعة عملاء جديدة من المشرف.
  • تعيين شريحة عملاء محددة لهذه المجموعة.
  • ثم استخدم الحدث/المراقب catalog_controller_category_init_beforeمنع العميل من الذهاب إلى هذه الفئة باستثناء تلك الفئة المحددة

التكوين.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>

المراقب.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;
    }
}

أو استخدم الامتداد مثل

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى magento.stackexchange
scroll top