Drupal adalah sistem pengurusan kandungan yang sangat fleksibel untuk membina laman web. Ia menyediakan banyak ciri hebat dari kotak yang membolehkan kami membina tapak yang komprehensif tanpa menulis sebarang kod PHP. Ia juga menyediakan ciri -ciri untuk menambah lebih banyak fungsi melalui penggunaan modul.
Secara lalai, jenis nod Drupal adalah artikel dan halaman. Ini mungkin baik untuk tapak asas, tetapi jika kita merancang untuk mempunyai laman web yang lebih kompleks, kami akan mahu menambah jenis nod yang berbeza. Kita juga boleh menentukan mereka dengan menulis modul!
Dalam artikel ini, anda akan melihat cara menulis modul Drupal tersuai yang akan memasang jenis nod baru menggunakan Drupal Hooks dan API.
name = productcustomtype description = A new content type of Product package = Product Custom node Type core = 7.x files[] = productcustomtype.install files[] = productcustomtype.module
memasang dan menyahpasang nod
Sebaik sahaja kita mempunyai fail asas untuk modul di tempat, kita boleh mula menulis kod untuk memasang jenis nod tersuai. Cangkuk pertama yang perlu kita laksanakan ialah hook_node_info. Menggunakan cangkuk ini, modul boleh menentukan satu atau lebih jenis nod di Drupal. Pelaksanaan Hook mengembalikan array yang menentukan jenis nod baru yang modul akan ditambah.
Untuk melaksanakan cangkuk ini, tambahkan kod berikut ke ProductCustomType.Module:
name = productcustomtype
description = A new content type of Product
package = Product Custom node Type
core = 7.x
files[] = productcustomtype.install
files[] = productcustomtype.module
<span><span><?php
</span></span><span><span>/**
</span></span><span><span> * Implements hook_node_info()
</span></span><span><span> */
</span></span><span><span>function productcustomtype_node_info() {
</span></span><span> <span>return array(
</span></span><span> <span>'product' => array(
</span></span><span> <span>'name' => t('Product'),
</span></span><span> <span>'base' => 'product',
</span></span><span> <span>'description' => t('You can define new Products here'),
</span></span><span> <span>'has_title' => TRUE,
</span></span><span> <span>'title_label' => t('Product title')
</span></span><span> <span>)
</span></span><span> <span>);
</span></span><span><span>}</span></span>
<span><span><?php
</span></span><span><span>/**
</span></span><span><span> * Implement hook_form()
</span></span><span><span> */
</span></span><span><span>function product_form($node, $form_state) {
</span></span><span> <span>return node_content_form($node, $form_state);
</span></span><span><span>}</span></span>
Jika kita menambah produk baru, ia juga akan dilihat di halaman rumah Drupal.
Semua modul di Drupal harus membersihkan sebarang data yang mereka buat dalam pangkalan data atau mana -mana jenis yang telah mereka tambah apabila ia dipasang oleh pengguna. Untuk menyokong ini, kami perlu melaksanakan hook_uninstall dalam fail ProductCustomType.install kami seperti berikut:
name = productcustomtype
description = A new content type of Product
package = Product Custom node Type
core = 7.x
files[] = productcustomtype.install
files[] = productcustomtype.module
Mewujudkan bidang tambahan
Sebaik sahaja kami telah menambah jenis nod baru, kami mempunyai fungsi yang serupa dengan nod. Tetapi bagaimana jika kita mahu menambah lebih banyak medan bergantung pada jenis nod? Sebagai contoh, jika ia adalah jenis produk maka kita mungkin mahu menambah dua lagi bidang seperti harga dan kuantiti.
Untuk ini, kita perlu terlebih dahulu membuat medan dan kemudian membuat contoh medan pada jenis nod kita. Kami menulis dua fungsi baru dalam Fail ProductCustomType.Install untuk menentukan bidang dan contoh medan.
<span><span><?php
</span></span><span><span>/**
</span></span><span><span> * Implements hook_node_info()
</span></span><span><span> */
</span></span><span><span>function productcustomtype_node_info() {
</span></span><span> <span>return array(
</span></span><span> <span>'product' => array(
</span></span><span> <span>'name' => t('Product'),
</span></span><span> <span>'base' => 'product',
</span></span><span> <span>'description' => t('You can define new Products here'),
</span></span><span> <span>'has_title' => TRUE,
</span></span><span> <span>'title_label' => t('Product title')
</span></span><span> <span>)
</span></span><span> <span>);
</span></span><span><span>}</span></span>
<span><span><?php
</span></span><span><span>/**
</span></span><span><span> * Implement hook_form()
</span></span><span><span> */
</span></span><span><span>function product_form($node, $form_state) {
</span></span><span> <span>return node_content_form($node, $form_state);
</span></span><span><span>}</span></span>
<span><span><?php
</span></span><span><span>/**
</span></span><span><span> * Implements hook_install().
</span></span><span><span> */
</span></span><span><span>function productcustomtype_install() {
</span></span><span> <span>node_types_rebuild();
</span></span><span> <span>$types = node_type_get_types();|
</span></span><span> <span>node_add_body_field($types['product']);
</span></span><span><span>}</span></span>
<span><span><?php
</span></span><span><span>/**
</span></span><span><span> * Implements hook_uninstall().
</span></span><span><span> */
</span></span><span><span>function productcustomtype_uninstall() {
</span></span><span> <span>$ournewtype = 'product';
</span></span><span> <span>$sql = 'SELECT nid FROM {node} n WHERE n.type = :type';
</span></span><span> <span>$result = db_query($sql, array(':type' => $ournewtype));
</span></span><span> <span>$nodeids = array();
</span></span><span> <span>foreach ($result as $row) {
</span></span><span> <span>$nodeids[] = $row->nid;
</span></span><span> <span>}
</span></span><span> <span>node_delete_multiple($nodeids);
</span></span><span> <span>node_type_delete($ournewtype);
</span></span><span><span>}</span></span>
Selepas kita menyimpan nod dan melihatnya dalam pratonton, kita akan melihat bidang seperti berikut:
Kesimpulan
Drupal CMS menyediakan banyak cangkuk berguna dan API yang kuat yang membolehkan kami melakukan pelbagai penyesuaian. Dalam artikel ini, kami dapat mencipta jenis node yang baru yang akan muncul di bahagian kandungan Drupal. Dan menggunakan API Drupal, kami juga melampirkan medan ke jenis nod baru ini supaya sesiapa sahaja boleh menambah kandungan menggunakan jenis nod baru. Oleh itu, bersenang -senang membuat jenis nod baru anda untuk laman Drupal anda.
imej melalui Fotolia
soalan yang sering ditanya mengenai membuat jenis nod Drupal baru
Apakah jenis nod Drupal dan mengapa penting? oleh konteks maklumat. Ini boleh menjadi catatan blog yang mudah, artikel, cerita berita, topik forum, atau tutorial, antara lain. Jenis nod adalah penting kerana mereka menyediakan cara berstruktur untuk memasukkan, memaparkan, dan menguruskan kandungan dalam Drupal. Mereka membenarkan penyesuaian input data, pengesahan, dan tetapan paparan, yang dapat meningkatkan pengalaman pengguna dan fungsi keseluruhan tapak Drupal. >
Mewujudkan jenis nod baru dalam Drupal adalah proses yang mudah. Pertama, navigasi ke menu "Struktur" di Dashboard Drupal Admin anda, kemudian pilih "Jenis Kandungan". Klik pada butang "Tambah Jenis Kandungan". Anda akan diminta untuk mengisi nama, keterangan, dan tetapan untuk jenis nod baru anda. Sebaik sahaja anda telah mengisi maklumat yang diperlukan, klik pada butang "Simpan dan Urus Bidang" untuk menambah medan ke jenis nod baru anda. 🎜> Ya, anda boleh menyesuaikan medan dalam jenis nod Drupal anda. Selepas membuat jenis nod baru, anda boleh menambah, mengedit, atau memadam medan yang diperlukan. Ini membolehkan anda menyesuaikan jenis nod untuk keperluan kandungan khusus anda. Sebagai contoh, anda mungkin menambah medan teks untuk ringkasan artikel, medan imej untuk imej yang dipaparkan, atau medan tarikh untuk tarikh penerbitan.
Drupal menyediakan tab "Urus Paparan" untuk setiap jenis nod. Ini membolehkan anda mengawal bagaimana setiap medan dipaparkan apabila nod dilihat. Anda boleh menyesuaikan label, format, dan susunan setiap medan. Anda juga boleh mengumpulkan medan ke dalam mod paparan tersuai, seperti pandangan penggoda atau paparan kandungan penuh. Cara yang kuat untuk membuat, mengemas kini, dan memadam nod secara pemrograman. Ini berguna untuk tugas -tugas seperti mengimport kandungan dari sistem lain, menghasilkan data ujian, atau membuat aliran kerja tersuai. API Node adalah sebahagian daripada sistem teras Drupal, jadi ia boleh didapati dalam semua pemasangan Drupal.
Bagaimana saya boleh mengawal akses ke nod Drupal saya? Anda boleh menetapkan kebenaran berdasarkan peranan pengguna, membolehkan anda mengawal siapa yang boleh melihat, membuat, mengedit, dan memadam nod setiap jenis. Anda juga boleh menggunakan API akses nod Drupal untuk membuat peraturan akses yang lebih kompleks.
Atas ialah kandungan terperinci PHP Master | Membuat jenis nod Drupal baru. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!