Saya menulis modul khusus, yang telah saya lakukan sebelumnya, tetapi ini adalah pertama kalinya saya mencoba membuat jenis konten dengan bidang. Saya menerapkan hook_node_info dan Tipe Konten muncul di daftar tipe Konten di dropdown dari admin_menu, namun, ketika saya menjelajahinya admin/structure/types
tidak terdaftar.
Saya menerapkan hook_install dan mengambil beberapa kode yang saya temukan pada pertanyaan SO lainnya. Saya memiliki kode untuk mencetak beberapa informasi debug ke log kesalahan saya dan sepertinya semuanya berfungsi, tetapi ketika saya telusuri ke Tipe Konten Struktur, kode itu tidak menampilkan bidang yang saya tambahkan.
Di sini adalah kait:
function mymod_node_info() {
return array(
'mymod_content' => array(
'name' => t('My Mod'),
'base' => 'mymod_content',
'description' => t('A Description'),
)
);
}
function mymod_install() {
error_log('mymod_install');
$types = node_type_get_types();
if ( ! field_info_field('field_mymod_myfile') ) {
$field = array(
'field_name' => 'field_mymod_myfile',
'type' => 'file',
);
$created_field = field_create_field($field);
error_log('---- field_create_field -----');
error_log(var_export($created_field, true));
}
$instance = array(
'field_name' => 'field_mymod_myfile',
'entity_type' => 'mymod_content',
'bundle' => 'mymod_content',
'required' => TRUE,
);
$created_instance = field_create_instance($instance);
error_log('---- field_create_instance -----');
error_log(var_export($created_instance, true));
}
Saya bisa melihat tabel yang disebut field_data_field_mymod_myfile
dalam database, jadi saya tahu bagian pertama berfungsi. Namun, tabelnya kosong.
Log kesalahan menunjukkan field_create_instance()
metode mengembalikan ini:
array (
'field_name' => 'field_mymod_myfile',
'entity_type' => 'mymod_content',
'bundle' => 'mymod_content',
'required' => true,
'field_id' => '5',
)
Mengapa bidang saya tidak muncul di tipe konten ini?
sumber
Jawaban:
Ini bukan jawaban yang banyak karena merupakan perluasan dari jawaban sebelumnya.
Saya menemukan dua tautan ini sangat membantu dalam mencari tahu apa yang dibutuhkan sistem untuk bidang khusus yang akan ditambahkan ke jenis simpul modul kustom Anda.
Terbaik: http://www.sitepoint.com/creating-a-new-drupal-node-type/
Info tambahan yang bagus: http://public-action.org/content/drupal-7-field-api-drupal-7-adding-custom-content-type-custom-fields-field-api
Masalah yang saya miliki adalah bahwa ini (dan setiap contoh lain yang dapat saya temukan online) adalah contoh yang sangat spesifik tanpa dokumentasi yang cukup untuk membantu saya mencari solusi untuk kasus penggunaan saya sendiri.
Apa yang membantu adalah komentar tenken kepada OP tentang menggunakan modul Fitur untuk mendapatkan array untuk bidang khusus.
Jadi saya mengunduh modul Fitur dan mengaktifkannya: https://drupal.org/project/features
Lalu saya membuat bidang pada tipe konten saya, menggunakan antarmuka admin di Drupal seperti biasanya, yang saya inginkan untuk dibuat modul. Kemudian saya melihat-lihat Struktur> Fitur> Buat fitur dan memasukkan nama palsu (saya menggunakan "test") untuk fitur dan kemudian ke dalam area komponen klik pada "Field Instances" dan centang kotak untuk bidang kustom. Kolom-kolom tersebut semuanya dinamai sesuatu seperti simpul- [nama mesin tipe simpul Anda] - [nama bidang], jadi dalam kasus saya karena saya menginginkan bidang gambar, simpul-novel_section-field_image.
Setelah memilih bidang khusus untuk tipe simpul saya, saya kemudian hanya mengklik "Fitur unduhan" dan menyimpan file .tar ke desktop saya, membukanya, membuka folder "test" lalu melihat test.features.field_base.inc dan uji. features.field_instance.inc untuk mendapatkan array yang saya butuhkan untuk bidang saya.
Lalu saya hanya menggunakan struktur yang digariskan oleh tautan pertama yang saya posting dan setelah itu bekerja dengan sempurna. Untuk saya.
Saya tidak dapat menemukan dokumentasi tentang struktur array yang diperlukan untuk hal-hal seperti bidang gambar dan bidang referensi taksonomi dan sepertinya semua tutorial dan permintaan bantuan online difokuskan pada hal-hal tertentu seperti bidang teks.
Semoga siapa pun yang memiliki masalah yang sama dengan yang saya alami akan melihat ini dan dapat membuat pengaturan mereka bekerja menggunakan contoh-contoh ini dan modul Fitur seperti yang saya lakukan.
Berkat tenken karena menunjukkan fungsi modul Fitur ini, saya tidak pernah menggunakannya dan tidak tahu itu akan melakukannya.
sumber
Kode ini yang akan dibuat jenis konten baru yang harus ditambahkan ke dalam file .install.
Menambahkan hook_install ():
Anda harus membuat pesan drupal dan menulis acara ini ke log:
Berikan hook_uninstall () untuk menghapus jenis konten Anda :
sumber
admin/structure/types
Posting ini sedikit ketinggalan zaman, tetapi jika ini membantu, saya menemukan artikel ini sangat jelas. Ini menunjukkan kepada Anda cara membuat tipe konten baru langkah demi langkah.
Tautan ke tutorial
sumber