Rumah >pembangunan bahagian belakang >tutorial php >PHP Master | Membuat jenis nod Drupal baru

PHP Master | Membuat jenis nod Drupal baru

William Shakespeare
William Shakespeareasal
2025-02-24 08:34:10319semak imbas

PHP Master | Membuat jenis nod Drupal baru 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.

Takeaways Key

    Drupal adalah sistem pengurusan kandungan yang fleksibel yang membolehkan penciptaan jenis nod baru melalui menulis modul tersuai; Ini bermanfaat untuk membina laman web yang lebih kompleks di luar artikel lalai dan jenis nod halaman.
  • Membuat jenis nod baru melibatkan membuat modul dengan tiga fail: Cangkuk Drupal yang digunakan oleh modul).
  • Jenis nod baru dipasang menggunakan cangkuk Drupal dan API, dan medan seperti tajuk, keterangan, dan lain -lain, ditakrifkan. Modul ini juga harus memasukkan kod untuk membersihkan sebarang data atau jenis yang ditambah apabila ia tidak dipasang.
  • Bidang tambahan boleh ditambah ke jenis nod baru dengan membuat contoh medan dan medan dalam fail .install modul. Ini membolehkan kandungan yang lebih disesuaikan, seperti harga produk dan kuantiti dalam jenis nod produk.
Membuat modul anda

Mari kita mulakan dengan mewujudkan struktur asas modul di mana kita akan membuat jenis kandungan baru kita. Untuk membuat modul, di Direktori Laman/Semua/Modul Pemasangan Drupal anda buat direktori baru bernama ProductCustomType. Dalam folder itu, kemudian buat tiga fail:

    ProductCustomType.info - akan mengandungi maklumat mengenai modul supaya Drupal akan mengenalinya dan menunjukkannya dalam senarai.
  • ProductCustomType.install - akan mempunyai butiran mengenai perkara yang akan anda pasang atau nyahpasang untuk modul.
  • ProductCustomType.Module - akan mengandungi kod untuk melaksanakan cangkuk Drupal yang digunakan oleh modul.
  • Sebaik sahaja anda telah membuat direktori, buka ProductCustomType.info dan tambahkan kod berikut kepadanya:
Di atas hanya mentakrifkan beberapa parameter untuk modul kami supaya Drupal boleh menggunakannya dan memaparkan maklumat mengenai modul kami. Sebaik sahaja ini dilakukan, kita harus melihat modul kami dalam senarai modul seperti yang ditunjukkan di bawah. Tetapi jangan membolehkannya - kami akan melakukannya selepas langkah seterusnya.
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
Pelaksanaan ini mengembalikan array yang menentukan produk jenis nod baru bersama -sama dengan beberapa sifatnya, seperti namanya, keterangan, jika ia mempunyai tajuk, dan asas (yang digunakan dalam cangkuk yang berbeza untuk jenis kandungan ini). Seperti yang telah kita nyatakan bahawa jenis nod ini mempunyai tajuk, kita perlu menunjukkan medan teks tajuk apabila borang untuk nod ini dipaparkan untuk menambah kandungan. Untuk melakukan ini, kita perlu melaksanakan cangkuk hook_form. Hook_form cangkuk digunakan untuk menunjukkan borang yang digunakan untuk membuat/mengedit nod. Cangkuk dilaksanakan dalam ProductCustomType.Module seperti berikut:
<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>
Kami hanya menggunakan API Drupal yang memberikan pelaksanaan hook_form dan menambah medan tajuk dengan syarat definisi nod mempunyai set atribut has_title (yang telah kami tetapkan dalam kes kami). Sebaik sahaja kita telah selesai, kita perlu melaksanakan cangkuk hook_install untuk menambah medan badan ke jenis nod baru. Tambahkan pelaksanaan ke ProductCustomType.Install seperti berikut:
<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>
Kami mula -mula menyimpan semua jenis nod baru yang dicipta oleh modul yang berbeza (termasuk kami) dengan memanggil fungsi Drupal API Node_Types_REBUILD (). Kemudian kami mendapat semua jenis nod dan panggil node_add_body_field () pada jenis kami untuk menambah medan badan. Sebaik sahaja kami telah melakukan ini, kami dapat mengaktifkan modul kami yang akan memasang jenis nod baru kami. Kemudian kita sepatutnya dapat melihat jenis baru kita apabila kita mengklik tambah kandungan seperti berikut:

PHP Master | Membuat jenis nod Drupal baru 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
Kami mula -mula mengetahui semua ID nod yang merupakan nod jenis kandungan yang dipasang. Sebaik sahaja kami telah mengumpul ID, kami menggunakan fungsi API node_delete_multiple () untuk memadam pelbagai nod. Kemudian kami menggunakan fungsi node_type_delete () untuk memadam jenis nod kami. Sekarang jika kita menyahpasang modul kita, semua nod jenis kita dan jenis kita sendiri harus dipadamkan.

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>
Kami kemudian membuat fungsi add_custom_fields () dalam produkCustomType.install yang akan membaca array dari dan membuat medan dan contoh.
<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>
Sekarang kita hanya boleh memanggil fungsi add_custom_fields () dalam produkCustomType_install () supaya contoh medan dan medan dipasang apabila modul dipasang.
<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>
Kami juga perlu mengemas kini Fungsi ProductCustomType_uninstall () untuk menghapuskan medan dan contoh medan.
<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>
Pasang modul sekali lagi dan klik pada produk untuk menambah produk baru dan kita harus melihat dua bidang seperti yang ditunjukkan di bawah:

PHP Master | Membuat jenis nod Drupal baru 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.

Apakah jenis nod teras di Drupal? Ini menyediakan titik permulaan untuk menguruskan kandungan di Drupal. Walau bagaimanapun, anda juga boleh membuat jenis nod tersuai anda sendiri untuk memenuhi keperluan khusus anda.

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.

Bolehkah saya menggunakan modul pandangan Drupal untuk memaparkan nod saya? . Anda boleh membuat pandangan tersuai yang memaparkan nod berdasarkan pelbagai kriteria, seperti jenis nod, status penerbitan, atau pengarang. Anda juga boleh menyesuaikan format paparan, penyortiran, dan penomboran pandangan anda. Rasa nod anda. Anda boleh membuat templat tersuai untuk setiap jenis nod, dan anda boleh menggunakan API tema Drupal untuk menambah CSS dan JavaScript tersuai ke nod anda. > Ya, seni bina modular Drupal membolehkan anda melanjutkan fungsi nod anda dengan modul. Terdapat beribu -ribu modul yang disumbangkan yang boleh menambah ciri -ciri seperti galeri imej, komen, penilaian, dan integrasi media sosial kepada nod anda. Anda juga boleh membuat modul tersuai anda sendiri jika anda mempunyai keperluan khusus yang tidak dipenuhi oleh modul yang tersedia.

Atas ialah kandungan terperinci PHP Master | Membuat jenis nod Drupal baru. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn