Виджет для вывода контента с другого сайта InstantCMS (через JSON API) 2.X

1116
Приветствую,

Виджет умеет выводить список контента, который получен с другого сайта InstantCMS через JSON API (бесплатный компонент, который должен быть установлен на сайте источнике).

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



В отличии от RSS виджета, в котором просто указывается адрес канала, тут можно фильтровать записи по категории и наборам. И выводить поля, которые могут не попадать в RSS.

Поддерживает фильтр по категории, наборы, вывод иллюстраций и других полей.


Порядок работы:

1. Установить на сайте источнике компонент InstantCMS JSON API (он нужен для отправки контента на тот сайт, который будет его выводить)

2. В настройках InstantCMS JSON API создать ключ API. Если это чужой сайт и у вас нет к нему доступа, тогда запросить эти данные (если владелец сайта не против выводить свой контент у вас)

3. Добавить в нужное место шаблона виджет «Список контента (API)» — он находится на вкладке «Контент», рядом со стандартным виджетом «Список контента»

4. В настройках виджета указать домен и ключ сайта источника в формате "http://site.com:111222333" — где 111222333 это API ключ созданный на втором шаге.

5. При необходимости указать дополнительные фильтры (рубрику, набор) и настроить шаблон вывода.

Вы можете добавлять и использовать свои шаблоны от виджета «Список контента», но в этом случае нужно внести как минимум пару изменений (используя переменную $host, которая доступна из шаблона. В ней лежит домен сайта источника, который нужно добавить к ссылке):

1. Поправить значение переменной $url аналогии с шаблонами виджета (чтобы ссылки были абсолютные и ссылались на правильный домен — сайт источник)

2. Поправить ссылку на пользователя если в шаблоне выводится автор контента (чтобы ссылка была на сайт источник).

Мобильное приложение SmartApp | Старт продаж, Мобильное приложение для InstantCMS 2*
Комментарии (23)
Dorimen 30 сентября 2018 в 00:06 0
Классно. Спасибо.
Евгений 30 сентября 2018 в 17:03 0
Круто, то что нужно, спасибо!
Евгений 30 сентября 2018 в 20:47 0
Неплохо бы еще и что-то вроде парсера аналогичного по api
@SmartControl 30 сентября 2018 в 22:42 0
не понял, какого парсера? - есть официальное JSON API для двойки и есть этот виджет, который получает данные через него и выводит на экран в соответствии с настройками.

А где в этой схеме должен быть парсер?
vikont 30 сентября 2018 в 23:08 0
Зачем виджет, если делать парсер? В данном случае, это взаимоисключающие вещи.
Скорее всего имелась ввиду возможность работать с удаленным ресурсом как будто он находится на сайте.
@SmartControl 1 октября 2018 в 00:11 0
Так есть же RSS виджет, он как раз выводит rss поток с любого удаленного ресурса. А парсер пишется либо под конкретный ресурс с конкретной структурой, либо с универсальными настройками - и первое, и второе уже есть.

Я просто не понимаю фишку, зачем писать ещё один? - а виджет даёт более полный контроль над содержимым + позволяет фильтровать контент как угодно - по рубрике и набору.
Евгений 1 октября 2018 в 16:23 0
Сейчас поясню фишку, виджет как ниже уже упоминалось, позволяет связывать проекты между собой вроде виджета мультисайтовости. Такой же, но не виджет а APIпарсер между своими проектами, позволил бы допустим приобрести полноценный парсер на один домен,а с него раздавать на другие не связанные проекты по APIпарсеру по аналогии с виджетом(экономия средств на лицензиях), или допустим есть компонент инстант видео там замечательный парсер youtube, допустим на другие сайты нужно только видео с youtube без полноценного видео-портала, можно было бы парсить в выбранную категорию на сайте лицензии без публикования, но по api этот контент публиковался бы на другом своем сайте.
Евгений 1 октября 2018 в 16:57 0
Можно даже в этом виджете объединить эти функции поставить выбор подгружать контент с сайта источника(донора) или публиковать на новом своем сайте(реципиенте)
@SmartControl 1 октября 2018 в 17:55 0
Я понял про что вы, такой цели не стояло (нужно было только показать, а не постить у себя то, что есть на другом сайте). Про это надо думать отдельно..

А этот виджет не должен ничего публиковать, потому что он "виджет".. Это нужно реализовывать по-другому - например, компонентом, события которого будут запускаться по крону и что-то там делать - запрашивать и создавать.
Asket 1 октября 2018 в 16:00 +1
Столь нужное дополнение функционала CMS до возможностей мультисайтовости.
И чего раньше никто не сделал… Получается, Вы гений…

