web-dev-qa-db-fra.com

Comment créer un lien pour ajouter une entrée à un calendrier?

Je travaille pour cette boîte de nuit et je crée actuellement un site Web pour eux. Ils ont beaucoup d'événements et leur site est construit autour d'événements. Aujourd'hui, ils font un événement facebook pour chaque événement, mais ce serait une tuerie " Ajouter à mon agenda "qui l'a ajouté à votre calendrier iCal ou Google (ou peut-être même à Outlook).

J'ai réussi à comprendre comment créer un fil de calendrier, mais celui-ci sera ajouté en tant que nouveau calendrier. Le seul avantage, c'est que les gens peuvent "s'abonner à des événements", mais il est assez compliqué d'avoir un calendrier pour chaque événement. Je voudrais donc savoir comment implémenter une fonction qui leur permet de l'ajouter facilement à leur calendrier principal. Pensez comme un mailto: lien mais pour les calendriers si cela est possible.

Aussi, pendant que je suis au sujet, si quelqu'un sait s'il est possible d'importer automatiquement un événement de Facebook vers WordPress ou d'exporter un événement de WordPress vers Facebook qui ce serait génial, mais ce n'est pas si important.

60
Hultner

UPDATE (gratuit pour un usage personnel):
HTTPS IS MAINTENANT PRIS EN CHARGE

