Bagaimana pemrograman membuat penggoda node menggunakan lapisan tema?

10

Bagaimana cara saya membuat penggoda node menggunakan lapisan tema?

Lester Peabody
sumber

Jawaban:

20

node_view() adalah fungsi standar untuk rendering node, mis

$node = node_load(1);
$view = node_view($node, 'teaser');
$rendered = drupal_render($view);

Ada nodetema yang ditentukan oleh modul simpul (dalam node_theme()) tapi saya belum pernah melihatnya menggunakannya.

Clive
sumber
1
Bukankah node_theme () yang memungkinkan sistem tema menggunakan file .tpl.php untuk elemen dan juga memungkinkan fungsi preprocess?
mpdonadio
Ya saya khawatir tentang melewati lapisan tema. Jika saya melakukan itu, maka modul lain yang ingin di-chip tidak akan bisa. Setidaknya, saya pikir itu benar?
Lester Peabody
1
Setelah menganalisis api.drupal.org/api/drupal/modules%21node%21node.module/function/... jika Anda melihat kode implementasi, di mana dikatakan $build += array(, itu memang memiliki #themeatribut di sana yang saya duga memberitahu Drupal untuk menggunakan sistem tema. Koreksi saya jika saya salah. Saya baru saja mulai 'mendapatkan' API Drupal :)
Lester Peabody
@MPD Ya saya tidak menjelaskan dengan sangat baik, saya hanya bermaksud bahwa saya belum pernah melihat panggilan seperti theme('node', ...sebelumnya. Bahkan itu tidak akan berhasil karena ia mendefinisikan dirinya sendiri sebagai render elementpengganti variables.
Clive
@Lester Spot aktif, ada 2 cara untuk memanggil fungsi tema, cara 'normal' ( theme('theme_name', $args)dan dengan menggunakan yang disebut render elements. hook_theme()Dokumen menjelaskannya dengan sangat baik, ini bukan 100% intuitif tetapi setelah Anda tahu, itu sangat berguna. Menggunakan node_view()kehendak jangan pernah melewati layer tema jadi Anda harus baik-baik saja :)
Clive