Спасибо!
vikont 1 октября 2018 в 16:57 +1
Виджет действительно интересный, но до мультисайтовости ему далеко. Он только выводит информацию с другого сайта в виде списка, но при клике по пункту списка вы все равно попадаете на сайт источник. При мультисайтовости, вы работаете с инфой с другого сайта как со своей.
Евгений 1 октября 2018 в 17:27 0
Подобная реализация мультисайтовости при помощи виджетов реализована на https://vtomske.ru, там все на главной подгружается при помощи аналогичных виджетов с других сайтов проекта, например новости на главной подгружаются с https://news.vtomske.ru и остальное форум, недвижимость, работа, объявления, гороскоп с других сайтов портала
Asket 1 октября 2018 в 18:35 0
vikont:
Он только выводит информацию с другого сайта в виде списка, но при клике по пункту списка вы все равно попадаете на сайт источник.
Да, понимаю. Для моих целей, именно то, что нужно.
@SmartControl 1 октября 2018 в 19:45 0
При мультисайтовости, вы работаете с инфой с другого сайта как со своей.
а пример можно? - то есть контент на разных сайтах дублируется? - "используется как свой"..

Можно ведь и отображать на своем сайте записи, прилетевшие с другого (как, например, это делается в мобильном приложении). Но вопрос - зачем? - я пока не понимаю саму схему.
vikont 1 октября 2018 в 19:50 0
а пример можно? - то есть контент на разных сайтах дублируется? - "используется как свой"..
При мультисайтинге идет прямая работа с удаленной базой данных! На самом деле, как правило, все находится на одном хостинге, но возможно работать и с реально удаленной базой.
Так работает CMS Drupal в режиме мультисайтинга. инстант этого пока не имеет.
Алексей Тимофеев 1 октября 2018 в 19:54 0
Есть головной сайт города. Называется допустим ( ГОРОДСКОЙ САЙТ ГОРОДА КУРСК) + в этом городе есть сайт Комитета культуры где только новости культуры этого города. Админ сайта ГОРОДСКОЙ САЙТ ГОРОДА КУРСК делает раздел на своем сайте где новости с сайта Комитета культуры показываются как свои. Плюс может полноценно показывать новости с узкоспециализированных сайтов этого города. Например афиша города, объявления, криминальные новости или с сайта школы какой нибудь. Это очень удобно для автозаполнения головного сайта. Где он будет транслировать новости с других проектов этого города.
@SmartControl 1 октября 2018 в 21:10 0
Админ сайта ГОРОДСКОЙ САЙТ ГОРОДА КУРСК делает раздел на своем сайте где новости с сайта Комитета культуры показываются как свои.
Пессимизации за дублированный контент нет? - или просто запрещает к индексации такие страницы?

Да, я понял, делать можно такое. Механизмы для этого есть.
Melon 1 октября 2018 в 21:37 0
Мне скорее видится так: на поддоменах размещены тематические сайты (авто, работа, недвижимость и т.д.), а основной домен является новостником плюс на нем выводится инфа с поддоменов.
@SmartControl 1 октября 2018 в 22:33 0
Тогда вопрос в том, какой функционал должен быть на этом новостнике, когда он выводит контент тематического поддомена.

Просто показать запись? - или полноценно вывести тип контента "Авто" (например), с рубриками, фильтрами, наборами и кнопкой "добавить новый" - притом, что все операции должны производиться над базой данных поддомена. А новостник только для отображения
vikont 2 октября 2018 в 02:23 0
Это решают владельцы сайтов!
Рассмотрим другой пример. Существует сайт "Дошколята Республики", который является головным для сайтов дошкольных учреждений! На головном сайте основные информационные базы, а на сайтах ДОУ информация о текущей жизни.
Что в данном случае интересно:
1. Сквозная авторизация или ее обход за счет перехода по сайтам внутри данной сети.
2. На головном сайте иметь новостную ленту событий с сайтов ДОУ, а так же сбор различной статистики с сайтов ДОУ.
3. На сайтах ДОУ интересно получение какого либо общего и единого ресурса с головного сайта и работа с ним как со своим собственным, то есть без перехода и авторизации. Например нормативная база, система рассылки внутренних документов, методические разработки, учебные материалы и пр...
Система рассылки - это единая база в которой к каждому документу можно указать для кого и какого ДОУ он предназначен, а на сайтах ДОУ видят только тот документ, который для них предназначен. Так же осуществляется обратная связь с управлением и другими ведомствами.
Melon 1 октября 2018 в 21:39 0
Мне скорее видится так: на поддоменах размещены тематические сайты (авто, работа, недвижимость и т.д.), а основной домен является новостником плюс на нем выводится инфа с поддоменов.
Roman 3 октября 2018 в 22:53 0
Классная штуковина + в карму)
482 27 декабря 2018 в 13:22 0
Виджет классный! Работает отлично! Правда не смог самостоятельно разобраться вот с чем. При выводе фотоальбомов с сайта "Б", на сайте "А", ссылка на изображение формируется без домена
Код PHP:
  1. <img src="/upload/000/u2/6/f/bc0667b2.jpg" title="Fairy Tail" alt="Fairy Tail" />


Что мне в таком случае нужно сделать?