Как создать ссылку для добавления записи в календарь?

85

Я работаю в этом ночном клубе и в настоящее время делаю для них веб-сайт, у них много мероприятий, и их сайт во многом построен на мероприятиях, сегодня они делают событие в facebook для каждого мероприятия, но было бы убийственно иметь " Добавить в мой календарь », которая добавила его в ваш iCal или Google Calendar (или, возможно, даже в Outlook).

Мне удалось придумать, как создать ленту календаря, но затем он будет добавлен как новый календарь, хорошо только то, что люди могут «подписываться на события», но иметь календарь для каждого события довольно беспорядочно. Поэтому я хотел бы знать, как реализовать функцию, которая позволяет легко добавлять ее в свой основной календарь. Подумайте, как ссылка mailto :, но если это возможно, для календарей.

Кроме того, пока я говорю об этой теме, знает ли кто-нибудь, можно ли автоматически импортировать событие из Facebook в WordPress или экспортировать событие из WordPress в Facebook, что было бы здорово, но это не так важно.

Hultner
источник
Связанный: stackoverflow.com/questions/22757908/…
Denilson Sá Maia

Ответы:

53

ОБНОВЛЕНИЕ (бесплатно для личного использования):
ТЕПЕРЬ ПОДДЕРЖИВАЕТСЯ HTTPS

В то время как мой ответ ниже, в котором подробно описаны инструкции для каждой службы, БУДЕТ работать, ИМО, теперь намного проще использовать стороннюю организацию, такую ​​как AddThisEvent [https://addthisevent.com] . Он позволяет настраивать множество параметров, а также добавлять в Facebook и многое другое. К сожалению, теперь они сделали это платной услугой для чего-либо, кроме личного использования, и добиваются этого.

Я предполагаю, что есть и другие сторонние решения, подобные этому, но я могу говорить только с этим, и до сих пор оно отлично работало для нас.


Для « Добавить в мой Календарь Google » у них была форма генератора кода, которую вы могли использовать, но с тех пор они ее удалили. Подробнее о ссылках на Календарь Google см. В ответе squarecandy ниже .

Для Outlook это немного сложнее, но в основном вам нужно создать .vcsфайл с данными события и просто сделать ссылку на этот файл. Пошаговая инструкция здесь .

Для ссылки iCal вы можете использовать класс PHP, подобный этому , или следовать инструкциям на этой странице о том, как создать icsфайл (файл iCal).

Дэйв
источник
14
Спасибо, что плохо, что для этого нет универсального стандарта, как в случае с mailto: для электронной почты.
Hultner
Кажется, что страница Google «Руководство для издателей мероприятий» больше не предлагает эту форму для генерации URL (к сожалению, в документации Google есть постоянные изменения), но формат URL @ squarecandy по-прежнему работает нормально (по крайней мере, для Календаря Google)!
chbrown 02
Ну, их собственная форма даже не генерировала ссылки, которые работали, поэтому, вероятно, они ее и удалили. :)
squarecandy
94

Ссылки в посте Дэйва отличные. Просто чтобы добавить несколько технических подробностей о ссылках Google в ответ здесь, на SO:

Ссылка на Календарь Google

<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>

параметры:

  • action = TEMPLATE (обязательно)
  • текст (название мероприятия в кодировке url)
  • даты (формат даты ISO, начальная / конечная дата - должно иметь как время начала, так и время окончания - генератор кнопок позволит вам оставить поле времени пустым, но оно должно быть у вас, иначе оно не будет работать.)
    • использовать часовой пояс пользователя: 20131208T160000 / 20131208T180000
    • чтобы использовать глобальное время, конвертируйте в UTC, затем используйте 20131208T160000Z / 20131208T180000Z
    • события дня, вы можете использовать 20131208/20131209 - обратите внимание, что генератор кнопок ошибается. Вы должны использовать следующую дату в качестве даты окончания для однодневного мероприятия на весь день или +1 день к любой дате окончания, которую вы хотите.
  • подробности (описание / детали события в кодировке URL)
  • местоположение (местоположение события в кодировке URL-адреса - убедитесь, что это адрес, который можно легко прочитать на картах Google)

Обновление февраля 2018:

Вот новая структура ссылок, которая, похоже, поддерживает новую версию календаря Google без необходимости взаимодействия с 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

Новый базовый URL: https://calendar.google.com/calendar/r/eventedit

Новые параметры:

  • текст (название мероприятия)
  • даты (формат даты ISO, начальная / конечная дата - должно иметь как время начала, так и время окончания)
    • событие с временем начала / окончания: 20131208T160000 / 20131208T180000
    • события на весь день, вы можете использовать 20131208/20131209 - дата окончания должна быть +1 день к любой дате окончания, которую вы хотите .
  • ctz ( часовой пояс, например America / New_York - оставьте поле пустым, чтобы использовать часовой пояс пользователя по умолчанию. Настоятельно рекомендуется включать его почти во всех ситуациях. Например, напоминание для видеоконференции: если три человека в разных часовых поясах щелкнули эту ссылку и установили напоминание на «свой» вторник в 10:00, это не сработает.)
  • подробности (описание / детали события в кодировке URL)
  • местоположение (местоположение события в кодировке URL-адреса - убедитесь, что это адрес, который можно легко прочитать на картах Google)
  • добавить (список писем, разделенных запятыми - добавляет гостей на ваше новое мероприятие)

Ноты:

  • старая структура URL-адресов выше теперь перенаправляется сюда
  • поддерживает https
  • сделки с часовыми поясами лучше
  • принимает +пространство в дополнение к %20( urlencodevs rawurlencodeв php - оба работают)
квадратные конфеты
источник
2
Если кому-то интересно, я создал функцию php, которая будет строить этот тип ссылки календаря Google: gist.github.com/squarecandy/26611bbcfc63f9c7e3a7dc45e9145133
squarecandy
2
Также стоит отметить, что часовой пояс для меня не устанавливается, если я не укажу как даты часового пояса, так и параметр ctz. Подробнее здесь: zaclee.net/php/…
Захари Шюсслер
@squarecandy есть идеи, как заставить это установить сразу несколько дат? Например, если у вас есть диапазон вроде вторника по четверг, но вы хотите показать его в календаре как 3 отдельных события?
garek007 07
@ garek007 Я не думаю, что это возможно. Это должно быть 3 разных события. Если есть задача, которую вы не можете выполнить в онлайн-версии экрана «Добавить событие» календаря Google, вы не можете использовать эту технику для этого. Вероятно, вы могли бы понять, как добавить 3 события одновременно с помощью Google Calendar API, но это просто ссылка на «добавить событие» для одного события.
squarecandy
@squarecandy Я тоже хочу обновить органайзер, есть ли способ, с помощью которого я могу добавить данные организатора в эту ссылку создания мероприятия?
Никундж Ундхад
12

Чтобы добавить в календарь Google Squarecandy, вот новый

Формат OUTLOOK CALENDAR (без необходимости создавать .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>

Проверь это

Лучше всего было бы url_encode значения переменных резюме, местоположения и описания.

Ради познания,

Формат YAHOO КАЛЕНДАРЬ

<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>

Проверь это

Выполнение этого без участия третьей стороны дает множество преимуществ, например, использование его в электронных письмах.

Эл. адрес
источник
7
Похоже, ссылка на Outlook больше не работает. Он добавляет местоположение и вызывает форму нового события, но не заполняет никаких других полей.
Стив
10
Чтобы расширить комментарий @Steve, ссылка Outlook даже больше не разрешается на сервер - я получаю ошибку разрешения DNS.
Оуэн Блэкер
4
Извините, этот ответ необходимо обновить, чтобы он был действительным и был отклонен.
webaholik
8

Вот сервис « Добавить в календарь», который служит для добавления события в

  1. Календарь Apple
  2. Календарь Google
  3. Outlook
  4. Outlook Online
  5. Yahoo! Календарь

Кнопка « Добавить в календарь » для событий на веб-сайтах и ​​в календарях проста в установке, не зависит от языка, часового пояса и летнего времени. Он отлично работает во всех современных браузерах, планшетах и ​​мобильных устройствах, а также с Apple Calendar, Google Calendar, Outlook, Outlook.com и 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>

введите описание изображения здесь

jGupta
источник
1
Абсолютно здорово. Очень похоже на addevent.com, но, думаю, еще больше вариантов стиля, и он лицензирован MIT! Поэтому это определенно мой выбор. Спасибо за ссылку.
Arvid
9
Теперь это слилось с addevent.com
Separatrix
-4

Вы можете сделать так, чтобы программа создала версию календаря .ics (iCal), а затем вы можете импортировать этот .ics в любую программу-календарь, которая вам нужна: Google, Outlook и т. Д.

Я знаю, что этот пост довольно старый, поэтому я не буду вводить код. Но, пожалуйста, прокомментируйте это, если вы хотите, чтобы я рассказал, как это сделать.

Fishcx
источник
7
Я был бы очень признателен за пример этого кода, если вы можете, пытаясь сделать именно это с Outlook, Gmail и iCal
KidCache