Javascript 日历问题
您好,我对wordpress中的日历有问题 日历只标记当前月份中的事件天数,在旧月份中无法显示 完整代码: functions.phpJavascript 日历问题,javascript,php,ajax,Javascript,Php,Ajax,您好,我对wordpress中的日历有问题 日历只标记当前月份中的事件天数,在旧月份中无法显示 完整代码: functions.php add_filter( 'be_events_manager_metabox_override', '__return_true' ); function draw_calendar($month,$year,$link=0){ if(isset($_GET["mes"])) { // Queremos todos los eventos
add_filter( 'be_events_manager_metabox_override', '__return_true' );
function draw_calendar($month,$year,$link=0){
if(isset($_GET["mes"])) {
// Queremos todos los eventos del mes requerido
$inicio = strtotime($_GET["mes"]."01");
$fin = strtotime(date("Y-m-t", $inicio));
} else {
// Queremos todos los eventos del mes actual
$inicio = strtotime(date("Ym01"));
$fin = strtotime(date("Y-m-t", $inicio));
}
$eventos = getPostsByFechas($inicio, $fin);
// echo "Draw calendar with $year - $month";
/* draw table */
$today = date("j");
$tmes = date("n");
$tano = date("Y");
$calendar = '<table class="table">';
/* table headings */
$headings = array('LUN','MAR','MIE','JUE','VIE','SAB','DOM');
$calendar.= '<thead><tr><th scope="row">'.implode('</th> <th>',$headings).'</th></tr></thead>';
/* days and weeks vars now ... */
$init_day = date('w',$inicio - 60 * 60 * 24); // Dia de la semana que empieza el mes (menos uno.. PHP sucks) // (0,0,0,$month,1,$year)-1);
$days_in_month = date('t',mktime(0,0,0,$month,1,$year));//
$days_in_this_week = 1;
$day_counter = 0;
$dates_array = array();
/* row for week one */
$calendar.= '<tbody><tr class="calendar-row">';
/* print "blank" days until the first of the current week */
for($x = 0; $x < $init_day; $x++):
$calendar.= '<td><span> </span></td>';
$days_in_this_week++;
endfor;
/* keep going with days.... */
// print_r($eventos);
for($list_day = 1; $list_day <= $days_in_month; $list_day++):
$calendar.= '<td>';
/* add in the day number */
$list_day2 = ( ($list_day<10) ? "0" : "" ) .$list_day ;
$month2 = ( ($month<10) ? "0" : "" ) .$month ;
$dayTieneEvento = hasEventInDay($year.$month2.$list_day2, $eventos);
if($dayTieneEvento){
//if($dayTieneEvento){
if($link==0){
$calendar.="<a href=\"javascript:showEvents('$year$month2$list_day2');\" class='tieneeventos'>";
} else {
$calendar.="<a href=\"javascript:void(0);\" class='tieneeventos'>";
}
} else {
$calendar.="<a href=\"javascript:void(0);\" class=''>";
}
$calendar.= $list_day;
$calendar.="</a>";
$calendar.= '</td>';
if($init_day == 6):
$calendar.= '</tr>';
if(($day_counter+1) != $days_in_month):
$calendar.= '<tr>';
endif;
$init_day = -1;
$days_in_this_week = 0;
endif;
$days_in_this_week++; $init_day++; $day_counter++;
endfor;
/* finish the rest of the days in the week */
if($days_in_this_week < 8):
for($x = 1; $x <= (8 - $days_in_this_week); $x++):
$calendar.= '<td><span> </span></td>';
endfor;
endif;
/* final row */
$calendar.= '</tr></tbody>';
/* end the table */
$calendar.= '</table>';
/* all done, return result */
return $calendar;
}
function hasEventInDay($day, $eventos) {
foreach ($eventos as $date => $evento) {
// echo $day . " vs " . $evento["inicio"] ."<br>";
if($day == $evento["inicio"]) {
return true;
}
}
// die();
// echo "<br><br>";
return false;
}
function head_calendar($mes_actual='',$ano_actual=''){
global $meses;
?>
<?php
if(!isset($_GET["mes"])){
$mes = date("m");
$ano = date("Y");
} else {
$fecha = intval($_GET["mes"]);
$mes = substr($fecha,4,2);
$ano = substr($fecha,0,4);
}
if($mes_actual){
$mes = $mes_actual;
}
echo '<a href="javascript:getMes(\''.$ano.$mes.' \')">'.$meses[intval($mes)].'</a>';
if($mes_actual){
echo " ".$ano_actual;
}
$mes_ant = $mes - 1;
$mes_next = $mes + 1;
if($mes_ant<10) $mes_ant = "0".$mes_ant;
if($mes_next<10) $mes_next = "0".$mes_next;
$ano_ant = $ano;
$ano_next = $ano;
if($mes_ant == "00"){
$mes_ant = "12";
$ano_ant = $ano - 1;
}
if($mes_next == 13){
$mes_next = "01";
$ano_next = $ano + 1;
}
$fecha1 = $ano_ant.$mes_ant;
$fecha2 = $ano_next.$mes_next;
if(!$mes_actual){
?>
<a class="pull-left" href="javascript:getMes('<?php echo $fecha1;?>');"><span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span></a>
<a class="pull-right" href="javascript:getMes('<?php echo $fecha2;?>');"><span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span></a>
<?php
}
}
function getEventos($dia,$mes,$ano){
global $fechas;
if($dia<10) $dia = "0".$dia;
if($mes<10) $mes = "0".$mes;
$fecha = $ano.$mes.$dia;
$tiene_eventos = 0;
foreach($fechas as $f){
//if($f["inicio"]<=$fecha AND $f["fin"]>=$fecha){
if($f["inicio"]==$fecha){
$tiene_eventos = 1;
}
}
return $tiene_eventos;
}
function getFechas(){
global $wpdb;
$fechas = Array();
if(is_single()){
$more = " p.ID = $post->ID AND ";
} else {
$more = " ";
}
add_filter('be_events_manager_metabox_override','uuu return_true');
函数绘制日历($month,$year,$link=0){
如果(isset($_GET[“mes”]){
//在需要的事件中询问
$inicio=STROTIME($_GET[“mes”].“01”);
$fin=标准时间(日期(“Y-m-t”,$inicio));
}否则{
//实际发生的事件
$inicio=标准时间(日期(“Ym01”);
$fin=标准时间(日期(“Y-m-t”,$inicio));
}
$eventos=getPostsByFechas($inicio,$fin);
//echo“使用$year-$month绘制日历”;
/*画图台*/
$today=日期(“j”);
$tmes=日期(“n”);
$tano=日期(“Y”);
$calendar='';
/*表格标题*/
$headers=array('LUN','MAR','MIE','JUE','VIE','SAB','DOM');
$calendar.=''。内爆('',$标题)。'';
/*几天几周过去了*/
$init_day=date('w',$initio-60*60*24);///Dia de la semana que empieza el mes(menos uno..PHP sucks)//(0,0,0,$month,1,$year)-1);
$days_in_month=日期('t',mktime(0,0,0,$month,1,$year))//
$days_in_this_week=1;
$day_计数器=0;
$dates_array=array();
/*第一周划船*/
$calendar.='';
/*打印“空白”天数,直到当前星期的第一天*/
对于($x=0;$x<$init_day;$x++)而言:
$calendar.='';
$days_in_this_week++;
endfor;
/*继续前进*/
//打印(事件);
对于($list\u day=1;$list\u day$evento){
//echo$day.“vs.”$evento[“inicio”]。“
”;
如果($day==$evento[“inicio”]){
返回true;
}
}
//模具();
//回声“
”;
返回false;
}
函数头日历($mes\U实际值=“”,$ano\U实际值=“”){
全球500万美元;
?>
(函数($){
window.showEvents=功能(直径、mes){
var fecha=“”;
如果(直径!==null){
fecha=“fecha=”+直径;
}否则如果(mes!==null){
fecha=“mes=”+mes;
}
var url=“../wp admin/admin ajax.php?action=get_eventos&”+fecha;
$(“#eventospordia”).html(“”);
$.ajax({
键入:“获取”,
url:url
}).done(功能(salidahtml){
if($(“#eventospordia”).hasClass(“slick初始化”)){
$(“#eventospordia”).slick('unslick');
}否则{
//偏心滑块
}
$(“#eventospordia”).html(salidahtml);
美元(“#eventospordia”)。光滑({
是的,
幻灯片放映:3,
幻灯片滚动:2,
无限:错
});
getInfoCurso($(“#eventospordia”).find(“li:first child”).attr(“data curso id”);
});
}
window.getMes=函数(fecha_mes){
$(“#日历月”).html(“”);
$.ajax({
键入:“获取”,
url:“../wp admin/admin ajax.php?action=get_mes&mes=“+fecha_mes”
}).done(功能(salidahtml){
$(“#日历月”).html(salidahtml);
$(“#年历”).html(fecha#u mes.substr(0,4));
});
showEvents(空,fecha_mes);
}
window.getInfoCurso=函数(id){
$(“#getinfocurso”).html(“”);
$.ajax({
键入:“获取”,
url:“../wp admin/admin ajax.php?action=get_infocurso&id=“+id”
}).done(功能(salidahtml){
$(“#getinfocurso”).html(salidahtml);
});
}
$(文档).ready(函数(){
showEvents(null,null);
});
})(jQuery);
谢谢!由于其他月份的HTML是由AJAX获取的,您是否也为AJAX查询运行上面的PHP代码?检查我的更新:请不要破坏您的问题。
<?php
function print_my_inline_script() {
?>
<script type="text/javascript">
(function($) {
window.showEvents = function(dia, mes){
var fecha = "";
if ( dia !== null ) {
fecha = "fecha=" + dia;
} else if (mes !== null) {
fecha = "mes=" + mes;
}
var url = "../wp-admin/admin-ajax.php?action=get_eventos&"+fecha;
$("#eventospordia").html("<div class='load'><img src='../wp-content/themes/culinary/assets/img/load.gif'></div>");
$.ajax({
type: "GET",
url: url
}).done(function(salidahtml) {
if ($("#eventospordia").hasClass("slick-initialized")) {
$("#eventospordia").slick('unslick');
} else {
// Iniciar Slider
}
$("#eventospordia").html(salidahtml);
$("#eventospordia").slick({
vertical: true,
slidesToShow: 3,
slidesToScroll: 2,
infinite: false
});
getInfoCurso($("#eventospordia").find("li:first-child").attr("data-curso-id"));
});
}
window.getMes = function(fecha_mes){
$("#calendarmonth").html("<div class='load'><img src='../wp-content/themes/culinary/assets/img/load.gif'></div>");
$.ajax({
type: "GET",
url: "../wp-admin/admin-ajax.php?action=get_mes&mes="+fecha_mes
}).done(function(salidahtml) {
$("#calendarmonth").html(salidahtml);
$("#year_calendar").html(fecha_mes.substr(0, 4));
});
showEvents(null, fecha_mes);
}
window.getInfoCurso = function(id){
$("#getinfocurso").html("<div class='load'><img src='../wp-content/themes/culinary/assets/img/load.gif'></div>");
$.ajax({
type: "GET",
url: "../wp-admin/admin-ajax.php?action=get_infocurso&id="+id
}).done(function(salidahtml) {
$("#getinfocurso").html(salidahtml);
});
}
$(document).ready(function(){
showEvents(null, null);
});
})(jQuery);
</script>