Задать вопрос
@BCEPABHO

Как интегрировать посты из группы ВКонтакте в виде слайдера новостей на сайте Tilda?

Мне нужно отображать посты из группы ВКонтакте в виде слайдера новостей на моём сайте на Tilda. Это должно работать через встраиваемый скрипт, так как у меня нет собственного хостинга. Важно, чтобы скрипт был совместим с платформой Tilda и обновлял слайдер автоматически при добавлении новых постов в группу. Какие существуют варианты?
  • Вопрос задан
  • 1326 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    SMM-менеджер
    5 месяцев
    Далее
  • Skillbox
    Продвижение во ВКонтакте с нуля до PRO
    4 месяца
    Далее
  • Skillbox
    Продвижение во ВКонтакте
    2 месяца
    Далее
Пригласить эксперта
Ответы на вопрос 3
@koder_1
Битрикс программист
Поищите виджеты вк, если есть подходящий, то код можно вставить в Тильду.

Другой вариант - изучать api vk, с помощью стороннего хостинга брать слайды,
с помощью javascript на тильде брать слайды со стороннего хостинга. Но это сложно, дорого, ненадёжно.
Ответ написан
Комментировать
@cirrus13
Вот здесь такой код есть, но он платный:
https://howmakesite.ru/collection/kody-dlya-tilda-...
Ответ написан
Комментировать
@Mike74ru
Реализовал такую историю для сайта бф-гравитация.рф, куда летят посты из группы фонда https://vk.com/bf_gravitas
Что нужно сделать:
1. Создать приложение типа «Сайт» в vk.com/apps?act=manage, чтобы получить Сервисный ключ доступа.
2. Добавить на страницу блок T123 и вставить код ниже,
(Не забудьте подставить свой сервисный ключ и ID группы):
<style>
/* Настройки сетки */
.vk-feed-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr); /* 3 колонки */
    gap: 30px;
    max-width: 1200px;
    margin: 0 auto 60px auto; /* Отступы */
}

/* Карточка поста */
.vk-card {
    background: #ffffff;
    border: 1px solid #e2e2e2;
    border-radius: 12px;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    box-shadow: 0 4px 15px rgba(0,0,0,0.05);
    height: 100%;
    transition: transform 0.2s;
}
.vk-card:hover { transform: translateY(-5px); }

/* Изображение */
.vk-card-img {
    width: 100%;
    height: 250px;
    background-size: cover;
    background-position: top center;
    background-color: #f4f4f4;
    position: relative;
}

/* Иконка Play для видео */
.vk-play-icon {
    position: absolute;
    top: 50%; left: 50%;
    transform: translate(-50%, -50%);
    width: 50px; height: 50px;
    background: rgba(0,0,0,0.6);
    border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
}
.vk-play-icon::after {
    content: ''; display: block;
    border-top: 10px solid transparent;
    border-bottom: 10px solid transparent;
    border-left: 16px solid #fff;
    margin-left: 4px;
}

/* Текст и подвал */
.vk-card-content { padding: 24px; display: flex; flex-direction: column; flex-grow: 1; }
.vk-card-text {
    font-family: 'Arial', sans-serif; /* Или шрифт вашего сайта */
    font-size: 15px; color: #333; line-height: 1.5;
    margin-bottom: 20px;
    display: -webkit-box;
    -webkit-line-clamp: 5; /* Ограничение кол-ва строк */
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.vk-card-footer {
    margin-top: auto; padding-top: 15px; border-top: 1px solid #eee;
    display: flex; justify-content: space-between; align-items: center;
    font-size: 13px; color: #888;
}
.vk-card-link {
    background-color: #5181b8; color: #fff !important;
    padding: 8px 16px; border-radius: 4px; text-decoration: none !important;
}

/* Адаптив */
@media (max-width: 960px) { .vk-feed-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 600px) { .vk-feed-grid { grid-template-columns: 1fr; } }
</style>

<div id="vk-feed-root" class="vk-feed-grid">
    <div style="grid-column: 1/-1; text-align: center; color: #999; padding: 40px;">Загрузка новостей...</div>
</div>

<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
$(document).ready(function() {
    // === НАСТРОЙКИ ===
    // Вставьте сюда ваш Сервисный ключ доступа из настроек приложения VK
    var token = 'ВАШ_СЕРВИСНЫЙ_КЛЮЧ'; 
    // ID группы обязательно с минусом
    var groupId = '-00000000'; 
    var count = 6; 
    // ================

    $.ajax({
        url: 'https://api.vk.com/method/wall.get',
        data: {
            access_token: token, owner_id: groupId, count: count, v: '5.131', extended: 1
        },
        dataType: 'jsonp',
        success: function(data) {
            var posts = data.response.items;
            var html = '';
            
            if (!posts || posts.length === 0) { $('#vk-feed-root').html(''); return; }

            posts.forEach(function(post) {
                var imgUrl = '';
                var isVideo = false;

                // Поиск лучшего изображения или обложки видео
                if (post.attachments && post.attachments.length > 0) {
                    var photoObj = post.attachments.find(x => x.type === 'photo');
                    if (photoObj) {
                        var sizes = photoObj.photo.sizes;
                        var bestSize = sizes.find(s => s.type === 'z') || sizes.find(s => s.type === 'y') || sizes.pop();
                        imgUrl = bestSize.url;
                    } else {
                        var videoObj = post.attachments.find(x => x.type === 'video');
                        if (videoObj) {
                            isVideo = true;
                            if (videoObj.video.image) imgUrl = videoObj.video.image[videoObj.video.image.length - 1].url;
                        }
                    }
                }

                var imgHtml = imgUrl ? 
                    '<div class="vk-card-img" style="background-image: url(' + imgUrl + ')">' + (isVideo ? '<div class="vk-play-icon"></div>' : '') + '</div>' : '';
                
                var date = new Date(post.date * 1000).toLocaleDateString('ru-RU');
                var postLink = 'https://vk.com/wall' + post.owner_id + '_' + post.id;
                var cleanText = post.text.replace(/<br>/g, '\n');

                html += '<div class="vk-card">' + imgHtml + '<div class="vk-card-content"><div class="vk-card-text">' + cleanText + '</div><div class="vk-card-footer"><span>' + date + '</span><a href="' + postLink + '" target="_blank" class="vk-card-link">' + (isVideo ? 'Смотреть' : 'Читать') + '</a></div></div></div>';
            });
            $('#vk-feed-root').html(html);
        },
        error: function() { $('#vk-feed-root').html('Ошибка загрузки.'); }
    });
});
</script>


Настраиваем дизайн и нужное количество колонок в соответствии с дизайном сайта и готово
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы