Единый форум поддержки

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Единый форум поддержки » Форум для новичков » Как встроить RSS с другого форума?


Как встроить RSS с другого форума?

Сообщений 1 страница 11 из 11

1

Привет!
Есть задача показывать последнее сообщение из конкретной темы другого форума. Здесь как-то писали, что в теории это возможно.
Для примера рассмотрим тему Обновления на сервисе.
Код с прямым урлом на RSS не срабатывает. Почему?

Код:
<script>
$(function(){
    $.get('https://forum.mybb.ru/export.php?type=rss&tid=37409','',processXML);
    function processXML(data) {
        $(data).find('item:lt(1)').each(function() {
            var JDescription=$(this).find('description').text();
            $('.punbb').append(JDescription);
        });
    };
});
</script>

+1

2

Хм, задачу получилось решить настройкой данного скрипта: Экспорт данных с форума
В связи с чем вопрос: почему не работает мой код и какой скрипт по идее использовать правильнее?
Добавлено спустя 8 минут 47 секунд:
Ещё есть проблема.
Код показывает только первые 25-40 символов контента сообщения. Не понимаю, от чего это зависит и как исправить... Нужно выводить сообщение полностью.

Код:
<script src="https://forum.mybb.ru/export.php?type=js&tid=40332&max=1" type="text/javascript"></script>
<script type="text/javascript">
    var html='';
    var i = 0;
    for(i=0;i<content.length;i++) {
    	html+='<div>'+content[i][3]+'</div>';
    }
    $('.header_quote').append(html);
</script>

Отредактировано Laktonika (Вс, 19 Июн 2022 16:14:58)

+1

3

Поднимаю тему, проблема актуальна :disappointed:

0

4

Laktonika написал(а):

В связи с чем вопрос: почему не работает мой код и какой скрипт по идее использовать правильнее?

Laktonika написал(а):

Код показывает только первые 25-40 символов контента сообщения. Не понимаю, от чего это зависит и как исправить... Нужно выводить сообщение полностью.

Второй и есть правильный - он специально и создавался Админом, чтобы выводить на стороннем сайте. Через js выводит только обрезанный пост, поэтому это разве что kernel просить, чтобы через js выводился полный пост, как выводится в rss..

+2

5

Уважаемый @kernel, если возможно, прошу реализовать данный запрос)

kolobdur74 написал(а):

чтобы через js выводился полный пост, как выводится в rss

0

6

Полностью пост можно получить через api.php. method=post.get https://mybb.ru/forumapi#method-post

+3

7

Laktonika, по быстрому переделал скрипт слайдер вывода последних сообщений, поэтому несколько громоздкий:
Ставить В НТМЛ низ:

Код:
<style>
#title-logo-tdl {width: 300px;}

#news-slider {
  display: grid;
  grid: auto / 22% 1px 77%;
  align-items: start;
  margin: 10px 14px 0 0;
}

#news-slider:before {
  content: "";
  display: block;
  background: white url(https://i.ibb.co/9rfv8S0/cat-mini4.jpg) repeat-x top left / contain;
  grid-column: 3;
  border-radius: 8px;
}

#news-slider:before, .slid {grid-row: 1;}

.slid {
  grid:
    "autor-data . slider-post" / 22% 1px 77%;
  justify-items: start;
  grid-column: 1 / -1;
  align-items: start;
}

.slid {display: none;}

.slid:first-child {display: grid;}
 
.slider-post {grid-area: slider-post;}

.slider-post {
  height: 100%;
  width: 100%;
  padding: 10px;
}

#news-slider:before, .author-data {
  height: 106px;
  width: 100%;
  text-align: center;
}

.slider-post marquee {
  height: 106px;
  width: 98%;
  margin: 0 auto;
}

.author-data {
  grid-area: autor-data;
  display: grid;
  align-content: start;
  justify-items: start;
}

.author-data div {
  width: 100%;
  margin-bottom: 1px;
  margin: 1px;
  padding: 2px;
}

