Làm cách nào để tạo liên kết để thêm mục nhập vào lịch?


85

Tôi đang làm việc cho câu lạc bộ đêm này và hiện đang tạo một trang web cho họ, họ có rất nhiều sự kiện và trang của họ được xây dựng rất nhiều về các sự kiện, hôm nay họ tạo sự kiện trên facebook cho mọi sự kiện nhưng sẽ là điều giết người nếu có một " Thêm vào Lịch của tôi "đã thêm nó vào iCal hoặc Lịch Google của bạn (hoặc thậm chí có thể là Outlook).

Tôi đã cố gắng tìm ra cách tạo nguồn cấp dữ liệu lịch nhưng sau đó nó sẽ được thêm vào dưới dạng lịch mới, chỉ có điều tốt là mọi người có thể "đăng ký sự kiện" nhưng khá lộn xộn khi có lịch cho mọi sự kiện. Vì vậy, tôi muốn biết cách triển khai một chức năng cho phép họ thêm nó vào lịch chính của họ một cách dễ dàng. Hãy suy nghĩ như một liên kết mailto: nhưng đối với lịch nếu có thể.

Ngoài ra, trong khi tôi đang nói về chủ đề này, có ai biết liệu có thể tự động nhập một sự kiện từ Facebook sang WordPress hoặc xuất một sự kiện từ WordPress sang Facebook hay không, nhưng điều đó không quá quan trọng.


Câu trả lời:


53

CẬP NHẬT (miễn phí cho mục đích sử dụng cá nhân):
HTTPS BÂY GIỜ ĐƯỢC HỖ TRỢ

Mặc dù câu trả lời của tôi dưới đây nêu chi tiết cách thực hiện cho từng dịch vụ SẼ hoạt động, IMO giờ đây dễ dàng hơn nhiều khi sử dụng bên thứ ba như AddThisEvent [https://addthisevent.com] . Nó cho phép bạn tùy chỉnh nhiều tùy chọn cũng như thêm vào Facebook và hơn thế nữa. Thật không may, bây giờ họ đã biến nó thành một dịch vụ trả phí cho bất kỳ thứ gì khác ngoài mục đích sử dụng cá nhân và thực thi điều này.

Tôi cho rằng có các giải pháp của bên thứ ba khác như giải pháp này, nhưng tôi chỉ có thể nói chuyện với giải pháp này và nó đã hoạt động rất hiệu quả cho chúng tôi cho đến nay.


Đối với " Thêm vào Lịch Google của tôi ", họ đã từng có một biểu mẫu tạo mã mà bạn có thể sử dụng, nhưng sau đó đã gỡ xuống. Để biết thêm chi tiết về các liên kết Lịch Google, hãy xem câu trả lời của squarecandy bên dưới .

Đối với Outlook , đó là một BIT phức tạp hơn, nhưng về cơ bản bạn cần tạo một .vcstệp với dữ liệu của sự kiện và chỉ cần tạo một liên kết đến tệp đó. Hướng dẫn từng bước tại đây .

Đối với liên kết iCal , bạn có thể sử dụng lớp PHP như lớp này hoặc làm theo hướng dẫn trên trang này về cách tạo icstệp (tệp iCal).


13
Cảm ơn, tệ là không có tiêu chuẩn chung cho điều này như với mailto: cho email.
Hultner

Có vẻ như trang "Hướng dẫn dành cho nhà xuất bản sự kiện" của Google không còn cung cấp biểu mẫu tạo URL đó nữa (rất tiếc là bản chất của tài liệu của Google không ngừng thay đổi), nhưng định dạng URL của @ squarecandy vẫn hoạt động tốt (ít nhất là đối với Lịch Google)!
chbrown

Vâng, biểu mẫu của chính họ thậm chí còn không tạo ra các liên kết hoạt động, vì vậy đó có thể là lý do tại sao họ gỡ bỏ nó. :)
squarecandy

94

