Drupal 7 делаем ссылки на календарь Google используя Date и функцию l()

Замечательные кнопки "Добавить в календарь Google" могут быть очень функциональными для мероприятий, описываемых на вашем сайте:

Чтобы всё получилось нужно:

  • Прочитать официальную с примерами
  • Посмотреть как работает функция l()
  • В каком-нибудь файле шаблона или модуле сформировать ссылку.

В моём примере реализация в файле template.php. Можно использовать , в котором сформировать правильную ссылку и разместить в шаблоне node.tpl.php:

123456
//Формируем картинку$gc_image = theme_image(array(  'path' => '<a href="http://www.google.com/calendar/images/ext/gc_button6.gif',">http://www.google.com/calendar/images/ext/gc_button6.gif',</a>  'alt' => 'add to google calendar',));

Проверим что у нас в поле field_action_dates и сформируем строку с датами в требуемом Google формате:

123456789
if(isset($node->field_action_dates['und'][0])) {  $field = $node->field_action_dates['und'][0]// чтобы Goolge мог правильно выставить время\дату, нужно указывать UTC формат для даты  // Для UTC+4 приходится вычитать 14400 секунд.  $date = format_date(($field['value']-14400),'custom','Ymd\THms\Z',NULL,NULL)if(isset($field['value2'])) {    $date.='/'.format_date(($field['value2']-14400),'custom','Ymd\THms\Z',NULL,NULL)}}

Теперь, пользуясь функцией l() сформируем ссылку на основе дат из поля field_action_dates ():

1234567891011121314151617
$gc_link = l($gc_image,'<a href="http://www.google.com/calendar/event',array">http://www.google.com/calendar/event',array</a>(  'html' => TRUE,  'attributes' => array(    'title' => 'Добавить в ваш календарь Google. Откроется в новом окне.',    'target' => '_blank'  ),  'query' => array(    'action' => 'TEMPLATE',    'text' => $node->title,    'dates'=> $date,    'location' => 'Место сбора',    'sprop' => 'website:<a href="http://www.sitename.com',">http://www.sitename.com',</a>    'details' => 'Описание мероприятия для Календаря.',  ),  ));$vars['calendar_link'] = $gc_link;

Осталось в node.tpl.php вывести переменную $calendar_link.

Комментарии

Sergio, #

А я после многочисленных просьб юзеров добавить Outlook и iCal пользуюсь виджетом "Добавить в календарь" (), чтобы не реализовывать поддержку каждого календаря.

Добавить комментарий

Содержание этого поля является приватным и не предназначено для показа.

Plain text

  • Разрешённые HTML-теги: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.