Jump to content
  • 0

Перенос значений полей из Content Profile в форму создания ноды


vkapas
 Share

Question

На сайте планируется сделать регистрационную форму, в которой пользователь будет заполнять поля типа "Компания", "Контактный телефон" и т.п. Форма повешена на Content Profile с дополнительными CCK-полями.

Требуется: сделать перенос значений некоторых CCK-полей из формы регистрации в форму создания пользователем нового материала. Ну, чтобы не писать каждый раз одно и тоже. В идеале это должно выглядеть как уже заполненное поле с возможностью редактирования.

Как можно такое реализовать? Конечно, по возможности хотелось бы обойтись минимумом самописных скриптов, модулей и прочего. Спасибо.

Edited by vkapas
Link to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 0

Не без помощи добрых людей проблема была решена следующим образом:

1) создан шаблон node_тип_материала_node_form.tpl.php в /www/themes/имя_темы/

2) с кодом

<?php
global $user;
$type = 'profile';
$profile = content_profile_load($type, $user->uid, $lang = '', $reset = NULL);
$form['field_имя_поля_тип_материала']['0']['value']['#value'] = $profile->field_имя_поля['0']['value'];
print drupal_render($form['title']);
print drupal_render($form['taxonomy']);
print drupal_render($form['menu']);
print drupal_render($form['field_имя_пустого_поля_тип_материала']);
print drupal_render($form);
?>

где

имя_темы — имя, каталог темы сайта

тип_материала — тип, название ноды, в которую переносим значения полей из Content Profile

имя_поля — имя, название поля, в которое переносим значение аналогичного поля из Content Profile

имя_пустого_поля — необязательно, добавляем, если в материале есть пустые, незаполненные поля (например: при регистрации заполняются поля "имя", "город", и их значение нужно переносить, а при добавлении материала появляется незаполненное поле "где вы сейчас находитесь" — для отображения этого поля нужно его указать через print drupal_render($form);)

print drupal_render($form['title']);

print drupal_render($form['taxonomy']);

print drupal_render($form['menu']);

— необязательно, добавляем, если нам нужно отобразить на странице заголовок, таксономию и меню, соответственно

3) в начало файла /www/themes/имя_темы/template.php пишем:

function имя_темы_theme($existing, $type, $theme, $path) {
return array(
'тип_материала_node_form' => array('arguments' => array('form' => NULL),
'template' => 'node_тип_материала_node_form'
),
);
}

(если такого файла нет, то, соответственно, его создаём, пишем вверху "<?php" (без кавычек), а на следующей строке — код, указанный выше)

Вот и всё.

Перенос значений должен заработать после обновления страницы.

Edited by vkapas
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy