Virtuemart 2 добавить поле в карточку пользователя

В одном из моих интернет-магазинов на Virtuemart 2 достаточно много пользователей, которые периодически делают заказы. С ростом клиентов возникла необходимость добавлять в карточку некоторым клиентам небольшую информацию, чтобы при заказе учитывать особенности этого покупателя.

В интернете есть информация о том, как добавить поле в карточку товара или в настройки Virtuemart, но информацию о том, как добавить поле в карточку пользователя я не нашел.

Итак, задача была сформирована так: в админке в карточке клиента добавить текстовое поле, в которое администратор сможет заносить информацию. При заказе эта информация должна приходить в письме о заказе администратору.

Добавляем поле в базу данных в таблицу virtuemart_vmusers

Для этого заходим в phpMyAdmin и выполняем запрос

ALTER TABLE `j25_virtuemart_vmusers` ADD `admin_info` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NULL ;

вместо j25 напишите свой префикс таблиц БД.

Добавляем поле непосредственно в карточку пользователя

За внешний вид карточки пользователя отвечает файл \administrator\components\com_virtuemart\views\user\tmpl\edit_shopper.php. В нужном нам месте добавляем код:

<textarea cols="50" rows="4" name="admin_info"><?php echo  $this->userDetails->admin_info; ?></textarea>

Для того, чтобы информация сохранялась, необходимо в файле \administrator\components\com_virtuemart\tables\vmusers.php добавить строчку с переменной:

var $admin_info	= null;

Все, теперь информация, которую вы вводите в новое поле сохраняется в базе данных.

Добавляем информацию в письмо администратору

Теперь мне надо, чтобы эта информация добавлялась в письмо администратору, которое приходит мне, когда пользователь оформляет заказ. Для этого в файл \components\com_virtuemart\views\invoice\tmpl\invoice_items.php добавляем код:

if($this->doVendor){
 
  $user_id = $this->orderDetails['details']['BT']->virtuemart_user_id;
  $db2->setQuery("SELECT admin_info FROM #__virtuemart_vmusers  WHERE virtuemart_user_id = '".$user_id."'");
  $admin_info = $db2->loadResult();
 
  if(!empty($admin_info)){
    echo '<br /><br />Инфо для админов: '.$admin_info;
  }
 
}

Собственно, все, задача решена. Если есть вопросы — можно задавать в комментариях блога или присылать на почту aktual@aktual.com.ua — постараюсь ответить.

Категория: Virtuemart 2

5 comments on “Virtuemart 2 добавить поле в карточку пользователя

  1. красиво, сделал! Благодарю!!!

  2. Занимательная интересная статья

  3. Огромное вам спасибо! а еще посты на эту тему будут в будущем?

    • Будут)

  4. Очень понравилось, даже не ожидала.