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

Добрый день!

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

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

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

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

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

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

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

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

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

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

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

      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
        0
        Спасибо большое!!!
          Андрей
          02 февраля 2018, 14:35
          1
          0
          Можно и без плагина прямо в шаблоне проверять:

          {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
            0
            Можно и без плагина прямо в шаблоне проверять
            Это так придётся ВЕЗДЕ проверять: в шаблоне карточки товара, во всех чанках, где есть товар…
            Не рекомендую )
              Андрей
              02 февраля 2018, 17:03
              0
              Конечно если там 100500 шаблонов и чанков, то да, с плагином проще) А если в 1-2 местах, то пофиг как проверять.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    7