Выводим форумные сообщения в сайдбаре
Данный пост навеян казалось бы простым вопросом на одном из форумов - из какого форумного движка проще всего вывести последние сообщения в блог на вордпрессе. Один из ответов предлагал решение на базе phpBB и AutoMOD - и даже давал ссылку на хабр где это было описано - мол очень удобно и не нужно ковыряться в файлах… Но если задача состоит лишь в том чтобы вывести последние форумные сообщения, то на мой взгляд есть и более удачные решения, одно из которых я и хочу предложить
Сначала о том, чем мне не понравилось то решение что выложено на хабре. Во-первых, и WP-UNITED, и AutoMOD изменяют файлы форумного движка - т.е. при обновлении форума интеграция перестанет работать. Во-вторых, это привязка к phpBB - а что делать если мне нравится другой движок, например SMF?
Я предлагаю более универсальное решение, которое позволит не зависить ни от версии форума, ни от типа форумного движка, ни даже от домена на котором находится форум. Всего три буквы и вы поймете о чем я
RSS - любой современный форум умеет отдавать контент в виде RSS, почему бы нам не воспользоваться этим?
Вот простой пример, думаю что из комментарием все понятно:
$url = 'http://форум.ком/index.php?action=.xml;type=rss;limit=4'; //адрес RSS ленты
// в примере указан адрес фида для движка SMF, уточните какой у вашего форума
$rss = simplexml_load_file($rssurl);//Интерпретируем XML-файл в объект
foreach ($rss->channel->item as $item) {
$item->link = str_replace('&','&',$item->link);// это чтоб было валидно
//но если ваша фамилия лебедев и вам пофик на валидацию, данную строку можно убрать
$out ='<p><b><a href="';
$out .= $item->link;
$out .= '" target="_blank">';
$out .= $item->title;
$out .= '</a></b></p>';
$out .= '<p>';
$item->description = strip_tags($item->description);//убираем теги
$words = split(" ", $item->description);
if ( count($words)>18 ) $item->description = join(" ", array_slice($words, 0, 18));
//оставляю 18 слов - можно обрезать по кол-ву символов но имхо по словам красивее
$out .= $item->description;
$out .= '[...]</p><br />';
//echo iconv("UTF-8", "CP1251//IGNORE", $out);//код подходит для любого движка
// в зависимости от кодировки оставьте или разремируйте
echo $out;
}
Данный пример будет выводить сообщения из абсолютно любого форума, который умеет отдавать RSS - т.е. практически любой современный форум. Тем не менее обратите внимание - в примере используется SMF, а у него кол-во выводимых сообщений можно указать get-ом прямо в адресе RSS-фида (обратите внимание на limit=4). Не все форумы так умеют, и если вы работаете именно с таким, то просто прервите цикл после нужного кол-ва сообщений.
как это работает в действии, можете посмотреть прямо на этом блоге в сайдбаре - выводятся последних 4 раздела с нулледа
И еще - поскольку совершенству нет предела, то данный пример лучше рассматривать в качестве конструктора, на основе которого можно сделать что-то свое. Например многие “сеошники” наверняка захотят позакрывать ссылки в nofollow (это если форум на другом домене), а кто-то просто захочет улучшить или модернизировать - например прикрутить кеширование чтоб каждый раз не дергать форум… Дерзайте, а по поводу кеширования даю подсказку - наберите в гугле ob_start()
p.s.
интересно, нужен ли кому-нить готовый плагин или данного решения достаточно?
Popularity: 58%
Рубрика: wordpress, СайтостроителюМетки: PHP, блог
