উত্তর:
আপনাকে ক্ষেত্রগুলি পৃথকভাবে সংযুক্ত করতে হবে, সেগুলি জুড়ে দেওয়া যাবে না hook_node_info()
। আপনি সাধারণত hook_install()
আপনার মডিউলের। ইনস্টল ফাইলটিতে কোনও ফাংশনে এটি করতে পারেন।
ড্রুপাল কোর থেকে একটি দুর্দান্ত সরল উদাহরণ ব্লগ মডিউলের ইনস্টল ফাইলটিতে রয়েছে:
function blog_install() {
// Ensure the blog node type is available.
node_types_rebuild();
$types = node_type_get_types();
node_add_body_field($types['blog']);
}
ফাংশনটি কেবল নোড প্রকারগুলি পুনর্নির্মাণ করে (যাতে নতুন যুক্ত হওয়া প্রকারটি উপলভ্য থাকে), তারপরে node_add_body_field()
ফাংশনটি ব্যবহার করে এটিতে একটি শরীরের ক্ষেত্র যুক্ত করে । এই ফাংশনটি নিজের মধ্যে ক্ষেত্রটি কীভাবে তৈরি করা যায়, সেই ক্ষেত্রের একটি উদাহরণ তৈরি করে এবং তারপরে এবং এটি ব্যবহার করে একটি সামগ্রীর ধরণের সাথে সংযুক্ত করার একটি দুর্দান্ত উদাহরণ দেয় field_create_field()
andfield_create_instance()
ফাংশনগুলি ।
কোডটি এত দীর্ঘ নয় তাই আমি এটি এখানে উদাহরণ হিসাবে অন্তর্ভুক্ত করব:
function node_add_body_field($type, $label = 'Body') {
// Add or remove the body field, as needed.
$field = field_info_field('body');
$instance = field_info_instance('node', 'body', $type->type);
if (empty($field)) {
$field = array(
'field_name' => 'body',
'type' => 'text_with_summary',
'entity_types' => array('node'),
);
$field = field_create_field($field);
}
if (empty($instance)) {
$instance = array(
'field_name' => 'body',
'entity_type' => 'node',
'bundle' => $type->type,
'label' => $label,
'widget' => array('type' => 'text_textarea_with_summary'),
'settings' => array('display_summary' => TRUE),
'display' => array(
'default' => array(
'label' => 'hidden',
'type' => 'text_default',
),
'teaser' => array(
'label' => 'hidden',
'type' => 'text_summary_or_trimmed',
),
),
);
$instance = field_create_instance($instance);
}
return $instance;
}