सामान्य तौर पर यह आपके उपयोग के मामले पर निर्भर करता है।
यदि आप एक फ़ील्ड / फ़िल्टर / तर्क रखना चाहते हैं जिसे एक निश्चित तरीके से व्यवहार करना चाहिए, तो इसके लिए एक हैंडलर लिखने की सिफारिश की जाती है। अधिक जानकारी के लिए विचारों की उन्नत सहायता देखें।
यदि आप क्वेरी के कुछ हिस्सों को बदलना चाहते हैं तो आप हुक_ साक्षात्कार_क्वेरी_अल्टर () का भी उपयोग कर सकते हैं । इसके बारे hook_views_query_alter()
में बुरी बात यह है कि आप वास्तव में कोड का पुन: उपयोग नहीं कर सकते।
यह प्रलेखन से दिखाया गया उदाहरण कोड है। यह एक उदाहरण देता है कि हुक क्या कर सकता है।
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' => '=',
);
}
}
}
}
}