[РЕШЕНО] Перенос значений полей из Content Profile в форму создания ноды

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

Аватар пользователя vkapas vkapas 5 июля 2011 в 15:00

Доброго дня всем.

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

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

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

Планировал сделать это через одинаковые названия полей, но это, ожидаемо, привело к ошибке "Название «...» уже существует."

Комментарии

Аватар пользователя vkapas vkapas 6 июля 2011 в 13:11

Не подскажете, где можно посмотреть примеры реализации?

Запросы и раньше писал, но это было на самом примитивном уровне и не Друпал.

Аватар пользователя vkapas vkapas 2 октября 2011 в 15:51

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

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['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" (без кавычек), а на следующей строке — код, указанный выше)

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