У меня есть свой собственный тип контента, созданный в моем модуле.Имеет текстовые и графические поля.
Теперь я хочу добавить поля формы, такие как радиоблок и кнопку отправки, чтобы при визуализации узла пользователь мог внести свой вклад.Я не могу этого сделать.
1) Моя первая попытка не удалась, когда я попытался добавить радио-блок при создании своего типа контента.
simplequiz_radio11' => array(
'field_name' => 'simplequiz_radio11,
**'type' => 'radio',**
Что я пишу в поле типа помимо текстаи изображение.Я хотел бы еще раз упомянуть, что радиоблок должен принимать пользовательский ввод, когда узел отображается не в режиме редактирования.
2) Я попытался использовать drupal_get_forms, и я могу прикрепить форму и ее элементы кузел использует drupal_get_forms, но у моего узла есть много изображений (полей), и мне нужен элемент формы для каждого изображения, поэтому использовать его таким способом нецелесообразно.Ниже мой код:
function simplequiz_node_view($node, $view_mode, $langcode)
{
$f = drupal_get_form('simplequiz_form', $node);
$f['#weight'] = 100;
$node->content['data_collection_form'] = $f;
}
Это прекрасно работает, но как я могу это сделать, скажем, для 10 полей изображения?Кажется, первый вариант лучше, но я не могу получить правильный тип поля.
// Мне удалось решить эту проблему, так как моя логика была неправильной, мне нужно работать с форматером, а неполя в друпале.
function simplequiz_field_formatter_info() {
return array(
'simplequiz_example_field' => array(
'label' => t('radio button on node'),
'field types' => array('text'),
),
'simplequiz_btn_field' => array(
'label' => t('button on node'),
'field types' => array('text'),
),
);
}
/**
* Implements hook_field_formatter_view().
*/
function simplequiz_field_formatter_view($object_type, $object, $field, $instance,
$langcode, $items, $display) {
switch ($display['type']) {
case 'simplequiz_example_field':
$element[0]['#type'] = 'markup';
$element[0]['#markup'] = theme('simplequiz_example_field', array('value' => $items[0]
['safe_value']));
break;
case 'simplequiz_btn_field':
$element[0]['#type'] = 'markup';
$element[0]['#markup'] = theme('simplequiz_btn_field', array('value' => $items[0]
['safe_value']));
break;
}
return $element;
}
/**
* Theme the example field.
*/
function theme_simplequiz_example_field($variables) {
return '<form><input type="radio" name="type" value="silver">Gold'
.$variables['value']. ' </br> <input type="radio" name="type" value="Gold"> Silver </br>
</form>'
;
}
function theme_simplequiz_btn_field($variables) {
return '<input type="submit" class="form-submit" value="Submit" name="op" id="edit-
submit--2">'
;
}
Приветствия, Вишал