Saya membuat modul fitur yang hanya berisi tampilan dan tipe konten.
Saat ini file page-node-x.tpl.php
saya dan saya views-view-y.tpl.php
berada di direktori tema saya.
Apakah mungkin memindahkannya ke modul fitur saya?
Modul yang mengimplementasikan hook_preprocess_page()
atau hook_preprocess_node()
dapat menyarankan file templat baru dengan mengubah variabel $variables['theme_hook_suggestions']
.
Kode yang terkandung dalam template_preprocess_page () yang menginisialisasi variabel itu adalah sebagai berikut.
// Populate the page template suggestions.
if ($suggestions = theme_get_suggestions(arg(), 'page')) {
$variables['theme_hook_suggestions'] = $suggestions;
}
Setiap saran tema harus sesuai dengan entri yang dikembalikan oleh hook_theme () .
Dalam Tampilan, harus ada fungsi preprocess yang setara untuk digunakan dengan cara yang sama, atau cara yang memungkinkan untuk hook_preprocess_page()
fungsi untuk memahami jika halaman terkait dengan tampilan.
Solusi untuk menambahkan kunci 'file templat' ke hook_views_api()
tampaknya belum berfungsi di Drupal 7. Namun, ini berfungsi seperti pesona:
/**
* Implements hook_theme().
*/
function bigtexas_theme() {
return array(
'views_view_fields__slideshow' => array(
'variables' => array('view' => NULL, 'options' => NULL, 'row' => NULL),
'template' => 'views-view-fields--slideshow',
'base hook' => 'views_view_fields',
'path' => drupal_get_path('module', 'bigtexas') . '/theme',
),
);
}
Registri tema adalah tempat Drupal menyimpan segala macam info tentang file templat apa, fungsi tema dll untuk digunakan. Mengobrol dengannya dapat menyebabkan WTF beberapa saat kemudian, karena hal-hal tidak akan berfungsi seperti default.
Bagaimanapun seperti semua hal drupal, ada sebuah kait: hook_theme_registry_alter
Anda dapat menggunakan untuk mengubah tema registry dan ini memindahkan file template Anda ke dalam modul. Saya tidak akan menyarankan melakukan ini, karena itu akan membuat pemeliharaan situs lebih kompleks. Tetapi jika Anda ingin lakukan adalah, ini adalah bagaimana hal itu dilakukan.
Untuk tampilan ada secara teori mekanisme untuk tampilan template (mungkin itu bekerja untuk semua template).
Anda dapat mengatur "path templat" kunci dalam implementasi hook_views_api modul khusus Anda.
Setelah Anda memiliki pandangan ini akan memindai direktori yang Anda tentukan untuk file template. Sayangnya yang paling sederhana saat ini gagal, jadi fitur ini mungkin belum porting ke drupal7, tetapi jika seseorang ingin masuk ke dalamnya, lihat _views_find_module_templates () di views.module.
sumber
Cara termudah adalah menggunakan
hook_theme_registry_alter()
dan cukup menambahkan jalur modul Anda ke jalur tema:sumber
theme()
implementasi, sepertinya tidaktheme path
bisa menjadi array. Apakah Anda yakin ini berhasil? Lihat api.drupal.org/api/drupal/includes%21theme.inc/function/theme/7theme paths
dulu bekerja di Drupal 6, tetapi Drupal 7 mengubah perilaku itu di drupal.org/node/678714 Tampaknya, dari komentar # 29 dan # 31 dalam masalah yang disebutkan, saran tema dari modul harus dideklarasikan dalam hook_theme modul itu, tetapi bagaimana melakukannya dibiarkan sebagai latihan untuk pembaca: /Bagaimana dengan pendekatan yang agak abstrak dengan Tema Reaksi Konteks?
http://drupal.org/project/context_reaction_theme
Bungkus konteks Anda di Fitur dan bahkan dapat diekspor. Tapi mungkin ini sebenarnya pertanyaan guru Drupal yang ingin membuat sesuatu yang lebih dalam dan tahu rute.
sumber
Saya mulai dengan jawaban googletorp dan membangun fungsi generik:
Hal ini memungkinkan tidak hanya untuk menimpa posisi dan nama node dan melihat file tpl tetapi juga untuk menyediakan fungsi preprocess untuk dilihat.
Jadi jika Anda mendapatkan modul Anda sendiri yang dipanggil
mymodule
dengan file templat mis.sites/all/modules/mymodule/templates/foo--variant.tpl.php
Anda sekarang dapat dengan mudah memodifikasi registry theme untuk menggunakan direktori templat Anda sendiri:sumber
Seperti yang dikatakan @jcsio, jawaban yang diterima pada halaman ini berfungsi, tetapi templat tidak dapat ditimpa oleh tema.
http://www.metachunk.com/blog/adding-module-path-drupal-7-theme-registry menawarkan solusi yang memungkinkan Anda menambahkan jalur modul Anda (dan sub-folder) untuk dipindai untuk semua jenis file .tpl.php.
Saya sedikit mengubahnya, karena berisi variabel 'jalur tema' yang sepertinya tidak digunakan oleh Drupal 7.
Saya mencoba jawaban yang diterima dan solusi ini, yang terakhir ini bekerja untuk saya sejauh ini!
sumber