Các liên kết trong bài đăng của Dave rất tuyệt. Chỉ cần đặt một vài chi tiết kỹ thuật về các liên kết google thành câu trả lời ở đây trên SO:

Liên kết Lịch 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>

các tham số là:

  • action = TEMPLATE (bắt buộc)
  • văn bản (tên được mã hóa url của sự kiện)
  • ngày tháng (định dạng ngày ISO, ngày bắt đầu / ngày kết thúc - phải có cả thời gian bắt đầu và kết thúc - trình tạo nút sẽ cho phép bạn để trống thời gian kết thúc, nhưng bạn phải có một hoặc nó sẽ không hoạt động.)
    • để sử dụng múi giờ của người dùng: 20131208T160000 / 20131208T180000
    • để sử dụng giờ toàn cầu, hãy chuyển đổi sang UTC, sau đó sử dụng 20131208T160000Z / 20131208T180000Z
    • tất cả các sự kiện trong ngày, bạn có thể sử dụng 20131208/20131209 - lưu ý rằng trình tạo nút bị sai. Bạn phải sử dụng ngày sau làm ngày kết thúc cho một sự kiện cả ngày hoặc +1 ngày cho bất kỳ ngày nào bạn muốn là ngày kết thúc.
  • chi tiết (mô tả / chi tiết sự kiện được mã hóa url)
  • vị trí (vị trí được mã hóa url của sự kiện - đảm bảo rằng đó là địa chỉ mà bản đồ google có thể đọc dễ dàng)

Cập nhật tháng 2 năm 2018:

Đây là cấu trúc liên kết mới dường như hỗ trợ phiên bản google mới của lịch google với yêu cầu tương tác 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 cơ sở mới: https://calendar.google.com/calendar/r/eventedit

Các thông số mới:

  • văn bản (tên của sự kiện)
  • ngày tháng (định dạng ngày ISO, ngày bắt đầu / ngày kết thúc - phải có cả thời gian bắt đầu và kết thúc)
    • một sự kiện với thời gian bắt đầu / kết thúc: 20131208T160000 / 20131208T180000
    • sự kiện cả ngày, bạn có thể sử dụng 20131208/20131209 - ngày kết thúc phải là ngày +1 đối với bất kỳ ngày nào bạn muốn ngày kết thúc .
  • ctz ( múi giờ chẳng hạn như America / New_York - để trống để sử dụng múi giờ mặc định của người dùng. Bạn nên đưa múi giờ này vào hầu hết các trường hợp. Ví dụ: lời nhắc cho hội nghị truyền hình: nếu ba người ở các múi giờ khác nhau nhấp vào liên kết này và đặt lời nhắc cho "riêng" thứ Ba lúc 10:00 sáng, điều này sẽ không diễn ra tốt đẹp.)
  • chi tiết (mô tả / chi tiết sự kiện được mã hóa url)
  • vị trí (vị trí được mã hóa url của sự kiện - đảm bảo rằng đó là địa chỉ mà bản đồ google có thể đọc dễ dàng)
  • thêm (danh sách email được phân tách bằng dấu phẩy - thêm khách vào sự kiện mới của bạn)

Ghi chú:

  • cấu trúc url cũ ở trên hiện chuyển hướng đến đây
  • hỗ trợ https
  • giao dịch w / múi giờ tốt hơn
  • chấp nhận +cho không gian thêm vào %20( urlencodeso với rawurlencodetrong php - cả hai đều hoạt động)

2
Nếu bất cứ ai đang quan tâm, tôi tạo ra một hàm php mà sẽ xây dựng loại liên kết này google lịch: gist.github.com/squarecandy/26611bbcfc63f9c7e3a7dc45e9145133
squarecandy

2
Cũng cần lưu ý rằng múi giờ không được đặt cho tôi, trừ khi tôi chỉ định cả ngày múi giờ VÀ thông số ctz. Thông tin thêm tại đây: zaclee.net/php/…
Zachary Schuessler

