欢迎各位兄弟 发布技术文章
这里的技术是共享的
//这里 form_alter表单 function shipingzhongcustom_form_alter(&$form, &$form_state, $form_id)
{
if( $arg0=='listkefu' && $form_id=='views_exposed_form'){ //增加一个空值 $form['field_yixiangzhuanye_select_value_many_to_one']['#options']['empty']='空'; $form['field_qq_property_value_many_to_one']['#attributes'] = array('class' => 'laiyuan'); }
}
//下面是对 views 的查询的 sql语句的更改
function shipingzhongcustom_views_query_alter(&$view, &$query) { if ($view->name == 'allcontentview' && $view->current_display=='page_33') { $query->add_where(1, "node_data_field_is_baoming.field_is_baoming_value IS NULL or node_data_field_is_baoming.field_is_baoming_value <> '是' "); $query->add_where(1, "node_data_field_xueshenname.field_is_zx_shangmen_value = '是' "); $query->set_where_group('OR', 1); $query->add_where(2, "node_data_field_is_dingjing.field_is_dingjing_value IS NULL or node_data_field_is_dingjing.field_is_dingjing_value <> '是' "); $query->add_where(2, "node_data_field_xueshenname.field_is_zx_shangmen_value = '是' "); $query->set_where_group('OR', 2); }
可以看看 /node-admin/13469
( 其实sql语句可以在后面 视图那个界面看到
)
上门未报名的条件相当于
where (DATE_FORMAT(ADDTIME(node_data_field_shangmeng_time.field_shangmeng_time_value, SEC_TO_TIME(28800)), '%Y-%m-%d') <= '2017-02-20') AND ((node_data_field_is_shangmen.field_is_shangmen_value = '是') AND (node.type in ('kefuchat'))) AND ((node_data_field_is_baoming.field_is_baoming_value IS NULL or node_data_field_is_baoming.field_is_baoming_value <> '是' ) OR (node_data_field_xueshenname.field_is_zx_shangmen_value = '是' )) AND ((node_data_field_is_dingjing.field_is_dingjing_value IS NULL or node_data_field_is_dingjing.field_is_dingjing_value <> '是' ) OR (node_data_field_xueshenname.field_is_zx_shangmen_value = '是' ))
//这里进行对于 表单的中 emtpy 的处理 if ($view->name == 'allcontentview' && $view->current_display=='page_3') { //这里判断是否有值为 empty 如果有的话 就移除它 field_yixiangzhuanye_select_value 再增加一个 其值 为 is null 或 '' //这个empty 是哪里设置的呢 是 本文件约 1615行进行 form_alter 设置的 foreach($query->where[0]['args'] as $key=>$value) { if($value=='empty' && stristr($query->where[0]['clauses'][$key],'field_yixiangzhuanye_select_value'))
{ // $export = kprint_r($query, TRUE); // $vars - is a variable which you want to print. // print $export; $query->add_where(0, "node_data_field_yixiangzhuanye_select.field_yixiangzhuanye_select_value IS NULL or node_data_field_yixiangzhuanye_select.field_yixiangzhuanye_select_value='' "); unset($query->where[0]['args'][$key]); unset($query->where[0]['clauses'][$key]); };
} } }
function shipingzhongcustom_views_query_alter(&$view, &$query)
{
if ($view->name == 'allcontentview' && $view->current_display=='page_33') {
//$export = kprint_r($query->where, TRUE); // $vars - is a variable which you want to print.
//print $export;
//$query->add_where(1, "node_data_field_is_baoming.field_is_baoming_value IS NULL and node_data_field_is_dingjing.field_is_dingjing_value IS NULL ");
$query->add_where(1, "node_data_field_is_baoming.field_is_baoming_value IS NULL or node_data_field_is_baoming.field_is_baoming_value <> '是' ");
$query->add_where(1, "node_data_field_xueshenname.field_is_zx_shangmen_value = '是' ");
$query->set_where_group('OR', 1);
$query->add_where(2, "node_data_field_is_dingjing.field_is_dingjing_value IS NULL or node_data_field_is_dingjing.field_is_dingjing_value <> '是' ");
$query->add_where(2, "node_data_field_xueshenname.field_is_zx_shangmen_value = '是' ");
$query->set_where_group('OR', 2);
//这里是使用 in 方法 来得到 这样的nid(最大的下次跟踪时间为空的id 日期就不高兴限制了 只能加更多的限制的目的就是为了性能)
//如果不是为了性能的话 直接就是 group by next_time.nid having field_genzong_next_time_value is null 就可以了 就不有必要太多的条件限制了
$query->add_where(3, "node.nid in
(select tmp.nid from
(select next_time.nid,max(next_time.delta) as maxdelta,next_time.field_genzong_next_time_value
from node n
inner join content_field_genzong_next_time next_time on n.nid=next_time.nid
inner join content_field_is_shangmen shangmen on n.nid=shangmen.nid
inner join content_field_is_baoming baoming on n.nid=baoming.nid
inner join content_field_is_dingjing dingjing on n.nid=dingjing.nid
where n.type='kefuchat'
and shangmen.field_is_shangmen_value='是'
and (baoming.field_is_baoming_value is null or baoming.field_is_baoming_value <> '是')
and (dingjing.field_is_dingjing_value is null or dingjing.field_is_dingjing_value <> '是')
group by next_time.nid having field_genzong_next_time_value is null
) as tmp
)" );
//
// $export = kprint_r($query, TRUE);
// print $export;
}
if ($view->name == 'allcontentview' && $view->current_display=='page_3') {
//这里判断是否有值为 empty 如果有的话 就移除它 field_yixiangzhuanye_select_value 再增加一个 其值 为 is null 或 ''
//这个empty 是哪里设置的呢 是 本文件约 1615行进行 form_alter 设置的
foreach($query->where[0]['args'] as $key=>$value){
if($value=='empty' && stristr($query->where[0]['clauses'][$key],'field_yixiangzhuanye_select_value')){
// $export = kprint_r($query, TRUE); // $vars - is a variable which you want to print.
// print $export;
unset($query->where[0]['args'][$key]);
unset($query->where[0]['clauses'][$key]);
$query->add_where(0, "node_data_field_yixiangzhuanye_select.field_yixiangzhuanye_select_value IS NULL or node_data_field_yixiangzhuanye_select.field_yixiangzhuanye_select_value='' ");
};
// $export = kprint_r($view, TRUE); // $vars - is a variable which you want to print.
// print $export;
// if($value=='empty' && stristr($query->where[0]['clauses'][$key],'field_yixiangzhuanye_select_value')){
// unset($query->where[0]['args'][$key]);
// unset($query->where[0]['clauses'][$key]);
//// //注意这里的字段啊 是 node_data_field_xueshenname_field_yixiangzhuanye_select_value 从 dsm($query)可以看出来这个对象的fields字段
// $query->add_where(1, "node_data_field_xueshenname_field_yixiangzhuanye_select_value.field_yixiangzhuanye_select_value IS NULL or node_data_field_xueshenname_field_yixiangzhuanye_select_value.field_yixiangzhuanye_select_value='' ");
// //$query->add_where(1, "node_data_field_yixiangzhuanye_select_value_0.field_yixiangzhuanye_select_value IS NULL or node_data_field_yixiangzhuanye_select_value_0.field_yixiangzhuanye_select_value='' ");
// $query->set_where_group('AND', 1);
//
//// $query->where[0]['clauses'][$key] = " (node_data_field_yixiangzhuanye_select_value_0.field_yixiangzhuanye_select_value IS NULL) or (node_data_field_yixiangzhuanye_select_value_0.field_yixiangzhuanye_select_value='') ";
////// $query->where[0]['clauses'][$key] = "node_data_field_yixiangzhuanye_select_value_0.field_yixiangzhuanye_select_value = '%s'";
//// unset($query->where[0]['args'][$key]);
//
// }
}
if(empty($query->where['date']['clauses'][0])){
global $user;
$userinfo_str = var_export($user,true);
$getinfo_str = var_export($_GET,true);
$postinfo_str = var_export($_POST,true);
$ip_str = ip_address();
watchdog('content',$userinfo_str.' '.$getinfo_str.' '.$postinfo_str.' '.$ip_str, array(), WATCHDOG_ERROR);
drupal_set_message('有错误,请联系管理员!');
}
// $export = kprint_r($view, TRUE); // $vars - is a variable which you want to print.
// print $export;
// $export = kprint_r($query, TRUE); // $vars - is a variable which you want to print.
// print $export;
//$query->set_distinct(true);
// $users_join = $query->table_queue['users']['join'];
// $users_join->type = 'LEFT';
// $export = kprint_r($users_join, TRUE); // $vars - is a variable which you want to print.
// print $export;
// $query->table_queue['users']['join'] = $users_join;
// $node_data_field_chat_status_join = $query->table_queue['node_data_field_chat_status']['join'];
// $node_data_field_chat_status_join->type = 'LEFT';
// $query->table_queue['node_data_field_chat_status']['join'] = $node_data_field_chat_status_join;
// $query->add_where(1, "node_data_field_yixiangzhuanye_select_value_0.field_yixiangzhuanye_select_value IS NULL or node_data_field_yixiangzhuanye_select_value_0.field_yixiangzhuanye_select_value='' ");
// $query->set_where_group('AND', 1);
// $export = kprint_r($query,TRUE); // $vars - is a variable which you want to print.
// print $export;
}
if ($view->name == 'allcontentview' && $view->current_display=='page_36') {
//这里判断是否有值为 empty 如果有的话 就移除它 field_yixiangzhuanye_select_value 再增加一个 其值 为 is null 或 ''
//这个empty 是哪里设置的呢 是 本文件约 1615行进行 form_alter 设置的
foreach($query->where[0]['args'] as $key=>$value){
if($value=='empty' && stristr($query->where[0]['clauses'][$key],'field_yixiangzhuanye_select_value')){
// $export = kprint_r($query, TRUE); // $vars - is a variable which you want to print.
// print $export;
unset($query->where[0]['args'][$key]);
unset($query->where[0]['clauses'][$key]);
$query->add_where(0, "node_data_field_yixiangzhuanye_select.field_yixiangzhuanye_select_value IS NULL or node_data_field_yixiangzhuanye_select.field_yixiangzhuanye_select_value='' ");
};
}
}
if ($view->name == 'allcontentview' && ($view->current_display=='page_3' || $view->current_display=='page_35' )) {
if(!empty($_GET['xgz'])){
$xgz = $_GET['xgz'];
unset($query->where['date']);
unset($query->where[0]);
$days = $_GET['days'];
empty($days) && $days = 0;
if($xgz=='jyyxgz'){
$row_nids = _xugenzong_ids(array('wz','xq'),$days);
}else if($xgz=='hdxgz'){
$row_nids = _xugenzong_ids(array('hd'),$days);
}else if($xgz=='zgxgz'){
$row_nids = _xugenzong_ids(array('zgy'),$days);
}
$nids = implode(',',$row_nids);
$query->add_where(0, "node.nid in($nids)");
}
if(!empty($_GET['nids'])){
unset($query->where['date']);
unset($query->where[0]);
$nids = $_GET['nids'];
$query->add_where(0, "node.nid in($nids)");
}
// $yxwgz = $_GET['yxwgz'];
// if(!empty($yxwgz)){
// //这是有效未跟踪的 以意向级别不为空来判断的
// $query->add_where(2, "node_data_field_xueshenname.field_genzong_yxjb_value IS NULL ");
// }
}
if ($view->name == 'kehugengzonglist' && $view->current_display=='page_1') {
if(!empty($_GET['xgz_kehu'])){
$xgz_kehu = $_GET['xgz_kehu'];
unset($query->where['date']);
unset($query->where[0]);
if($xgz_kehu=='genzong_kehu_keqing'){
$row_nids = _genzong_kehu_keqing_nids('genzong_kehu_keqing');
}else if ($xgz_kehu=='genzong_kehu_weihu'){
$row_nids = _genzong_kehu_weihu_nids('genzong_kehu_weihu');
}
else if ($xgz_kehu=='houtian_shengri'){
$row_nids = _genzong_kehu_houtian_shengri_nids();
}
$nids = implode(',',$row_nids);
$query->add_where(0, "node.nid in($nids)");
}
}
//当是整骨时
if ($view->name == 'allcontentview' && ($view->current_display=='page_35' || $view->current_display=='page_16')) {
//以地区咨询人数的大小来排的话 再以地区来排一下
if(_startWith($query->orderby[0],'node_data_field_xueshenname_field_xueshenzixuandiqu_num_value')){
$query->add_orderby(NULL, NULL, 'ASC', 'node_data_field_xueshenname_field_xueshenzixuandiqu_value');
}
}
if ($view->name == 'allcontentview' && $view->current_display=='block_1') {
if(!empty($_GET['xgz'])){
$xgz = $_GET['xgz'];
unset($query->where['date']);
unset($query->where[0]);
if($xgz=='jyyxgz'){
$row_nids = _xugenzong_ids(array('wz','xq'));
}else if($xgz=='hdxgz'){
$row_nids = _xugenzong_ids(array('hd'));
}else if($xgz=='zgxgz'){
$row_nids = _xugenzong_ids(array('zgy'));
}
$nids = implode(',',$row_nids);
$query->add_where(0, "node.nid in($nids)");
}
if(!empty($_GET['nids'])){
unset($query->where['date']);
unset($query->where[0]);
$nids = $_GET['nids'];
$query->add_where(0, "node.nid in($nids)");
}
// $yxwgz = $_GET['yxwgz'];
// if(!empty($yxwgz)){
// //这是有效未跟踪的 以意向级别不为空来判断的
// $query->add_where(2, "node_data_field_xueshenname.field_genzong_yxjb_value IS NULL ");
// }
}
}
# 为什么我自己写的sql 要用 '%Y-%m-%%d' (为什么要用两上百分号d)
select c_t_xiaonenzhibantime.nid,
count(field_xnzbt_start_time_value) as date_cou,
DATE_FORMAT(ADDTIME(field_xnzbt_start_time_value, SEC_TO_TIME(28800)), '%Y-%m-%%d') as date_one
from content_type_xiaonenzhibantime c_t_xiaonenzhibantime
inner join content_field_xnfx_person c_f_xnfx_person on c_f_xnfx_person.nid=c_t_xiaonenzhibantime.nid where
field_xnzbt_start_time_value>='2019-07-01'
and field_xnzbt_end_time_value<='2019-07-04 00:00:00'
group by DATE_FORMAT(ADDTIME(field_xnzbt_start_time_value, SEC_TO_TIME(28800)),
'%Y-%m-%%d') order by field_xnzbt_start_time_value asc
难道是因为 public_html/sites/all/modules/views/includes/handlers.inc 这个里面对mysqli的%d进行了处理?