home

Вставка документов в сайты с помощью oEmbedder

Для вставки документов в сторонние сайты используется Embed-код на основе iframe. Для большинства пользователей этого кода будет достаточно. Владельцы сайтов могут предпочесть более гибкий способ вставки документов библиотеки таких как книги, видео, прямые трансляции и презентации на своих сайтах. Повышение гибкости достигается с помощью бесплатного и открытого модуля oEmbedder для популярных CMS:

Преимущества в установке модуля oEmbedder - отсутствие фиксированных размеров iframe, предотвращение появления скроллбаров у документа и возможность адаптироваться к ширине браузера. Особенно актуальным этот модуль будет для мобильных браузеров.

Для остальных сайтов существует простой способ добавления ресурсов на внешние сайты с помощью скрипта JavaScript.

Примеры встроенного контента[править]

С помощью JavaScript на хостинге blogspot: http://elis-demo.blogspot.com

Модуль для WordPress: http://wordpress.elibsystem.ru

Модуль для Joomla!: http://joomla.elibsystem.ru

Самостоятельная реализация коннектора[править]

Конечной точкой (endpoint) протокола в ELiS является /oembedder. Т.е. https://elis.example.com/oembedder.

Пример:

Бывают задачи, когда ресурсы в ELiS надо собрать и встроить в сторонних системах.

В ELiS для этого есть поддержка протоколов и собственное API. Далее рассказывается как именно можно программным путем собрать ресурсы в ELiS и встроить в сторонние сайты.

Задача разделяется на:

  • извлечение метаданных;
  • скачивание ресурсов;
  • встраивание ресурсов;
  • создание аккаунтов и авторизация пользователей;
  • сбор статистики.

Извлечение метаданных[править]

OAI-PMH[править]

Метаданные в ELiS можно получить по протоколу OAI-PMH.

Документация: https://elibsystem.ru/docs/oai-pmh

OAI-PMH позволяет получить в XML все добавленные ресурсы за определенный промежуток времени в формате метаданных Dublin Core.

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

Все ресурсы ELiS имеют шаблон https?://elis.example.com/node/\d+. Т.е. содержат в URI идентификатор ноды (ресурса). Например https://elis.example.com/node/12345.

Если вам нужны еще какие-то метаданные, получить их можно добавлением /info к URI ресурса, т.е. по шаблону https://elis.example.com/node/\d+/info вы получите доступ к служебному отображению ресурса в Drupal7 и всем связанным полям.

Endpoint: https://elis.example.com/elis/oai.

OPDS[править]

Вы можете последовательно извлечь все ноды главного каталога по протоколу OPDS.

Документация: https://elibsystem.ru/docs/opds

Endpoint: https://elis.example.com/opds.

Скачивание ресурса[править]

Возможность скачивания ресурса может ограничиваться правами доступа. В некоторых случаях ссылка для скачивания дается по OAI-PMH.

Встраивание ресурсов[править]

два способа:

  • добавление /embed к идентификатору ноды;
  • использование протокола oEmbed.

Встраивание добавлением /embed к URL[править]

Для встраивания с помощью /embed надо просто к любому URL добавить /embed и указать получившийся URL в iframe. Частая проблема при встраивании в iframe - не известна оптимальная высота ресурсов. Здесь следует обращать внимание на тип ноды. Ноды типа презентации, видео и трансляций имеют соотношение сторон контента 16/9 + высота панели и именно так можно попытаться рассчитать высоту iframe зная тип ресурса. Для большинства остальных ресурсов можно выбрать любую высоту.

Тип ресурса можно извлечь во время сканирования метаданных. Откройте плеер нужного типа и посмотрите код вставки как пример, который вам можно реализовать во внешней системе.

Встраивание с помощью oEmbed[править]

Протокол oEmbed позволяет отправить запросы на специальный endpoint и попросить код вставки для ресурса по некоторому URL.

В ELiS oEmbed endpoint является '/oembedder', а в качестве URL надо запрашивать ресурс в виде https://elis.example.com/node/12345.

Endpoint: https://elis.example.com/oembedder

Пример запроса:

https://elis.psu.ru/oembedder?maxwidth=616px&format=jsonp&callback=generatedcallback&url=https%3A%2F%2Felis.psu.ru%2Fnode%2F510014