हुक_ स्थापना पर नई सामग्री प्रकार बनाएँ


11

क्या कोई मुझे एक उचित उदाहरण दिखा सकता है कि मॉड्यूल के हुक_ इंस्टॉलेशन पद्धति में एक नई सामग्री प्रकार कैसे बनाएं ?

मैं यह भी जानना चाहूंगा कि क्या / मुझे अपनी गंदगी को साफ करने के लिए hook_uninstall के दौरान क्या करना चाहिए ; मैंने पढ़ा कि सामग्री को हटाने के बारे में कुछ बहस है।

मैं इस कार्य को पूरा करने के उचित तरीके का उदाहरण नहीं खोज पाया हूँ, किसी भी मदद की सराहना की जाएगी!

जवाबों:


7

अपने सवालों के सही जवाब देने के लिए:

हुक इनस्टॉल में एक कंटेंट टाइप बनाना : आप कंटेंट टाइप बनाने के लिए नोड_टाइप_सेवे () का उपयोग करते हैं, यहाँ webform.install से एक उदाहरण दिया गया है:

  // Create the default webform type.
  $webform_type = array(
    'type' => 'webform',
    'name' => st('Webform'),
    'base' => 'node_content',
    'description' => st('Create a new form or questionnaire accessible to users. Submission results and statistics are recorded and accessible to privileged users.'),
    'custom' => TRUE,
    'modified' => TRUE,
    'locked' => FALSE,
  );

  $webform_type = node_type_set_defaults($webform_type);
  node_type_save($webform_type);
  node_add_body_field($webform_type);

Hook_uninstall में क्या करते हैं : मूल रूप से अपने आप को क्लीनअप करें, इसलिए अपने द्वारा बनाए गए वेरिएबल वेरिएबल ( वेरिएबल_del () का उपयोग करके ), मॉड्यूल द्वारा अपलोड की गई किसी भी फाइल को हटाएं ( file_unmanaged_delete_recursive () का उपयोग करके , परिभाषित सामग्री प्रकारों को हटाकर (node_type_delete () का उपयोग करके ) करें। आदि।

उम्मीद है की यह मदद करेगा!


धन्यवाद, यह करने के लिए कोडिंग तरीका भी जानना अच्छा है, और मुझे अनइंस्टॉल का उपयोग करने के बारे में कुछ अच्छी जानकारी खोजने की आवश्यकता है
जेन पांडा

कोई समस्या नहीं, मुझे सहायता करके प्रसन्नता होगी! :)
एलेक्स वेबर

11

इस जानकारी को कोड में रखने का एक सबसे अच्छा तरीका सुविधाओं का उपयोग करना है । Feaures कोड में डाल सकते हैं:

  • सामग्री प्रकार
  • CCK फ़ील्ड्स
  • अनुमतियां
  • भूमिकाएँ

सूची चलती जाती है।

फीचर्स के बारे में एक अच्छी बात यह है कि इसमें ड्रग इंटीग्रेशन है

drush featuresआपको साइट पर सभी विशेषताओं की एक सूची देगा, और उनकी स्थिति
drush features revert allसभी विशेषताओं को वापस उस कोड में वापस कर देगी जो कोड में है (तैनाती के बाद चलने के लिए वास्तव में आसान)

इससे मदद मिलती है


सहमत, हालांकि यह सीधे सवाल का जवाब नहीं देता ...
एलेक्स वेबर

हाँ, मुझे पता है कि यह सटीक रूप से अनुरोधित सटीक समाधान नहीं है, लेकिन अंततः वे दोनों एक ही लक्ष्य को प्राप्त करेंगे, यह सिर्फ इतना है कि एक बनाए रखने के लिए दुःस्वप्न होगा, और दूसरा बिंदु और क्लिक और भयानक ड्रग एकीकरण के साथ आसान होगा । बॉब तय कर सकता है कि उसके लिए क्या काम करता है
wiifm

1
फिर से सहमत! Drush + के फीचर्स पहले तो आपको डराने वाले हो सकते हैं लेकिन इसके इतना उपयोगी होने के बाद आप इसे लटकाएंगे :)
एलेक्स वेबर

मैं एक शॉट देता हूँ, मुझे लगता है कि यह समय बचाएगा यदि मैं एक कस्टम सामग्री प्रकार निर्यात कर सकता हूं तो मुझे खेतों को जाम करने के लिए हाथ नहीं डालना पड़ेगा! धन्यवाद!
जेन पांडा

3

D7 उदाहरण मॉड्यूल की जाँच करें । node_example ने इंस्टॉल और अनइंस्टॉल किया है।

