it-swarm-id.com

Buat tipe konten baru di hook_install

Dapatkah seseorang menunjukkan kepada saya contoh yang tepat tentang cara membuat jenis konten baru dalam modul metode hook_install ?

Saya juga ingin tahu apakah/apa yang harus saya lakukan selama hook_uninstall untuk membersihkan kekacauan saya; Saya membaca ada beberapa perdebatan tentang hanya menghapus konten.

Saya belum dapat menemukan contoh metode yang tepat untuk menyelesaikan tugas ini, bantuan apa pun akan dihargai!

11
Jane Panda

Untuk menjawab pertanyaan Anda dengan tepat:

Membuat jenis konten dalam pemasangan kait : Anda menggunakan node_type_save () untuk membuat jenis konten, berikut adalah contoh dari formulir web. 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);

Apa yang dilakukan di hook_uninstall : Pada dasarnya hanya membersihkan sendiri, jadi hapus variabel yang dibuat modul Anda (menggunakan variable_del () ), hapus semua file yang diunggah oleh modul (menggunakan file_unmanaged_delete_recursive () ), hapus jenis konten yang ditentukan (menggunakan node_type_delete () ), dll.

Semoga ini membantu!

7
Alex Weber

Salah satu cara terbaik untuk menyimpan informasi ini dalam kode adalah menggunakan fitur . Feaures dapat dimasukkan ke dalam kode:

  • Jenis konten
  • Bidang CCK
  • Izin
  • Peran

Daftarnya berlanjut.

Salah satu fitur Nice tentang fitur adalah integrasi drush

drush features akan memberi Anda daftar semua fitur di situs, dan statusnya
drush features revert all akan mengembalikan semua fitur kembali ke apa yang ada dalam kode (sangat praktis untuk dijalankan setelah penerapan)

Bantu ini membantu

11
wiifm

Lihat modul D7 Contoh . node_example telah menginstal & mencopot.

Anda mungkin dapat menyempurnakan jenisnya dengan alat antarmuka lalu membuat fitur (dengan modul fitur) & mengekstrak bagian yang relevan ke dalam fungsi pemasangan modul khusus Anda.

3
Drew

Jika Anda ingin membuat tipe konten baru dengan beberapa bidang, Anda dapat menggunakan kode di bawah ini.

Kode ini berfungsi dengan baik untuk saya.

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')); 
}

}
0
Sanjay