[РЕШЕНО] Basic Cart: Заполнение полей ноды Заказ

Главные вкладки

Аватар пользователя Shipovnix Shipovnix 26 августа 2016 в 7:31

Здравствуйте. Использую Basic Cart.
Из ноды типа Заказ убрал ненужные поля, в итоге остались только Название, E-mail, Телефон. При чекауте заказа необходимо эти поля создаваемого материала Заказ заполнять вручную. Можно ли как-то при загрузке ноды программно предварительно заполнить эти поля из глобальной переменной ($user->phone, $user->email и т.п.)?
Заранее спасибо.

Комментарии

Аватар пользователя Shipovnix Shipovnix 26 августа 2016 в 11:09

Спасибо.
Разобрался. Вписал в basic_cart.module в фукцию function basic_cart_form_alter(&$form, &$form_state, $form_id) конструкцию:

<?php
if ($form_id == 'order_node_form') {
    global 
$user;
    
$form['title']['#default_value'] = 'Заказ от пользователя: ' $user->name;
    
$form['field_email']['und'][0]['value']['#default_value'] = $user->mail;
  }
?>

Что надо было, получилось.

Аватар пользователя bumble bumble 26 августа 2016 в 11:43
2

Правка ядра/контрибных модулей - крайне не приветствуется в сообществе!
Для записи фраз на отличном от английского языка - используйте функцию t() и систему переводов.
Добавьте условие с проверкой существования данных для случаев, когда пользователь анонимен, или поле не заполнено.

Аватар пользователя Shipovnix Shipovnix 26 августа 2016 в 12:01

А как можно решить данный вопрос, не правя контрибный модуль? Я новичок.
С системой переводов справился. Проверка существования данных будет добавлена, но, по сути, и так к формам модуля Basic Cart доступ закрыт анонимам, а поля объекта $user->name и $user->mail и так обязательные.

Аватар пользователя Shipovnix Shipovnix 26 августа 2016 в 12:30
1

Круто, спасибо. Вернул девственность модулю Basic Cart. Создал свой модуль szu_module, в szu_module.module добавил:

<?php
function szu_module_form_alter(&$form, &$form_state$form_id) {
  if (
$form_id == 'order_node_form') {
    global 
$user;
    if (isset(
$user->name)) {
      
$form['title']['#default_value'] = t('Order from user') . ': ' $user->name;
    }
    if (isset(
$user->mail)) {
      
$form['field_email']['und'][0]['value']['#default_value'] = $user->mail;
    }
  }
}
?>