Saya sedang membangun modul Drupal 7 untuk membuat jenis bidang yang dipesan lebih dahulu. Saya sudah menerapkan semua kait yang diperlukan. hook_field_formatter_view()
Fungsi saya terlihat seperti ini:
function MYMODULE_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
$element = array();
switch ($display['type']) {
case 'default':
foreach ($items as $delta => $item) {
$element[$delta] = array(
'#theme' => 'test',
'#item' => $item,
);
}
break;
}
return $element;
}
Saya kemudian mendefinisikan theme()
fungsi di bawah ini:
function theme_test($variables) {
return '<h1>Hello World</h1>';
}
Tetapi ketika saya melihat halaman tidak ada output. Jika saya melihat entri log terbaru, saya melihat pesan ini:
Theme key 'test' not found.
Jika saya mengubah nilai render array # # theme MYMODULE_field_formatter_view saya menjadi fungsi tema bawaan seperti 'item_list' berfungsi. Tetapi karena alasan tertentu fungsi tema khusus saya tidak diambil.
Saya telah membangun kembali registry tema ratusan kali dan juga membersihkan cache.
Anda perlu mendefinisikan fungsi tema
hook_theme
dan kemudian menghapus cache.sumber
Saya menghadapi masalah yang sama di mana fungsi tema khusus saya tidak pernah dipanggil dalam template saya, meskipun sudah terdaftar. Ketika saya beralih ke tema lain, itu berhasil.
Solusi saya adalah menamai ulang tema menjadi 'something_theme', karena saya membuat kesalahan bodoh dan sudah memiliki modul bernama 'sesuatu'.
Modul dan tema tidak boleh memiliki nama yang sama , karena mengarah ke tabrakan yang menyebabkan perilaku tak terduga dan pengait kait.
sumber