drupal-7 - quick - drupal metatag




Drupal 7 загружает профиль2 программно (4)

Даже если вы можете загрузить форму customer_profile, вам нужно будет обрабатывать значения отдельно, так как они представляют собой два разных узла.

Я бы предложил захватить эти поля в форме узла клиента, а затем создать программный код customer_profile из значений.

Если вы хотите получить форму profile2, вы можете использовать что-то вроде

module_load_include('inc', 'profile2_page', 'profile2_page');
$profile2 = profile2_by_uid_load($uid, 'seeker_profile');
$entity_form = entity_ui_get_form('profile2', $profile2, 'edit');

а затем добавьте это в форму, в которую вы хотите поместить ее.

У меня есть два профиля профиля 2 - main и customer_profile. Кроме того, у меня есть тип узла Customer.

При создании нового узла Customer я хотел бы загрузить форму custom_profile. Идея состоит в том, чтобы одновременно создать узел и профиль.

Я знаю, что это определенно решение hook_form_alter, но может кто-то сказать мне, как программно загружать профиль при создании или редактировании узла Customer.


У меня была аналогичная потребность в создании пользовательской вкладки на странице пользователя и загрузке в нее формы профиля пользователя2.

Вот краткий код того, как мне удалось это сделать:

MYMODULE.module https://gist.github.com/4223234

MYMODULE_profile2_MYPROFILE2TYPE.inc https://gist.github.com/4223201

Надеюсь, поможет.


Вы можете загружать полные данные профиля, используя profile2_load_by_user (); параметры как: -

profile2_load_by_user($account,$type_name)
$account: The user account to load profiles for, or its uid.
$type_name: To load a single profile, pass the type name of the profile to load

Итак, код, похожий на ниже

$account->uid = $existingUser->uid;
$type_name = 'user_about';
$profile =  profile2_load_by_user($account, $type_name);
//$profile variable have full data of profile fields
//changing data profile2 fields 
if(isset($_POST['field_user_first_name'])&& !empty($_POST['field_user_first_name'])){
    $profile->field_user_first_name['und'][0]['value'] = $_POST['field_user_first_name'];
}
profile2_save($profile);

Ну При создании нового профиля поля Profile2 не отображаются до тех пор, пока не будет выполнено ручное сохранение.

Чтобы автоматически создать объект profile2, мы используем правила Module
шаг
1) Перейдите к Drupal admin / config / workflow / rules
2) создать новое правило
3) Дайте имя и выберите в реакции / событии «После сохранения новой учетной записи пользователя»
4) Действие, >> Добавить действие >> Выполнить собственный код PHP
5) вставить php-код $profile = profile_create(array('type' => 'profile2 type machine name', 'uid' => $account->uid)); profile2_save($profile); $profile = profile_create(array('type' => 'profile2 type machine name', 'uid' => $account->uid)); profile2_save($profile);
6) Сохранить >> Сохранить изменения.
Это создаст поле profile2 при создании нового пользователя.





hook-form-alter