आप इंटरफ़ेस टूल के साथ प्रकार को बाहर निकालने में सक्षम हो सकते हैं और फिर एक सुविधा (मॉड्यूल के साथ) बना सकते हैं और अपने कस्टम मॉड्यूल के इंस्टॉल फ़ंक्शन में प्रासंगिक भागों को निकाल सकते हैं।


0

यदि आप कुछ क्षेत्रों के साथ एक नई सामग्री प्रकार बनाना चाहते हैं, तो आप नीचे दिए गए कोड का उपयोग कर सकते हैं।

यह कोड मेरे लिए पूरी तरह से काम करता है।

function HOOK_install() {

 /* CREATE THE CONTENT TYPE */
 $t = get_t();
 $node_example = array(
    'type' => 'slider',
    'name' => $t('Slider Content'),
    'base' => 'node_content',
    'description' => $t('Add slider content.'),
    'body_label' => $t('Slider Description')
 );
 $content_type = node_type_set_defaults($node_example);

// Create a custom Field with our required field-type.
$field = array(
  'field_slider_images' => array (
    'field_name' => 'field_slider_images',
    'type' => 'image',
  ),
 'field_slider_links' => array (
   'field_name' => 'field_slider_links',
   'type' => 'text',
   'entity_types' => array('node'),
  ),

);
foreach ($field as $fields) {
  field_create_field($fields);
}

// Create a instances of that Field.
$instance = array(
'field_slider_images' => array (
  'field_name' => 'field_slider_images',
  'entity_type' => 'node',
  'bundle' => 'slider',
  'label' => t('Slider Image'),
  'description' => 'Add Slider Image.',
  'settings' => array(
    'file_directory' => 'field/document',
    'file_extensions' => 'png PNG jpg jpeg JPG JPEG',
    'max_filesize' => '10MB',
    'title_field' => '',
  ),
  'widget' => array(
     'type' => 'image_image',
     'weight'=> 10,
  ),
  'formatter' => array(
    'label' => t('label'),
    'format' => 'image'
  ),
  'settings' => array(
    'file_directory' => 'slider-image', // save inside "public://photos"
    'max_filesize' => '4M',
    'preview_image_style' => 'thumbnail',
    'title_field' => TRUE,
    'alt_field' => FALSE,
  )
),
'field_slider_links' => array (
  'field_name' => 'field_slider_links',
  'entity_type' => 'node',
  'bundle' => 'slider',
  'label' => t('Slider Link'),
  'widget' => array('type' => 'text_textfield'),
 ),
);

foreach ($instance as $fieldinstance) {
 field_create_instance($fieldinstance);
}

$status = node_type_save($content_type);
node_add_body_field($content_type);

// Replacement rule for the messages.
$t_args = array('%name' => $content_type->name);
if ($status == SAVED_UPDATED) { // update case
 drupal_set_message($t('The content type %name has been updated.', $t_args));
} 
 elseif ($status == SAVED_NEW) { // create case
   drupal_set_message($t('The content type %name has been added.', $t_args));
   watchdog('node', 'Added content type %name.', $t_args, WATCHDOG_NOTICE, l($t('view'), 'admin/structure/types')); 
}

}

-1

मैंने माइस्पेस सिंक मॉड्यूल में ऐसा किया था ।
मुझे याद है कि विभिन्न स्रोतों से एक साथ piecing, लेकिन मुझे याद नहीं है कि सभी स्रोत क्या थे। आपने जो कुछ किया, उसे देखने के लिए आप git रिपॉजिटरी को ब्राउज़ कर सकते हैं, लेकिन यह मूल रूप से CCK के कंटेंट कॉपी मॉड्यूल के साथ प्रत्येक सामग्री प्रकार का निर्यात है, और फिर स्थापना रद्द करने पर सामग्री प्रकार को हटाने से पहले सभी नोड्स को हटा रहा है।


4
हालांकि प्रश्न ड्रुपल -7 को टैग किया गया है, माइस्पेस सिंक मॉड्यूल केवल उपलब्ध है Drupal 6. सामग्री प्रकार बनाने के लिए उपयोग किया जाने वाला API Drupal 6 और Drupal 7 के बीच बहुत बदल गया है
पियरे बाइल

-1

नीचे दिए गए लिंक की कोशिश करें, यह मददगार होगा।

Drupal 7 फ़ील्ड API - इंस्टॉल और फ़ील्ड जोड़ने पर एक नई सामग्री प्रकार सेट करें


मेरा सुझाव है कि आप उस लिंक के बारे में अधिक विवरण जोड़ने के लिए अपने उत्तर का विस्तार करें (इसके बारे में सारांश या तो)। यह आपके डाउनवोट (जो मेरा नहीं है ...) को निकालने में मदद कर सकता है ...
पियरे.विरेंस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.