К содержанию

Дилерский раздел на MODX

Добрый день!

Ситуация следующая…

Необходим закрытый раздел для дилеров.

На сайте есть розничные цены для всех посетителей, если человек логиниться в личном кабинете для дилеров, то розничные цены пропадают ( не отображаются) и на их месте появляются цены оптовые и кнопка корзины.

При этом пароль для входа должен создавать админ сайта через админку, т.е. регистрации на сайте нет, только страница для входа.

Натолкните на мысль куда смотреть, может готовые решения есть?

Спасибо за помощь!
Алексей
Алексей
02 февраля 2018, 09:46
modx.pro
1 809
Реклама

Комментарии: 7

Андрей
Андрей Старожил
02 февраля 2018, 13:04
Для входа можно использовать Login или Office.

В выводе товаров сделать проверку группы пользователя, если состоит в той что надо (оптовики), то отдавать нужные цены и кнопку + плагин чтобы нужная цена верно добавлялась в корзину.
    Алексей
    Алексей Старожил
    02 февраля 2018, 13:08
    Спасибо за помощь!

    Нужные поля как отдавать?

    Я думал minishop использовать
      Алексей Шумаев
      Алексей Шумаев Проверенный
      02 февраля 2018, 13:58
      Ваш вопрос слишком объёмный, т.к. ответ на него будет порождать несколько новых вопросов…
      Можно делать примерно так:

      I. Сначала читаем про расширение товаров, добавляем новое поле для оптовой цены, например optPrice.
      II.
      1. Читаем заметку
      2. Создаём плагин, в нём проверяем пользователя. Примерно так:
      case 'pdoToolsOnFenomInit':
          $fenom->addAccessorSmart("site", "data", Fenom::ACCESSOR_PROPERTY);
                  
          # определить принадлежность к группе оптовых
          $optGroupe = 2; # ваша группа оптовых
          $ws = 0; # пока это обычный юзер
          $user = $modx->user;
          $usergroups = $user->getUserGroups();
          if ($user->get('id') && in_array($optGroupe, $usergroups)) {
              $ws = 1; # а теперь - оптовик
          }
                  
          $fenom->data = [
             'ws' => $ws
          ];       
      break;
      Теперь ВЕЗДЕ у вас есть переменная $.site.ws.
      Fenom:
      {if $.site.ws == 1}
      	{$optPrice}
      {else}
      	{$price}
      {/if}
      III. В том же плагине на событие msOnBeforeAddToCart добавляем изменение цены для оптовиков, если оптовик.

      Вроде всё. Но нюансов может быть множество )
        Алексей
        Алексей Старожил
        02 февраля 2018, 14:01
        Спасибо большое!!!
          Андрей
          Андрей Старожил
          02 февраля 2018, 14:35
          Можно и без плагина прямо в шаблоне проверять:

          {if $_modx->user.id > 0 && $_modx->isMember('optGroup')}
          	{$optPrice}
          {else}
          	{$price}
          {/if}

          Пример плагина для минишопа:
          if ($modx->event->name == 'msOnBeforeAddToCart' && $modx->user->isAuthenticated() && $modx->user->isMember('optGroup')) {
          
          	$optprice = $product->get('optprice');
          
          	if (!empty($optprice)) {
          		$product->set('price', $optprice);
          	}
          }

          p.s. Поле optprice добавлял через msFieldsManager, так быстрей =)
            Алексей Шумаев
            Алексей Шумаев Проверенный
            02 февраля 2018, 16:45
            Можно и без плагина прямо в шаблоне проверять
            Это так придётся ВЕЗДЕ проверять: в шаблоне карточки товара, во всех чанках, где есть товар…
            Не рекомендую )
              Андрей
              Андрей Старожил
              02 февраля 2018, 17:03
              Конечно если там 100500 шаблонов и чанков, то да, с плагином проще) А если в 1-2 местах, то пофиг как проверять.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    7