Студия креативных разработок DevArt.PRO.
Разработка сайтов и форумов под ключ!
Сильнейшая команда в России по vBulletin - читать подробнее...
 
 
 
 

 
 
Здесь скоро опять что то будет...
 
 
 
 
 
 
Loading

Вернуться   форум vBSupport.org > vBulletin > vBulletin 4.x.x > Хаки, моды и скрипты 4.x.x

Объявления
  • Изменения в правах
  • Каталог Фрилансеров
  • Добро пожаловать!
  • Premoderation
  • Новичкам!
  • For English speaking users
Ответ
 
Опции темы Опции просмотра
Старый 17.03.2010, 17:07   #1
Специалист
 
Аватар для Hitsi
RSS в боковую панель форума

Тема может и есть, но я не нашел и в итоге сделал сам

Цель: Вывести в боковую панель rss с любого сайта, без добавления этого rss в сам форум

Решение:
1) Создаем шаблон block_rss
Код:
<li>
    <div class="block smaller">
        <div class="blocksubhead">
            <a class="collapse" id="collapse_block_newposts_{vb:raw blockinfo.blockid}" href="{vb:raw relpath}#top"><img alt="" src="{vb:stylevar imgdir_button}/collapse_40b.png" id="collapseimg_newposts_{vb:raw blockinfo.blockid}"/></a>
            <img src="{vb:stylevar imgdir_cms}/widget-comment.png" alt="" />
            <span class="blocktitle">{vb:raw blockinfo.title}</span>
        </div>
        <div id="block_newposts_{vb:raw blockinfo.blockid}" class="blockbody floatcontainer">
            <ul class="blockrow">
                <vb:each from="news" key="newsid" value="news">
                <li class="floatcontainer">

                    <a href="{vb:raw news.url}" class="title" target="_blank">{vb:raw news.title}</a>
                        <p>{vb:raw news.description}</p>
                        <div class="meta">
                            <span class="time">{vb:raw news.pubDate}</span>
                            <br/>
                            
                        
                    </div>
                </li>
                </vb:each>
            </ul>
        </div>
    </div>
    <div class="underblock"></div>
</li>
Создаем блок html/php
Код:
$url = 'http://hz.ru/rss.xml';       

$rss = simplexml_load_file($url);       
$news=array();
$i=0;
//цикл для обхода всей RSS ленты
foreach ($rss->channel->item as $item) {
       $news[$i]['title']=iconv("UTF-8", "Windows-1251", $item->title);     
       $news[$i]['url']=iconv("UTF-8", "Windows-1251", $item->link);     
       $news[$i]['description']=iconv("UTF-8", "Windows-1251", $item->description);
$date=explode(" ",iconv("UTF-8", "Windows-1251", $item->pubDate));
    $pubDate=$date[0]." ".$date[1]." ".$date[2]." ".$date[3];
       $news[$i]['pubDate']=$pubDate; 
       $i++;
}

vB_Template::preRegister('block_rss',array('news' => $news));
return true;
Тип содержимого: php
Использовать шаблон: block_rss

Последний раз редактировалось Hitsi; 15.04.2010 в 10:13..
  Ответить с цитированием
Сказали Спасибо:
Скрыть список поблагодаривших

Fine (17.03.2010), finmen (17.03.2010), jumuro (26.04.2010), SMak044 (17.03.2010)
Рекламка
Реклама на форуме

Файловый Архив

  • Неограниченное количество категорий и суб-категорий
  • Тонкие настройки прав доступа
  • Предпросмотр медиа файлов: FLV, IFLV, F4A, F4V, MP4, MP3, MOV и других...
  • Мультизагрузка файлов - SWFUploader
  • Добавление файлов с сервера
Подробности и история обновлений продукта в этой теме
Старый 17.03.2010, 21:20   #2
finmen
Простоузер
А как ограничить количество новостей?
  Ответить с цитированием
Старый 17.03.2010, 22:36   #3
Hitsi
Специалист
 
Аватар для Hitsi
Сделать цикл не по всем новостям а используя for определенное кол-во раз

Выглядеть это будет так:
Код:
$url = 'http://hz.ru/rss.xml';       

$rss = simplexml_load_file($url);       
$news=array();
//цикл для обхода RSS ленты 5 раз
for ($i=0;$i<5;$i++)
 {
$item=$rss->channel->item[$i];
       $news[$i]['title']=iconv("UTF-8", "Windows-1251", $item->title);     
       $news[$i]['url']=iconv("UTF-8", "Windows-1251", $item->link);     
       $news[$i]['description']=iconv("UTF-8", "Windows-1251", $item->description);
$date=explode(" ",iconv("UTF-8", "Windows-1251", $item->pubDate));
    $pubDate=$date[0]." ".$date[1]." ".$date[2]." ".$date[3];
       $news[$i]['pubDate']=$pubDate; 
       
}

vB_Template::preRegister('block_rss',array('news' => $news));
return true;

Последний раз редактировалось Hitsi; 15.04.2010 в 10:13..
  Ответить с цитированием
Старый 07.05.2010, 01:58   #4
vasiljok3
Продвинутый
Если в транслируемых сообщениях есть фотографии, они передаются без уменьшения. Соответственно фото вылазят за края форума (порой намного). Статьи идут целиком, тоже неудобно. Нужно как-то ограничить размер rss новости.
  Ответить с цитированием
Старый 07.05.2010, 04:08   #5
Hitsi
Специалист
 
Аватар для Hitsi
вместо
Код:
$news[$i]['description']=iconv("UTF-8", "Windows-1251", $item->description);
пишите
Код:
$news[$i]['description']=strip_tags(iconv("UTF-8", "Windows-1251", $item->description));
Это удалит теги (картинки)... а обрезать вам как? По кол-ву символов, по кол-ву слов?...
Вообще: "RSS — семейство XML-форматов, предназначенных для описания лент новостей, анонсов статей, изменений в блогах и т. п." источник
т.е. краткий обзор новости, она изначально короткая... и если кто-то использует чтобы рассылать целые статьи, то это уже к разработчикам сайта )
  Ответить с цитированием
Старый 07.05.2010, 04:14   #6
vasiljok3
Продвинутый
Цитата:
Сообщение от Hitsi Посмотреть сообщение
а обрезать вам как? По кол-ву символов, по кол-ву слов?...
По количеству слов, наверное, лучше. Хотя, с другой стороны, вроде без разницы. Можно и по количеству символов...
  Ответить с цитированием
Старый 07.05.2010, 09:33   #7
Hitsi
Специалист
 
Аватар для Hitsi
Разница в том, что может слово обрезаться по середина.
Добавить следующее под той строчкой которую изменили
Код:
$temp=explode(" ", $news[$i]['description']);
$temp=array_chunk($temp, 100); // для 100 слов
$temp=implode(" ", $temp[0]);
$news[$i]['description']=$temp;
  Ответить с цитированием
Ответ

Закладки

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



 
 

Текущее время: 19:37 25.05.2012. Часовой пояс GMT +4.


Powered by vBulletin® Version 3.0.10
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd. Перевод: zCarot