Доброго дня всем.
На сайте есть регистрационная форма, в которой пользователь заполняет поля типа "Название компании", "Контактный телефон" и т.п. Форма повешена на Content Profile и содержит несколько дополнительных CCK-полей.
Требуется: сделать перенос значений некоторых CCK-полей из формы регистрации в форму создания ноды. Ну, чтобы пользователю не писать каждый раз одно и тоже. В идеале это должно выглядеть как уже заполненное поле (при создании ноды) с возможностью его редактирования.
Как можно такое реализовать? Поиск по форуму ничего не дал. Спасибо.
Планировал сделать это через одинаковые названия полей, но это, ожидаемо, привело к ошибке "Название «...» уже существует."
Комментарии
Значения для поля брать из базы.
Это понятно, а как это сделать?
Написать запрос в базу очевидно.
Не подскажете, где можно посмотреть примеры реализации?
Запросы и раньше писал, но это было на самом примитивном уровне и не Друпал.
Не без помощи добрых людей проблема была решена следующим образом:
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 пишем:
return array(
'тип_материала_node_form' => array('arguments' => array('form' => NULL),
'template' => 'node_тип_материала_node_form'
),
);
}
(если такого файла нет, то, соответственно, его создаём, пишем вверху "< ? php" (без кавычек), а на следующей строке — код, указанный выше)
Вот и всё.
Перенос значений должен заработать после обновления страницы.
Спасибо за решение.
Пригодится.