Hook_node_info () এ ফিল্ড যুক্ত করুন;


9

Hook_node_info ব্যবহার করে কোন নোড প্রকারে ক্ষেত্রগুলি যুক্ত করা সম্ভব? আমাকে কি আলাদাভাবে ক্ষেত্র যুক্ত করতে হবে? যদি তা হয় তবে আমি এর জন্য কী হুক ব্যবহার করব?

উত্তর:


8

আপনাকে ক্ষেত্রগুলি পৃথকভাবে সংযুক্ত করতে হবে, সেগুলি জুড়ে দেওয়া যাবে না 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;
}

ধন্যবাদ। আমার হুক_উইনস্টল-এ আমার কিছু করার দরকার আছে?
গ্যালান

এটি আপনার পক্ষে সত্যিই ... আপনি যদি তৈরি করেছেন এমন কোনও সামগ্রী / সামগ্রীর ধরণ / ক্ষেত্রগুলি মুছে ফেলতে চান তবে হ্যাঁ, যদি না করেন তবে :) না
ক্লাইভ

সুতরাং আমার মডিউলটি বন্ধ হয়ে গেলে আমার সামগ্রীর ধরণটি অদৃশ্য হবে না?
গ্যালান

2
যখন আপনার মডিউলটি অক্ষম হয়ে যায় তখন আপনার কাস্টম সামগ্রীর প্রকারটি অদৃশ্য হয়ে যাবে না (ড্রুপাল 7 এ), আপনি অক্ষম মডিউলটি আনইনস্টল করলেও নয়। আপনি যদি আপনার মডিউলের হুক_উইনস্টল () এর সময় ইনস্টল করার সময় আপনি তৈরি করা সামগ্রীর প্রকারগুলি মুছে ফেলার জন্য কোড লিখেন, তবে হ্যাঁ আপনি যখন আপনার মডিউলটি আনইনস্টল করবেন তখন বিষয়বস্তু প্রকারটি অদৃশ্য হয়ে যাবে (তবে কেবল যখন আপনি কেবল এটি অক্ষম করবেন না)।
চাচা কোড বানর
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.