Всем привет.
Написал тут по случаю небольшой сниппет для вывода последних сообщений (картинок, видео) в Instagram. Не знаю, честно говоря, насколько это актуальная штука. Но может быть кому-то пригодится. Легко переделывается под Evolution, если кому-то потребуется.
На днях у меня был спор с одним удаленным программистом, который подрядился для нас делать один из сайтов на MODX Revo. Не буду указывать, кто именно это был, но проект он в итоге завалил по множеству пунктов, и мы с ним распрощались навсегда.
В общем, спор был в том числе о том, что сделать кастомный вывод последних постов из Instagram — это дико сложная вещь. Этот программист пытался уверить меня, что такая работа займет огромное количество времени. Ну вот никак не меньше нескольких дней… Ну ха-ха три раза :)
Пришлось сделать самому. Как я и предполагал, работа оказалась на пару часов, из которых больше времени ушло просто на загрузку тестовых данных в Instagram. Итак, код ниже. Комментарии на английском, так мне привычнее. Если кому-то нужно, переведу. Хотя вроде элементарно все понятно.
UPD: Весь код перенес в Github: github.com/igorsuhinin/modx-instagram-latest-posts. Код полностью был отрефакторен (кому интересно, первая версия). Публиковать сюда этот расширенный код будет несколько неудобно. К тому же теоретически он еще будет обновляться в дальнейшем, а Github для этого — самое удобное место.
UPD2: Текущая версия 1.2.0, можно забрать тут: скачать v1.2.0. Скоро также будет доступна через репозиторий modx.com. В текущей версии добавлена возможность сохранения данных в кеш с целью минимизации серверной нагрузки.
UPD3: Пакет теперь также доступен для загрузки через репозиторий MODX. Ищите его по названию «InstagramLatestPosts» в управлении пакетами.
UPD4. 15.11.2017. Важно!: Instagram существенно изменил формат выдачи данных, что принципиально повлияло на работу сниппета. Старый код работать не будет. Прямо сейчас можете скачивать обновление отсюда https://github.com/igorsuhinin/modx-instagram-latest-posts. Должно быть достаточно просто заменить старый код на новый, никаких других изменений делать не требуется. Однако если встречаются какие-то проблемы, сообщайте.
P.S.: Не бойтесь писать свой код для MODX. Чаще всего это более гибкое и простое решение, чем пытаться как-то приспособить для своих нужд готовый код. И времени займет меньше, и опыта в программировании наберете.
Андрей Казунин 09.12.2016 12:40 #
Советую file_get_contents проверять на исполнение, кстати. На некоторых хостингах отрублена директива, которая позволяет ему читать урлы. Будут ошибки.
Игорь Сухинин 09.12.2016 12:58 #
Андрей Казунин 09.12.2016 13:09 #
Мне год назад 2 проекта с апи пришлось переписывать на CURL, потом выяснили уже, что хостер вдруг решил пошалить и директива теперь включается по запросу из личного кабинета.
Игорь Сухинин 09.12.2016 13:12 #
Михаил 09.12.2016 16:20 #
Игорь Сухинин 09.12.2016 16:39 #
Михаил 09.12.2016 16:59 #
Просто я часто сталкиваюсь с тем, что сначала мне говорят сделать что-то и я делаю, а затем эту задачу расширяют и текущая реализация уже никуда не годится. Поэтому я всегда несколько раз (да, обычно требуется) уточняю, не будет ли каких-то связанных с этим новых хотелок. И не каждый, кто поставил задачу, понимает, что не полностью сформулированная задача («пусть программист пока думает, что нам нужен самокат, а потом скажем ему добавить ещё 2 колеса и у нас будет автомобиль») обычно выливается во впустую потраченное время.
Наверное, более-менее опытные программисты интуитивно делают подстраховку, сберегая своё время и время заказчика.
Не берусь судить Ваш случай, не всё так однозначно.
Игорь Сухинин 09.12.2016 17:14 #
У нас для таких непонятливых клиентов составляется объемное ТЗ, где в деталях все оговаривается. Более того, потом еще и схемы в Axure рисуем, чтобы ну уж совсем все было понятно. Ну да, правда, даже и это не всегда помогает, но в основном решает проблемы коммуникации.
Однако, увлеклись, это, пожалуй, совсем другая тема :)
Андрей [Aharitо́] Харитонов 23.12.2016 20:29 #
Михаил 09.12.2016 17:17 #
Игорь Сухинин 09.12.2016 17:23 #
Павел Романов 11.12.2016 17:03 #
А вообще спасибо — полезная штука.
Игорь Сухинин 11.12.2016 21:54 #
Игорь Сухинин 12.12.2016 01:10 #
Игорь Сухинин 12.12.2016 01:10 #
Vasily 14.12.2016 05:17 #
насчет курла пока не знаю, но с ним как то и попроще — можно прокси пользовать :)
Игорь Сухинин 14.12.2016 09:32 #
Игорь Сухинин 19.12.2016 00:15 #
Dmi3yy 14.12.2016 12:53 #
О пасиб хорошее решение ) перепишу скоро под EVO ) как раз проект один рисуют где надо будет тоже самое:)
Кстати как вариант можно просто использовать внешний виджет к примеру вот этот: lightwidget.com
именно так делал на одном из проектов ибо он полностью подошел под задачку) и заняло встроить от силы 2 минуты :)
Игорь Сухинин 14.12.2016 13:03 #
Под Evo действительно легко переписывается. Сделал бы сам, но… Evo мне неинтересен давно :) Так что если сделаешь — отлично, пусть народ пользуется.
P.S.: Отправил заявку на публикацию пакета на modx.com — пока не подтвердили. Интересно, как долго у них проводится эта проверка.
polina 11.01.2017 17:28 #
Пакет работает или это у меня проблемы?
Игорь Сухинин 11.01.2017 22:00 #
polina 11.01.2017 22:05 #
Игорь Сухинин 11.01.2017 22:18 #
polina 11.01.2017 22:22 #
Игорь Сухинин 11.01.2017 22:30 #
Вам могу посоветовать открыть для редактирования сниппет и на строке 85 заменить этот код
на этот код
Сообщите, пожалуйста, о результате.
Игорь Сухинин 11.01.2017 22:35 #
Игорь Сухинин 11.01.2017 22:44 #
Я подозреваю какую-то проблему с этим, но пока не до конца понял, в чем дело. На «нулевом» сайте у меня тоже с первого раза не заработало, хотя потом вроде все было в порядке.
polina 11.01.2017 23:15 #
Потом я прочитала камент про кэш, нашла этот файл (да, все создается), удалила — и все изменения вступили в силу. Модыксовская чистка кэша не сработала.
В целом, если после каждого изменения руками чистить кэш — все работает.
Пример вот тут в футере vakhitova.ru/contact.html
Игорь Сухинин 11.01.2017 23:22 #
Ну а в целом о проблеме я примерно понял, в чем дело. Попозже сделаю апдейт.
polina 11.01.2017 23:28 #
polina 11.01.2017 23:13 #
Виталий 23.02.2017 11:18 #
Игорь Сухинин 23.02.2017 15:13 #
Илья 12.10.2017 17:23 #
Это дополнение больше не работает?
Сделал всё по инструкции, на сайте ничего не появилось, вообще 0, ни ошибок, ни чего.
Илья 12.10.2017 17:31 #
Игорь Сухинин 12.10.2017 17:32 #
Илья 12.10.2017 17:49 #
А есть ли какой то плейсходер что бы вывести порядковый номер фото/видео?
Игорь Сухинин 12.10.2017 17:58 #
Илья 12.10.2017 18:22 #
Игорь Сухинин 12.10.2017 22:28 #
Antan 08.11.2017 21:02 #
www.instagram.com/{USER-NAME}/media/
Теперь не поддерживается. Как можно решить данную проблему?
Игорь Сухинин 08.11.2017 21:13 #
Да, я знаю уже об этих проблемах
Я пока, к сожалению, не знаю, когда я смогу это исправить. Поймите правильно, у меня есть и другие дела. По возможности сделаю быстрее. Честно говоря, даже не представлял, что так много людей пользуются этим дополнением.
Игорь Сухинин 15.11.2017 00:41 #
Я обновил сниппет, код можно забрать на github: github.com/igorsuhinin/modx-instagram-latest-posts. В ближайшее время код также опубликую в репозитории MODX, но это обычно занимает какое-то время, поэтому проще и быстрее пока просто заменить код (copy/paste) на своем сайте. По идее ничего не придется менять. Пару несущественных параметров пришлось удалить (см. описание на github), однако это не влияет в целом на работу сниппета.
Antan 21.11.2017 21:49 #
Олег 24.11.2017 11:44 #
Александр 29.11.2017 18:42 #
Использую код сниппета https://github.com/igorsuhinin/modx-instagram-latest-posts/blob/master/snippet.php
Версия MODX 2.5.8
1) Если &showVideo=`1`, то [[+type]] всегда выводит «video».
2) Кэш обновляется только удалением /core/cache/instagram_latest_posts/latest_posts.cache.php
Игорь Сухинин 14.12.2017 09:24 #
Александр 13.12.2017 21:24 #
Как лечить?
Игорь Сухинин 14.12.2017 09:26 #
Александр 14.12.2017 10:18 #
Использую код сниппета github.com/igorsuhinin/modx-instagram-latest-posts/blob/master/snippet.php
Версия MODX 2.5.8
Вызов:
В шаблонах все вызовы на fenom.
Игорь Сухинин 14.12.2017 10:22 #
Александр 14.12.2017 13:17 #
Не знаю, как это связано со сниппетом Instagram Latest Posts, но как только добавил пробел перед dataLayer, ошибка ушла.
И можно ещё вопрос: сниппет нормально вызывается с помощью fenom? А то после очистки кэша Instagram Latest Posts (удаления latest_posts.cache.php) перестало работать.
Игорь Сухинин 14.12.2017 13:20 #
Я не думаю, что это вообще имеет какое-то отношение к сниппету ILP :)
Это лучше Вы мне об этом расскажите, ибо не знаю я :) Просто не пользуюсь этим.
Александр 14.12.2017 18:35 #
Похожая тема: https://modx.pro/help/7115/
Попробовал изменить строчку:
На:
И заработало)
Игорь, скажите, пожалуйста, нет ли возможности добавить в Ваш сниппет поддержку fenom? Если я не ошибаюсь, это не повлияет на обычные тэги MODX, они как и раньше будут обрабатываться парсером MODX, но плюс будут обрабатываться тэги fenom.
Игорь Сухинин 14.12.2017 20:33 #
Если не ошибаюсь, если так сделать по умолчанию, то сниппет будет требовать наличие pdoTools в системе и без него работать просто не будет. Можно, конечно, поставить проверку на наличие такого сервиса… Не знаю, вот нужно ли.
Александр 25.01.2018 10:34 #
Взято отсюда: https://modx.pro/help/12573/#comment-93224
И вместо $this->modx->getChunk() вызывать эту функцию getChunk()
Извиняюсь, если глупость написал, Вам виднее как правильно.
Игорь Сухинин 25.01.2018 10:43 #
Александр 25.01.2018 10:47 #
Игорь Сухинин 25.01.2018 10:51 #
Александр 25.01.2018 11:02 #
Ga11ardo 25.01.2018 23:32 #
<br />
Пытаюсь установить Instagram Latest Posts<br />
Установил, скопировал вызов снипета. Но получаю вот такую ошибку
<br />
Error: The remote loading of JSON content failed. Please check if your account name is correct.<br />
<br />
<br />
<br />
Решил, видимо вы в магазине приложений код не обновляли. Там версия 1.4.0<br />
<br />
Теперь испытываю другую проблему, а точнее с отображением (просто белое все)
Игорь Сухинин 26.01.2018 09:21 #
Ga11ardo 19.03.2018 11:51 #
<br />
Почему то не работает сниппет, пишет Error: The JSON parsing failed.<br />
<br />
Раньше все работало замечательно<br />
Неужели произошли какие то изменения с API Instagram
Игорь Сухинин 19.03.2018 12:05 #
Марина 06.08.2018 20:04 #
Error: The remote loading of JSON content failed. Please check if your account name is correct.
либо
Error: The JSON parsing failed.
в зависимости от метода обработки данных.
После долгих исследований пришла к выводу, что это из-за отсутствия доступа к файлу www.instagram.com/riwkus/?__a=1 без авторизации, но как решить эту проблему — не знаю. Скажите, эта проблема есть еще у кого-нибудь? и может у кого есть мысли как ее решить?
Игорь Сухинин 07.08.2018 09:20 #
liberty 18.04.2019 13:35 #
Все скачала, установила, но на фронте выводит:
Error: The remote loading of JSON content failed. Please check if your account name is correct.
В чем может быть проблема?