.goover, .sdata {background: url(https://i.ibb.co/G2g52Cb/cat-big.png) repeat-x #EDF0F5;}

.sautor {
  display: grid;
  grid: "simg strongs" / 26px auto;
  align-items: center;
  justify-content: center;
  background: #8EA1BC url(https://i.ibb.co/HF69GH1/cellpic4.jpg) repeat-x top left / contain;
  color: #fff;
  text-align: center;
  border: 0;
}

.sautor img {grid-area: simg;}
.sautor strong {grid-area: strongs;}

#news-slider iframe {
  width: auto;
  height: auto;
}

.goover {text-align: center;}

/* Правка спойлера */
.slider-post .spoiler-box > blockquote.visible {display: block;overflow: auto;}
.slider-post .spoiler-box > blockquote {padding-top: 1.4em;display: none;}
.slider-post .spoiler-box > div {
  background: url(/img/plus.png) no-repeat 10px center, 
              url(https://i.ibb.co/nwN2WJ7/bbcode-quote.gif) no-repeat 100% 50% #4E79A6;
  padding: 4px 26px;
  cursor: pointer;
}
.slider-post .spoiler-box > div.visible {
  background: url(/img/minus.png) no-repeat 10px center, 
              url(https://i.ibb.co/nwN2WJ7/bbcode-quote.gif) no-repeat 100% 50% #4E79A6;
}
.slider-post .quote-box, .slider-post .code-box {margin: 0 0px 14px 0px;}

/* Правка списка */
.slider-post ul {padding: 0 0 1em 2.3em;}
.slider-post ul[style="list-style: i"] {list-style-type: decimal !important;}
.slider-post ul[style="list-style: upper-roman"] {list-style-type: upper-roman !important;}
.slider-post ul[style="list-style: upper-alpha"] {list-style-type: upper-latin !important;}
.slider-post li {list-style: inherit;}
</style>
<script>
var lm = 1,//число отображаемых сообщений из темы
sort = 'desc',
anyav = 'https://forumstatic.ru/files/0000/14/1c/20038.jpg',//аватар по умолчанию для тех, у кого он не установлен
si = [40332]; //id темы
$(function (){
  var nf = '<div id="news-slider">',text = [];
  $.getJSON('https://forum.mybb.ru/api.php?method=post.get&topic_id='+si+'&sort_dir='+sort+'&limit='+lm+'&fields=id,message,posted,username,avatar,subject', function (d){var x = d.response;
    for (var i in x) {
      var sod = x[i].message, pd = x[i].id, t = x[i].posted, nm = x[i].username, av = x[i].avatar, subj = x[i].subject;
      if(!av)av=anyav;
	  t = new Date(t * 1e3).toLocaleString('ru');
	  nf +='<div class="slid"><div class="slider-post">'+sod+'</div>';
	  nf +='<div class="author-data"><div class="sautor"><img src="'+av+'" width="18" height="18" style="border-radius: 50%;"><strong>'+nm+'</strong></div><div class="sdata">'+t+'</div><div class="goover"><a rel="nofollow" href="/viewtopic.php?pid='+pd+'#p'+pd+'"><strong>'+subj+'</strong></a></div></div></div>';  
	}
    nf += '</div>';$('#news-tem').append(nf).find('.slider-post p span').removeAttr('id');});
});
</script>

<div id="news-tem"></div> - ставим туда куда надо выводить
si = [40332]; //id темы - ID нужной темы
$.getJSON('https://forum.mybb.ru/api.php?method=post.get&topic_id='+si+'&sor - здесь ставим нужный домен форума, из которого надо вывести сообщение.

Если подойдет, то надо будет поправить css, он несколько корявый..

+4

8

kolobdur74
Спасибо огромное, то что нужно! Я с JSON на вы, к сожалению
За CSS не переживайте, я всё могу сама, да и скрипт облегчила под себя, чтобы выводить только контент сообщения

Код:
var lm = 1, // число отображаемых сообщений из темы
sort = 'desc',
si = [40332]; // id темы
$(function (){
    var nf = '',
    text = [];
    $.getJSON('https://forum.mybb.ru/api.php?method=post.get&topic_id='+si+'&sort_dir='+sort+'&limit='+lm+'&fields=message', function (d) {
    var x = d.response;
    for (var i in x) {
        var sod = x[i].message;
        nf +=sod;
    }
    nf += '';
    $('.header_quote .quote_scrollable').append(nf)});
});

Тему можно в архив

+2

9

kolobdur74 написал(а):

Laktonika, по быстрому переделал скрипт слайдер вывода последних сообщений, поэтому несколько громоздкий:
Ставить В НТМЛ низ:

Код:
<style>
#title-logo-tdl {width: 300px;}
 
#news-slider {
  display: grid;
  grid: auto / 22% 1px 77%;
  align-items: start;
  margin: 10px 14px 0 0;
}
 
#news-slider:before {
  content: "";
  display: block;
  background: white url(https://i.ibb.co/9rfv8S0/cat-mini4.jpg) repeat-x top left / contain;
  grid-column: 3;
  border-radius: 8px;
}
 
#news-slider:before, .slid {grid-row: 1;}
 
.slid {
  grid:
    "autor-data . slider-post" / 22% 1px 77%;
  justify-items: start;
  grid-column: 1 / -1;
  align-items: start;
}
 
.slid {display: none;}
 
.slid:first-child {display: grid;}
 
.slider-post {grid-area: slider-post;}
 
.slider-post {
  height: 100%;
  width: 100%;
  padding: 10px;
}
 
#news-slider:before, .author-data {
  height: 106px;
  width: 100%;
  text-align: center;
}
 
.slider-post marquee {
  height: 106px;
  width: 98%;
  margin: 0 auto;
}
 
.author-data {
  grid-area: autor-data;
  display: grid;
  align-content: start;
  justify-items: start;
}
 
.author-data div {
  width: 100%;
  margin-bottom: 1px;
  margin: 1px;
  padding: 2px;
}
 
.goover, .sdata {background: url(https://i.ibb.co/G2g52Cb/cat-big.png) repeat-x #EDF0F5;}
 
.sautor {
  display: grid;
  grid: "simg strongs" / 26px auto;
  align-items: center;
  justify-content: center;
  background: #8EA1BC url(https://i.ibb.co/HF69GH1/cellpic4.jpg) repeat-x top left / contain;
  color: #fff;
  text-align: center;
  border: 0;
}
 
.sautor img {grid-area: simg;}
.sautor strong {grid-area: strongs;}
 
#news-slider iframe {
  width: auto;
  height: auto;
}
 
.goover {text-align: center;}
 
/* Правка спойлера */
.slider-post .spoiler-box > blockquote.visible {display: block;overflow: auto;}
.slider-post .spoiler-box > blockquote {padding-top: 1.4em;display: none;}
.slider-post .spoiler-box > div {
  background: url(/img/plus.png) no-repeat 10px center, 
              url(https://i.ibb.co/nwN2WJ7/bbcode-quote.gif) no-repeat 100% 50% #4E79A6;
  padding: 4px 26px;
  cursor: pointer;
}
.slider-post .spoiler-box > div.visible {
  background: url(/img/minus.png) no-repeat 10px center, 
              url(https://i.ibb.co/nwN2WJ7/bbcode-quote.gif) no-repeat 100% 50% #4E79A6;
}
.slider-post .quote-box, .slider-post .code-box {margin: 0 0px 14px 0px;}
 
/* Правка списка */
.slider-post ul {padding: 0 0 1em 2.3em;}
.slider-post ul[style="list-style: i"] {list-style-type: decimal !important;}
.slider-post ul[style="list-style: upper-roman"] {list-style-type: upper-roman !important;}
.slider-post ul[style="list-style: upper-alpha"] {list-style-type: upper-latin !important;}
.slider-post li {list-style: inherit;}
</style>
<script>
var lm = 1,//число отображаемых сообщений из темы
sort = 'desc',
anyav = 'https://forumstatic.ru/files/0000/14/1c/20038.jpg',//аватар по умолчанию для тех, у кого он не установлен
si = [40332]; //id темы
$(function (){
  var nf = '<div id="news-slider">',text = [];
  $.getJSON('https://forum.mybb.ru/api.php?method=post.get&topic_id='+si+'&sort_dir='+sort+'&limit='+lm+'&fields=id,message,posted,username,avatar,subject', function (d){var x = d.response;
    for (var i in x) {
      var sod = x[i].message, pd = x[i].id, t = x[i].posted, nm = x[i].username, av = x[i].avatar, subj = x[i].subject;
      if(!av)av=anyav;
	  t = new Date(t * 1e3).toLocaleString('ru');
	  nf +='<div class="slid"><div class="slider-post">'+sod+'</div>';
	  nf +='<div class="author-data"><div class="sautor"><img src="'+av+'" width="18" height="18" style="border-radius: 50%;"><strong>'+nm+'</strong></div><div class="sdata">'+t+'</div><div class="goover"><a rel="nofollow" href="/viewtopic.php?pid='+pd+'#p'+pd+'"><strong>'+subj+'</strong></a></div></div></div>';  
	}
    nf += '</div>';$('#news-tem').append(nf).find('.slider-post p span').removeAttr('id');});
});
</script>

<div id="news-tem"></div> - ставим туда куда надо выводить
si = [40332]; //id темы - ID нужной темы
$.getJSON('https://forum.mybb.ru/api.php?method=post.get&topic_id='+si+'&sor - здесь ставим нужный домен форума, из которого надо вывести сообщение.

Если подойдет, то надо будет поправить css, он несколько корявый..

https://forumupload.ru/uploads/001c/09/35/18/89940.jpg

А можно, чтобы прокручивались последние сообщения разных тем различных форумов, ротатор, а список последовательностей этих тем и адресов форумов брать из последнего сообщения темы внешнего форума?

0

10

fil2006k написал(а):

А можно, чтобы прокручивались последние сообщения разных тем различных форумов, ротатор, а список последовательностей этих тем и адресов форумов брать из последнего сообщения темы внешнего форума?

Разве что Алекс или Дефф сделают.

0

11

Я бы использовал это так: в открытой теме любой пользователь MyBB может разместить список тем и адресов форумов, которые будут прокручиваться в установленном всё равно где ротаторе, пока следующий пользователь не отправит в тему свой список. Просматривающие сообщения пользователи, если их заинтересует содержание и тематика, по клику смогут перейти непосредственно к первоисточнику, если надо, зарегистрироваться там, ответить...

0


Вы здесь » Единый форум поддержки » Форум для новичков » Как встроить RSS с другого форума?