четверг, 4 апреля 2013 г.

Группы пользователей в VirtueMart или Администрирование VirtueMart с фронтенда.

Недавно, у одного моего давнего клиента, в связи с расширением штата, возникла необходимость добавить возможность работы с товарами в VirtueMart из пользовательской части сайта. Предполагалось, что менеджер не должен иметь доступа к «админке», но должен иметь возможность работы с товарами магазина, быть достаточно ограниченным в правах и не видеть «лишнего». Я давненько уже не работаю с этим компонентом, но по старой памяти, время от времени помогаю своим клиентам.

Задача мне показалась достаточно легкой. Вывести во фронтенде ссылку на вход в рабочую область, поставить галочку в настройках компонента напротив пункта «Разрешить администрирование через магазин (frontend) пользователям, не допущенным в панель администрирования» создать соответствующую группу пользователей (поскольку роль storeadmina избыточна) и раздать необходимые права. Но если бы все было так просто, то это был бы не VirtueMart...

Данная статья справедлива для первой ветки компонента для электронной коммерции VirtueMart.

Первым делом создаем и публикуем самописный модуль (чистый html ничего сложного) со ссылкой на административный вход типа:
ваш_сайт/index2.php?page=store.index&pshop_mode=admin&option=com_virtuemart&Itemid=(ID компонента)
и выставляем ему соответствующий уровень доступа.
Затем, заходим в административную часть сайта и разрешаем администрирование из фронтенда путем активации вышеуказанной опции.

Затем в настройках VirtueMart переходим в раздел Группы пользователей и создаем нужную нам группу. Пусть это будет shop_manager. Уровень группы пользователя можно выбрать любой (это не имеет особого значения) скажем... 450

Переходим в раздел Список модулей. Здесь мы видим созданную только что группу. Что ж... остается только раздать права. Не долго думая, выбираем группу product нажимаем на Список функций. Отмечаем галочками нужные (описывать каждый конкретный пункт нет смысла их названия достаточно индикативны.) Кликаем на ссылку Сохранить разрешения и пытаемся залогинится с фронтенда... Не тут то было.

Решение находится быстро. Возвращаемся к с писку модулей и отмечаем галочку store. Причем, зайдя в список функций данного модуля, Вы можете вообще убрать все галочки.
Снова пытаемся войти. На этот раз удачно, однако при попытке работы с товарами нас ожидает очередная неудача. Кнопок отвечающих за необходимый нам функционал просто нет. И здесь уже нам не обойтись без маленького патча.

Открываем файл ваш_сайт/components/com_virtuemart/virtuemart.php и ищем следующий фрагмент кода:
if ( vmIsAdminMode()
      && $perm->check("admin,storeadmin")
      && ((!stristr($my->usertype, "admin") ^
        PSHOP_ALLOW_FRONTENDADMIN_FOR_NOBACKENDERS == '' )
         || stristr($my->usertype, "admin")
         )
      && !stristr($page, "shop.")
   ) {
Добавляем в него созданную нами группу.
Должно получиться что-то вроде этого:
if ( vmIsAdminMode()
      && $perm->check("admin,storeadmin,shop_manager")
      && ((!stristr($my->usertype, "admin") ^
        PSHOP_ALLOW_FRONTENDADMIN_FOR_NOBACKENDERS == '' )
         || stristr($my->usertype, "admin")
         || stristr($my->usertype, "shop_manager")
         )
      && !stristr($page, "shop.")
) {
После внесения соответствующих правок. У пользователей принадлежащих к нашей группе наконец-то появился доступ к административной панели, которая и обеспечивает необходимый функционал для решения поставленной задачи.

1 комментарий:

  1. Подскажите модуль, плагин или хак, чтобы на страничке товара во фронтенде VirtuMart (joomla 3) отображалиcь покупатели, которые ранее совершали покупку данного товара. Покупатели - это пользователи, зарегистрировавшиеся через joomla, jomsocial или virtuemart. Анонимов желательно выводить лишь количеством

    ОтветитьУдалить