Hola a todos:
Si mostramos eventos en una página web puede ser interesante añadir un botón para que el visitante pueda pinchando en el añadir el evento a su calendario en google calendar.
He creado una función en php que nos permite de forma sencilla crear la url necesaria para crear el enlace que nos cree el evento en google calendar:
<?php /******************************************************************** * Función getGCalendar (Eduardo Revilla Vaquero) * * Genera url para la creación de un evento en google calendar. * *********************************************************************/ function getGCalendarUrl($event){ $titulo = urlencode($event['titulo']); $descripcion = urlencode($event['descripcion']); $localizacion = urlencode($event['localizacion']); $start=new DateTime($event['fecha_inicio'].' '.$event['hora_inicio'].' '.date_default_timezone_get()); $end=new DateTime($event['fecha_fin'].' '.$event['hora_fin'].' '.date_default_timezone_get()); $dates = urlencode($start->format("Ymd\THis")) . "/" . urlencode($end->format("Ymd\THis")); $name = urlencode($event['nombre']); $url = urlencode($event['url']); $gCalUrl = "http://www.google.com/calendar/event?action=TEMPLATE&text=$titulo&dates=$dates&details=$descripcion&location=$localizacion&trp=false&sprop=$url&sprop=name:$name"; return ($gCalUrl); }
La función recibe como parámetro un array asociativo con los campos necesarios para crear el evento.
Un ejemplo del array sería este:
$evento = array( 'titulo' => 'Mi evento de prueba', 'descripcion' => 'Descripcion del evento de prueba', 'localizacion' => 'Aqui ponemos la dirección donde se celebra el evento', 'fecha_inicio' => '2014-04-10', // Fecha de inicio de evento en formato AAAA-MM-DD 'hora_inicio'=>'17:30', // Hora Inicio del evento 'fecha_fin'=>'2014-04-12', // Fecha de fin de evento en formato AAAA-MM-DD 'hora_fin'=>'19:00', // Hora final del evento 'nombre'=>'ReviBlog', // Nombre del sitio 'url'=>'www.reviblog.net' // Url de la página );
Ahora solo nos queda crear el link en html asignandole la url devuelta por la función getGCalendarUrl:
<a href="<?php echo getGCalendarUrl($evento); ?>"><img src="http://www.google.com/calendar/images/ext/gc_button6_es.gif" border="0"></a>
Para probarlo puedes crear un archivo php y pegar el siguiente código donde todo junto quedaria así:
<?php /******************************************************************** * Función getGCalendar (Eduardo Revilla Vaquero) * * Genera url para la creación de un evento en google calendar. * *********************************************************************/function getGCalendarUrl($event){ $titulo = urlencode($event['titulo']); $descripcion = urlencode($event['descripcion']); $localizacion = urlencode($event['localizacion']); $start=new DateTime($event['fecha_inicio'].' '.$event['hora_inicio'].' '.date_default_timezone_get()); $end=new DateTime($event['fecha_fin'].' '.$event['hora_fin'].' '.date_default_timezone_get()); $dates = urlencode($start->format("Ymd\THis")) . "/" . urlencode($end->format("Ymd\THis")); $name = urlencode($event['nombre']); $url = urlencode($event['url']); $gCalUrl = "http://www.google.com/calendar/event?action=TEMPLATE&text=$titulo&dates=$dates&details=$descripcion&location=$localizacion&trp=false&sprop=$url&sprop=name:$name"; return ($gCalUrl); } // array asociativo con los parametros mecesarios. $evento = array( 'titulo' => 'Mi evento de prueba', 'descripcion' => 'Descripcion del evento de prueba', 'localizacion' => 'Aqui ponemos la dirección donde se celebra el evento', 'fecha_inicio' => '2014-04-10', // Fecha de inicio de evento en formato AAAA-MM-DD 'hora_inicio'=>'17:30', // Hora Inicio del evento 'fecha_fin'=>'2014-04-12', // Fecha de fin de evento en formato AAAA-MM-DD 'hora_fin'=>'19:00', // Hora final del evento 'nombre'=>'ReviBlog', // Nombre del sitio 'url'=>'www.reviblog.net' // Url de la página ); ?> <a href="<?php echo getGCalendarUrl($evento); ?>"><img src="http://www.google.com/calendar/images/ext/gc_button6_es.gif" border="0"></a>
Este código nos generará un botón como este:
Espero que sea de utilidad.