Здравствуйте. Использую Basic Cart.
Из ноды типа Заказ убрал ненужные поля, в итоге остались только Название, E-mail, Телефон. При чекауте заказа необходимо эти поля создаваемого материала Заказ заполнять вручную. Можно ли как-то при загрузке ноды программно предварительно заполнить эти поля из глобальной переменной ($user->phone, $user->email и т.п.)?
Заранее спасибо.
Комментарии
https://api.drupal.org/api/drupal/modules%21system%21system.api.php/func...
Спасибо.
Разобрался. Вписал в 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;
}
?>
Что надо было, получилось.
Правка ядра/контрибных модулей - крайне не приветствуется в сообществе!
Для записи фраз на отличном от английского языка - используйте функцию t() и систему переводов.
Добавьте условие с проверкой существования данных для случаев, когда пользователь анонимен, или поле не заполнено.
А как можно решить данный вопрос, не правя контрибный модуль? Я новичок.
С системой переводов справился. Проверка существования данных будет добавлена, но, по сути, и так к формам модуля Basic Cart доступ закрыт анонимам, а поля объекта $user->name и $user->mail и так обязательные.
http://xandeadx.ru/blog/drupal/256
Круто, спасибо. Вернул девственность модулю 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;
}
}
}
?>