Secara umum ini tergantung pada kasus penggunaan Anda.
Jika Anda ingin memiliki bidang / filter / argumen yang harus berperilaku dengan cara tertentu, disarankan untuk menulis handler untuk itu. Lihat bantuan tampilan lanjutan untuk informasi lebih lanjut.
Jika Anda ingin mengubah beberapa bagian dari kueri, Anda juga dapat menggunakan hook_views_query_alter () . Hal buruknya hook_views_query_alter()
adalah Anda tidak bisa menggunakan kembali kode di sana.
Ini adalah contoh kode yang ditunjukkan dari dokumentasi. Ini memberikan contoh tentang apa yang dapat dilakukan oleh pengait.
function mymodule_views_query_alter(&$view, &$query) {
// (Example assuming a view with an exposed filter on node title.)
// If the input for the title filter is a positive integer, filter against
// node ID instead of node title.
if ($view->name == 'my_view' && is_numeric($view->exposed_raw_input['title']) && $view->exposed_raw_input['title'] > 0) {
// Traverse through the 'where' part of the query.
foreach ($query->where as &$condition_group) {
foreach ($condition_group['conditions'] as &$condition) {
// If this is the part of the query filtering on title, chang the
// condition to filter on node ID.
if ($condition['field'] == 'node.title') {
$condition = array(
'field' => 'node.nid',
'value' => $view->exposed_raw_input['title'],
'operator' => '=',
);
}
}
}
}
}