Mengikuti apa yang dilaporkan dalam dokumentasi untuk hook_views_query_alter () , saya membuat file bernama alterform.views.inc
dan memasukkannya ke dalam modul yang diaktifkan yang disebut alterform
. Saya menambahkan kode berikut dalam. alterform.views.inc
Tapi itu tidak berhasil.
function alterform_views_query_alter(&$view, &$query) {
switch($view->name) {
case 'myViewName':
echo 'test test'; // test
$query->orderby[0] = "FIELD(node.type, 'story', 'page', 'productTypeC', 'productTypeD') ASC";
$query->orderby[1] = "node_title ASC";
break;
}
}
mengapa itu tidak menghasilkan "tes tes"? Apa yang salah dengan kode saya?
masih belum ada hasil tes dan tampilan. apa yang salah dengan kode saya? Terima kasih
alterform.views.inc
dalam modul Anda dan Anda tidak melakukannya?Jawaban:
Kanan. Untuk "melakukan" apa pun dengan tampilan dalam modul, Anda harus mengimplementasikan hook_views_api. Tanpa ini, modul Anda tidak akan dikenali oleh Views, at all, ever (AFAIK).
Silakan tambahkan yang berikut ini ke kode modul Anda:
Ini harus memperbaikinya sehingga modul Anda setidaknya dikenali, maka Anda dapat mulai men-debug-nya :)
Cara yang baik untuk mulai men-debug tampilan (yaitu langkah bayi) adalah meluruskannya
dpm($view);
di awal fungsi tampilan yang Anda laksanakan. Dalam kebanyakan kasus, itu akan membuang info ke layar yang akan membantu Anda melihat di mana Anda berada. Sarankan melakukan ini dengan devel.module diinstal / dihidupkan.Sunting: Ini mengasumsikan Tampilan 2 dan Drupal 6. Anda sebaiknya bertanya apakah itu bukan senjata pilihan Anda.
sumber
Anda dapat menguji 3 hal:
dpm()
sebagai gantiecho()
$view->name
dengandpm()
sumber
Anda perlu meletakkan file yourmodule.views.inc di direktori modul, bukan di dalam subdirektori, atau Views tidak dapat mengambilnya secara otomatis.
sumber
seharusnya
sumber
jika Anda menggunakan direktori untukmodule.views.inc, Anda perlu menyebutkan path-nya di file module, menggunakan kode yang mirip dengan yang berikut:
sumber