xandeadx.ru Блог музицирующего веб-девелопера

Drupal → Модуль Commerce Addressbook — адресная книга покупателя

Опубликовано в

Описание

Модуль Commerce Addressbook позволяет авторизованным пользователям заполнять billing information данными из адресной книги:

Форма оформления заказа

Работает на AJAX. Удобно для постоянных покупателей.

Адресная книга наполняется автоматически при совершении покупок. Есть возможность добавить адрес из личного кабинета (user/%user/addressbook) и сделать его дефолтным:

Адресная книга

Установка и использование

Установка стандартная — распаковать в sites/all/modules, включить.

После включения открываем настройки чекаута (admin/commerce/config/checkout), переходим в настройки Billing information (admin/commerce/config/checkout/form/pane/customer_profile_billing) и отмечаем пункт Enable the Address Book:

Настройки Billing information

Profit.

Видео.

Написанное актуально для Commerce Addressbook 7.x-2.0-rc2
Похожие записи

Комментарии RSS

Столкнулся с проблемой.
При удалении Commrece Address Field и создании своей формы с полями, Addressbook работает и поля заполняет, но в списке выбора адресов не отображаются названия.

Нашел в модуле, что за вывод списка с названиями адресов отвечают эти строки
foreach ($profiles as $id => $profile) {
$field_values = field_get_items('commerce_customer_profile', $profile, 'commerce_customer_address');
$options[$id] = $field_values[0]['thoroughfare'];
}

xandeadx, вопрос такой, как сделать так чтобы Addresbook брал названия для выпадающего списка адресов в чекауте из указанного "руками" поля?

Заранее благодарен.

При удалении Commrece Address Field и создании своей формы с полями, Addressbook работает и поля заполняет, но в списке выбора адресов не отображаются названия.

Можете попробовать реализовать хук
function hook_commerce_addressbook_labels_alter(&$labels, $profiles)

например так:

function MYMODULE_NAME_commerce_addressbook_labels_alter(&$labels, $profiles) {  
  foreach($profiles as $pid => $iProfile)
  {
    $p = entity_metadata_wrapper('commerce_customer_profile',$iProfile);
    $labels[$pid] = $p->FIELD_NAME->value()    
  }      
}

entity_metadata_wrapper не обязателен

pesec, а можете подсказать как его применить? а то не как не разберусь...
хотелось бы брать инфу из поля field_client_street

Функцию нужно поместить в собственный модуль, возможно будет работать в файле темы template.php.

// &$labels - ассоциативный  массив названий,которые появляются в списке выбора. 
// заполняется  id профиля => название. в нем будет храниться результат работы 
// функции 
 
//$profiles - массив профилей( например billing_profile)
function MYMODULE_NAME_commerce_addressbook_labels_alter(&$labels, $profiles) {  
  //Проходимся по всем уже  созданным профилям пользователя ($pid - id профиля)
  foreach($profiles as $pid => $iProfile)
  {
    //entity_metadata_wrapper просто оболочка для доступа к полям профиля ($iProfile)
    $p = entity_metadata_wrapper('commerce_customer_profile',$iProfile); 
    $labels[$pid] = $p->field_client_street->value();
 
    /*
       можно записать без entity_metadata_wrapper
        $labels[$pid] = $iProfile->field_client_street['und'][0]['value'];
    */    
  }      
}

Как добавить свои поля в адресную книгу?

admin/commerce/customer-profiles/types/billing/fields

Недавно ковырялся с этим модулем... Помимо проблемы выше, ещё целая тонна "кривокода". Очень плохие впечатления остались. API практически отсутствует. Подскажи, может есть альтернатива, или, на сегодня, для commerce это всё что есть, не говоря о custom модуле?

Модуль хороший, но он работает только на форме оформления заказа. Если создавать заказ администратору вручную через админ панель, то при заполнении профиля информации о доставке (или оплате) создаются дубли профилей покупателя. Может как то можно связать этот модуль с формой создания заказа в админ панели, что бы выводился список всех профилей и админ мог выбрать из списка необходимый?

Уважаемый, xandeadx. Борюсь с одной проблемой и не могу решить. При создании заказов администратором через админку, происходит дублирование Профиля покупателя. Подскажите как убрать дублирование или в какую сторону смотреть. Заранее спасибо)

Это фишка Commerce. Я обычно отказываюсь от customer profile и всю информацию о покупателе храню в полях заказа.

Спасибо за быстрый ответ)))

Есть возможность добавить адрес из личного кабинета (user/%user/addressbook)

что-то для авторизованных пользователей на этой странице 403 ошибка. в правах покапался ничего не нашел, как дать доступ?

права выставить
Create Billing information customer profiles
Edit own Billing information customer profiles
View own Billing information customer profiles

Оставить комментарий

Содержимое этого поля является приватным и не будет отображаться публично. Если у вас есть аккаунт в Gravatar, привязанный к этому e-mail адресу, то он будет использован для отображения аватара.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступные HTML теги: <a> <i> <b> <strong> <code> <ul> <ol> <li> <blockquote> <em> <s>
  • Строки и параграфы переносятся автоматически.
  • Подсветка кода осуществляется с помощью тегов: <code>, <css>, <html>, <ini>, <javascript>, <sql>, <php>. Поддерживаемые стили выделения кода: <foo>, [foo].

Подробнее о форматировании