Tandis que ma réponse ci-dessous expliquant comment faire pour chaque service fonctionnera, IMO est beaucoup plus facile maintenant de faire appel à un tiers tel que AddThisEvent [https://addthisevent.com] . Il vous permet de personnaliser de nombreuses options, d’ajouter à Facebook et plus encore. Malheureusement, ils en ont désormais fait un service payant pour tout autre usage que leur usage personnel et le font respecter.

Je suppose qu'il existe d'autres solutions tierces comme celle-ci, mais je ne peux parler que de celle-ci, et cela a très bien fonctionné pour nous jusqu'à présent.


Pour un " Ajouter à mon agenda Google ", ils utilisaient un formulaire générateur de code que vous pourriez utiliser, mais que vous avez supprimé depuis. Pour plus de détails sur les liens de Google Agenda, voir réponse de squarecandy ci-dessous .

Pour Outlook , c'est un peu plus compliqué, mais en gros, vous devez créer un .vcs fichier avec les données de l'événement, et faites juste un lien vers ce fichier. Instructions pas à pas ici .

Pour un lien iCal , vous pouvez utiliser un PHP class comme celui-ci , ou suivez instructions de cette page pour créer un fichier ics (fichier iCal).

47
Dave

Les liens dans le post de Dave sont super. Juste pour mettre quelques détails techniques sur les liens Google dans une réponse ici sur SO:

Lien Google Agenda

<a href="http://www.google.com/calendar/event?action=TEMPLATE&text=Example%20Event&dates=20131124T010000Z/20131124T020000Z&details=Event%20Details%20Here&location=123%20Main%20St%2C%20Example%2C%20NY">Add to gCal</a>

les paramètres étant:

  • action = TEMPLATE (requis)
  • texte (nom encodé de l'événement en url)
  • dates (format de date ISO, date de début/date de fin - doit avoir à la fois l'heure de début et l'heure de fin - le générateur de boutons vous laissera vide, mais vous devez en avoir un sinon il ne fonctionnera pas.)
    • utiliser le fuseau horaire de l'utilisateur: 20131208T160000/20131208T180000
    • pour utiliser l'heure globale, convertir en UTC, puis utiliser 20131208T160000Z/20131208T180000Z
    • tous les événements de la journée, vous pouvez utiliser 20131208/20131209 - notez que le générateur de boutons se trompe. Vous devez utiliser la date suivante comme date de fin pour un événement d'une journée, ou +1 pour ce que vous souhaitez que la date de fin soit.
  • détails (description/détails de l'événement encodés dans l'URL)
  • location (emplacement encodé de l'URL de l'événement - assurez-vous qu'il s'agit d'une adresse lisible facilement par Google Maps)

Mise à jour février 2018:

Voici une nouvelle structure de liens qui semble prendre en charge la nouvelle version google du calendrier Google sans nécessiter d'interaction avec l'API:

https://calendar.google.com/calendar/r/eventedit?text=My+Custom+Event&dates=20180512T230000Z/20180513T030000Z&details=For+details,+link+here:+https://example.com/tickets-43251101208&location=Garage+Boston+-+20+Linden+Street+-+Allston,+MA+02134

Nouvelle URL de base: https://calendar.google.com/calendar/r/eventedit

Nouveaux paramètres:

  • text (nom de l'événement)
  • dates (format de date ISO, date de début/date de fin - must avoir les heures de début et de fin)
    • un événement avec les heures de début et de fin: 20131208T160000/20131208T180000
    • tous les jours, vous pouvez utiliser 20131208/20131209 - la date de fin doit correspondre à +1 jour pour la date de fin souhaitée.
  • ctz ( fuseau horaire tel que America/New_York - laissez le champ vide pour utiliser le fuseau horaire par défaut de l'utilisateur. Fortement recommandé de l'inclure dans presque toutes les situations. Par exemple, un rappel pour une vidéoconférence: si trois personnes dans différentes Les fuseaux horaires ont cliqué sur ce lien et paramétré un rappel pour leur "propre" mardi à 10h00, cela ne fonctionnerait pas bien.)
  • détails (description/détails de l'événement encodés dans l'URL)
  • location (emplacement encodé de l'URL de l'événement - assurez-vous qu'il s'agit d'une adresse lisible facilement par Google Maps)
  • add (liste d'emails séparés par des virgules - ajoute des invités à votre nouvel événement)

Remarques:

  • l'ancienne structure d'URL ci-dessus redirige maintenant ici
  • prend en charge https
  • traite mieux avec les fuseaux horaires
  • accepte + pour l'espace en plus de %20 (urlencode vs rawurlencode en php - les deux fonctionnent)
74
squarecandy

Pour ajouter à la contribution du calendrier Google de squarecandy, voici la nouvelle

Outlook CALENDAR format (sans qu'il soit nécessaire de créer un fichier .ics) !!

<a href="https://bay02.calendar.live.com/calendar/calendar.aspx?rru=addevent&dtstart=20151119T140000Z&dtend=20151119T160000Z&summary=Summary+of+the+event&location=Location+of+the+event&description=example+text.&allday=false&uid=">add to Outlook calendar</a>

testez-le

Le mieux serait d’url_encoder les valeurs de la variable summary, location et description.

Pour le savoir,

CALENDRIER YAHOO format

<a href="https://calendar.yahoo.com/?v=60&view=d&type=20&title=Summary+of+the+event&st=20151119T090000&et=20151119T110000&desc=example+text.%0A%0AThis+is+the+text+entered+in+the+event+description+field.&in_loc=Location+of+the+event&uid=">add to Yahoo calendar</a>

testez-le

Le faire sans tierce partie présente de nombreux avantages, par exemple l’utiliser dans des courriels.

10
Email

Voici un service Ajouter au calendrier servant à l'ajout d'un événement sur

  1. Calendrier Apple
  2. Google Agenda
  3. Perspective
  4. Outlook en ligne
  5. Yahoo! Calendrier

Le bouton " Ajouter au calendrier " pour les événements sur les sites Web et les calendriers est facile à installer, indépendant de la langue, du fuseau horaire et compatible DST. Il fonctionne parfaitement avec tous les navigateurs, tablettes et appareils mobiles modernes, et avec Apple Calendrier, Google Agenda, Outlook, Outlook.com et Yahoo Calendar.

<div title="Add to Calendar" class="addeventatc">
    Add to Calendar
    <span class="start">03/01/2018 08:00 AM</span>
    <span class="end">03/01/2018 10:00 AM</span>
    <span class="timezone">America/Los_Angeles</span>
    <span class="title">Summary of the event</span>
    <span class="description">Description of the event</span>
    <span class="location">Location of the event</span>
</div>

enter image description here

8
jGupta

Vous pouvez demander au programme de créer une version .ics (iCal) du calendrier, puis d'importer ces fichiers .ics dans le programme de calendrier de votre choix: Google, Outlook, etc.

Je sais que ce post est assez ancien, je ne vais donc pas m'embêter à saisir du code. Mais veuillez commenter si vous souhaitez que je vous explique comment procéder.

0
fishcx

Comme vous l'avez dit, l'avantage d'un abonnement à votre calendrier d'événements est que vous pouvez modifier les dates/heures/informations et qu'elles devraient être répercutées sur tous vos abonnés. Pourquoi créez-vous un calendrier distinct pour chaque événement au lieu d'un?

Connaissez-vous les API pour Google Agenda et Facebook?

En ce qui concerne la dernière question, avez-vous l’intention de maintenir deux flux d’événements distincts sur Wordpress et Facebook? Vous pourriez avoir Wordpress récupérer le flux de Facebook. Peut-être que certains sorte d'événements Le CMS qui publie sur Facebook met à jour le Wordpress feed?

0
oblig

Si vous cherchez quelque chose de vraiment simple, vous pouvez utiliser ce widget http://addthisevent.com/ . Cela fonctionne vraiment bien et simple à mettre en œuvre. Je sais que c'est vieux mais juste si quelqu'un regarde.

0
user1063135