Вход
Логин: Пароль:Забыли пароль?
Запомнить вас на этом компьютере?
Войти скрытым?

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
Выводим новые темы с форума используя парсер RSS ленты, парсер для любого сайта или форума, настраиваемый и с кешем

Everybody
сообщение 15.8.2012, 15:59
Сообщение #1


Администратор
*******
Группа: Admin (root)
Сообщений: 2562
Регистрация: 16.10.2007
Пользователь №: 1
Спасибо сказали: 1671 раз(а)



Репутация:   12345  
Предлогаю скрипт выводящий rss ленту на сайте, который можно использовать как вывод новых тем с форума.
Подойдет для любого сайта или форума.
Скрипт представляет собой пварсер rss ленты и форматирующий содержимое в виде html

Настройки:
- указать можно любой источник rss ленты
- время кеша указывается в секундах
- имя файла кеша
- максимальное количество символов в загаловке
- максимальное количество символов в описании
- максимальное количество выводимых записей
- настройка шаблона вывода записей смотрите function template($arr,$countitem){ ... }

Подключить вывод на сайте можно через <?php include 'rssko.php'; ?>
или через jquery <div class="rssko"></div> <script type="text/javascript">$.get('rssko.php',function(data){ $('.rssko').html(data);});</script>

CODE
<?php
#Настройки
# скрипт написан tooby93 (skype: tooby93)
$rssurl = "http://forum.x-mu.net/ipb.html?act=rssout&id=1"; #ссылка рсс ленты
$cachetime = "3600"; #время кеша, через которое обновиться в секундах
$cachefile = "temp.dat"; #Файл кеша
$linkx = "50"; #макс. кол-во символов заголовка
$descrx = "150"; #макс.кол-во символов описания
$countitem = 10; #макс. кол-во ссылок
$maxwords = 3;
#Настройки

header("Content-type:text/html; Charset=UTF-8");

if(file_exists($cachefile)){
if((time()-filemtime($cachefile)) < $cachetime){
$data = file_get_contents($cachefile);
if($data != ''){
$data = json_decode($data,true);
echo template($data,$countitem);
die();
}

}
}

$data = curl($rssurl);
if($data != ''){
$xml = simplexml_load_string($data);
$items = $xml->channel->item;
$items_list = array();
if(count($items) > 0){
foreach($items as $item){
$desc = remove_whitespace(strip_tags(htmlspecialchars_decode($item->description)));
$desc = getPrewText($desc,$maxwords,$descrx);
$title = getPrewText((string)$item->title,$maxwords,$linkx);
$items_list[] = array('title'=>$title,'link'=>(string)$item->link,'desc'=>$desc);
}

#Запись в кеш
if(file_exists($cachefile)){
file_put_contents($cachefile, json_encode($items_list));
}

echo template($items_list,$countitem);


}
}else{
echo 'временно недоступно';
}




function curl($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$result = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

if($httpCode == 200){
return $result;
}

}

function template($arr,$countitem){
$i = 0;
?>
<ul>
<?php foreach($arr as $item):?>
<?php $i++; if($i == $countitem+1){die();} ?>
<li class="des"><a href="<?=$item['link'];?>"><?=$item['title'];?></a><?=$item['desc'];?></li>
<?php endforeach;?>
</ul>

<?
}


function remove_whitespace($string) {
$string = preg_replace ('/s+/', ' ', $string) ;
$string = trim($string) ;
return $string;
}

function getPrewText($text,$maxwords=60,$maxchar=500) {
//$text=strip_tags($text);
$words=split(' ',$text);
$text='';
foreach ($words as $word) {
if (mb_strlen($text.' '.$word)<$maxchar) {
$text.=' '.$word;
}
else {
$text.='...';
break;
}
}
return $text;
}

?>


Дэмо: http://x-mu.net/ блок "Новое с форума"
Перейти в начало страницы
+Цитировать сообщение

RadeoN
сообщение 18.5.2016, 9:59
Сообщение #2


V.I.P.
*****
Группа: Пользователи
Сообщений: 301
Регистрация: 27.1.2009
Пользователь №: 4303
Спасибо сказали: 18 раз(а)



Репутация:   -1  
Fatal error: Call to undefined function curl_init() in ....... on line 57


$ch = curl_init();
Перейти в начало страницы
+Цитировать сообщение

epmak
сообщение 18.5.2016, 11:46
Сообщение #3


MWCE 1.6.2 FOR FREE
*******
Группа: Проверенные II
Сообщений: 3749
Регистрация: 27.6.2008
Пользователь №: 1328
Спасибо сказали: 1041 раз(а)



Репутация:   6  
ну так у тебя не включен курл...
Перейти в начало страницы
+Цитировать сообщение

Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последнее сообщение
Нет новых Новые модели для MUonline своей разработки
ВНИМАНИЕ !!! Тема перегружена графикой !
130 MOHAPX 38124 1.5.2016, 19:20 Посл. сообщение: Lifeordeath
Закрыта ВАЖНО: Новые Разделы Подфорума "реклама Серверы Mu!"
правила поведения, разработка сертификатов от X-MU.NET
7 MOHAPX 3601 26.4.2016, 16:55 Посл. сообщение: Everybody
Нет новых сообщений баннеры для форума
Голосуй, пополнить счёт и.т.д
2 ausmann 942 4.3.2016, 14:10 Посл. сообщение: ausmann
Нет новых сообщений ув. Пользователь форума x-mu.net !
Mu Server .. SeaSon I ...
2 xXxXxXx 917 1.1.2016, 17:27 Посл. сообщение: xXxXxXx
Нет новых сообщений Не отображаться новые камни RMST
0 kombo 507 11.9.2015, 13:48 Посл. сообщение: kombo

 

RSS Текстовая версия Сейчас: 14.11.2018, 20:57
Яндекс.Метрика  Перевод с помощью Google English French German Italian Portuguese Russian Spanish