@squarecandy có bất kỳ ý tưởng nào về cách lấy điều này để đặt nhiều ngày cùng một lúc không? Ví dụ: nếu bạn có phạm vi như Thứ Ba - Thứ Năm, nhưng muốn hiển thị phạm vi đó trong lịch dưới dạng 3 sự kiện riêng biệt?
garek007

@ garek007 Tôi không nghĩ là có thể. Đó sẽ phải là 3 sự kiện khác nhau. Nếu có một nhiệm vụ mà bạn không thể thực hiện trên màn hình "thêm sự kiện" phiên bản trực tuyến của lịch google, bạn không thể sử dụng kỹ thuật này cho nó. Bạn có thể tìm ra cách thêm 3 sự kiện cùng lúc với API Lịch Google, nhưng điều này chỉ liên kết đến "thêm sự kiện" cho một sự kiện duy nhất.
squarecandy

@squarecandy Tôi cũng muốn cập nhật trình tổ chức, có cách nào sử dụng để tôi có thể thêm thông tin chi tiết về người tổ chức, trong liên kết tạo sự kiện này không?
Nikunj Undhad

11

Để thêm vào đóng góp lịch google của squarecandy, đây là nhãn hiệu mới

Định dạng LỊCH OUTLOOK (Không cần tạo .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>

kiểm tra nó

Tốt nhất là url_encode các giá trị của biến tóm tắt, vị trí và mô tả.

Vì lợi ích của kiến ​​thức,

YAHOO CALENDAR định dạng

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

kiểm tra nó

Làm điều đó mà không có bên thứ ba có rất nhiều lợi thế, chẳng hạn như sử dụng nó trong email.


7
Có vẻ như liên kết cho Outlook không thực sự hoạt động nữa. Nó thêm vị trí và hiển thị biểu mẫu Sự kiện mới, nhưng không điền vào bất kỳ trường nào khác.
Steve

10
Để mở rộng nhận xét của @ Steve, liên kết Outlook thậm chí không phân giải đến máy chủ nữa - Tôi gặp lỗi phân giải DNS.
Owen Blacker

4
Xin lỗi, câu trả lời này cần được cập nhật để có giá trị, đã bị phản đối.
webaholik

8

Đây là một dịch vụ Thêm vào Lịch để phục vụ mục đích thêm sự kiện vào

  1. Lịch Apple
  2. lịch Google
  3. Quan điểm
  4. Outlook Online
  5. Yahoo! Lịch

Nút " Thêm vào Lịch " cho các sự kiện trên trang web và lịch rất dễ cài đặt, không phụ thuộc vào ngôn ngữ, múi giờ và tương thích với DST. Nó hoạt động hoàn hảo trên tất cả các trình duyệt, máy tính bảng và thiết bị di động hiện đại cũng như với Lịch Apple, Lịch Google, Outlook, Outlook.com và Lịch Yahoo.

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

nhập mô tả hình ảnh ở đây


1
Hoàn toàn tuyệt vời. Khá giống với addevent.com nhưng tôi nghĩ thậm chí có nhiều tùy chọn tạo kiểu hơn và nó đã được MIT cấp phép! Do đó đây chắc chắn là sự lựa chọn của tôi. Cảm ơn vì liên kết đó.
Arvid

9
Điều này hiện đã được hợp nhất với addevent.com
Separatrix

-4

Bạn có thể yêu cầu chương trình tạo phiên bản .ics (iCal) của lịch và sau đó bạn có thể nhập .ics này vào bất kỳ chương trình lịch nào bạn muốn: Google, Outlook, v.v.

Tôi biết bài đăng này khá cũ, vì vậy tôi sẽ không bận tâm nhập bất kỳ mã nào. Nhưng hãy bình luận về điều này nếu bạn muốn tôi cung cấp phác thảo về cách thực hiện việc này.


7
Tôi thực sự sẽ đánh giá cao một ví dụ về mã này nếu bạn có thể, cố gắng thực hiện chính xác điều này với Outlook, Gmail và iCal
KidCache
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.