Регистрация    Забыли пароль?        Правила форума    FAQ (читать перед созданием новой темы)
Имя   Пароль  запомнить
  
Просмотр темы
Вернуться на сайт: PHP-Fusion SF Russian Support Site

Форум поддержки PHP-Fusion SF | PHP-Fusion SF - Разное | Вопросы / Жалобы / Предложения
# 1 Тема: Как правильно реализовать обработчик rss ленты и вывод новостей на сайте?
kundagole
Пользователь

Avatar пользователя




Местный

Сообщений: 15
Зарегистрирован: 14 Апреля 2011, 02:36:56
Сказали спасибо 0 раз
Статус: offline
Опубликовано 15 Апреля 2011, 19:49:50
Хотелось бы получить возможность выводить новости других сайтов посредством rss. Сам обработчик rss ленты удалось получить благодаря этому, и еще нескольким другим форумам (достаточно указать адрес rss ленты и вставить код который я привел ниже в созданную через админку панель). Вроде как и обрабатывает: указываем адрес ленты, и на выходе получаем вывод новостей.

Но проблема в следующем:
По-видимому, где-то пропущена скобка, или опечатка:
Если код, который указан ниже вставить в "центральную панель" - то все идеально отображается, новости выводятся. Но вот если вставить либо в "левую" либо в "правую" панель, то пропадают другие колонки на сайте. Есть идеи, в чем может быть проблема?



function parse_rss($reg_exp, $xml_data) {
preg_match_all($reg_exp, $xml_data, $temp);
return array(
'count'=>count($temp[0]),
'title'=>$temp[1],
'link'=>$temp[2],
'desc'=>$temp[3]
);
}


function output_rss($pattern, $rss_data) {
for($i=0; $i<$rss_data['count']; $i++) {
$temp .= sprintf($pattern,
$rss_data['link'][$i],
html_entity_decode($rss_data['title'][$i]),
html_entity_decode($rss_data['desc'][$i])
);
}
return $temp;
}


$url = 'http://www.rus-phpfusion.com/rss.php';

$reg_exp = '#<item>.*?<title>(.*?)<\/title>.*?';
$reg_exp .='<link>(.*?)<\/link>.*?<description>';
$reg_exp .='(.*?)<\/description>.*?<\/item>#si';
?>
<noindex>
<TABLE bgcolor="#E1E7EB" border=0 cellpadding=0 bordercolorlight="#E1E7EB" bordercolordark="#E1E7EB" cellspacing=1>
<TR valign=top>
<TD width=50%><div class="wpmd">

<div>

<?php


$pattern = '<a href="%s"><b>%s</b></a><br><font color="#003150">%s<br><br><br><br><br><hr></font>';

if ( $xml_data = file_get_contents($url) ) {
$rss_data = parse_rss($reg_exp, $xml_data);
echo output_rss($pattern, $rss_data);
?>
</div>

</div>
</TD>
</TR>
</TABLE>

</noindex>


<?php

}



[Изменил(а) kundagole, 17 Апреля 2011, 21:09:55]  
^ наверх ^
# 2  
pozitiv
SF Team

Avatar пользователя

паZитифф

SF Support Team

Почетный SF

Сообщений: 1676
Откуда: Киев
Зарегистрирован: 18 Ноября 2007, 18:49:13
Сказали спасибо 148 раз
Статус: offline
ICQ статус 3902393
Опубликовано 16 Апреля 2011, 17:21:52
Попробуй так


function parse_rss($reg_exp, $xml_data) {
preg_match_all($reg_exp, $xml_data, $temp);
return array(
'count'=>count($temp[0]),
'title'=>$temp[1],
'link'=>$temp[2],
'desc'=>$temp[3]
);
}


function output_rss($pattern, $rss_data) {
for($i=0; $i<$rss_data['count']; $i++) {
$temp .= sprintf($pattern,
$rss_data['link'][$i],
html_entity_decode($rss_data['title'][$i]),
html_entity_decode($rss_data['desc'][$i])
);
}
return $temp;
}


$url = 'http://wsrss.bbc.co.uk/russian/index.xml';

$reg_exp = '#<item>.*?<title>(.*?)<\/title>.*?';
$reg_exp .='<link>(.*?)<\/link>.*?<description>';
$reg_exp .='(.*?)<\/description>.*?<\/item>#si';
?>
<noindex>
<TABLE bgcolor="#E1E7EB" border=0 cellpadding=0 bordercolorlight="#E1E7EB" bordercolordark="#E1E7EB" cellspacing=1>
<TR valign=top>
<TD width=50%><div class="wpmd">

<div>

<?php


$pattern = '<a href="%s"><b>%s</b></a><br><font color="#003150">%s<br><br><br><br><br><hr></font>';

if ( $xml_data = file_get_contents($url) ) {
$rss_data = parse_rss($reg_exp, $xml_data);
echo output_rss($pattern, $rss_data);


}


?>
</div>

</div>
</TD>
</TR>
</TABLE>

</noindex>


<?php


[Изменил(а) pozitiv, 16 Апреля 2011, 17:22:14]

--------------------
wmz - Z226856101527
wmr - R513979829437

Все вопросы задавать на форуме. На вопросы заданные в приват или асю неотвечаю!
^ наверх ^ 3902393 http://nekto.me
1 пользователь сказал спасибо Вам: kundagole
# 3  
kundagole
Пользователь

Avatar пользователя




Местный

Сообщений: 15
Зарегистрирован: 14 Апреля 2011, 02:36:56
Сказали спасибо 0 раз
Статус: offline
Опубликовано 16 Апреля 2011, 17:55:57
pozitiv спасибо, но оказалось, что в самом коде все было правильно, проблема была в другом:
Дело в том, что я создал и включит две таких панели. Одну панель для вывода новостей с газеты РБК, вторую - для новостей с Известий. Проблема в том, что одновременно две панели не хотят работать. Если включить одну из них - то все работает прекрасно. А вот если сразу две - то работает только одна. Есть идеи, как это поправить?


[Изменил(а) kundagole, 17 Апреля 2011, 02:32:31]  
^ наверх ^
# 4  
kundagole
Пользователь

Avatar пользователя




Местный

Сообщений: 15
Зарегистрирован: 14 Апреля 2011, 02:36:56
Сказали спасибо 0 раз
Статус: offline
Опубликовано 17 Апреля 2011, 02:38:54
Видимо все дело в том, что имена массивов для хранения данных одинаковые. И при включении одновременно двух панелей - они конфликтуют между собой.
Полагаю что за это отвечает участок кода:
function parse_rss($reg_exp, $xml_data) {
preg_match_all($reg_exp, $xml_data, $temp);
return array(
'count'=>count($temp[0]),
'title'=>$temp[1],
'link'=>$temp[2],
'desc'=>$temp[3]


Но что конкретно здесь изменять? Методом "тыка" к успеху так и не удалось прийти.
 
^ наверх ^
# 5  
kundagole
Пользователь

Avatar пользователя




Местный

Сообщений: 15
Зарегистрирован: 14 Апреля 2011, 02:36:56
Сказали спасибо 0 раз
Статус: offline
Опубликовано 17 Апреля 2011, 20:58:41
В самом коде была опечатка. Только что поправил. Теперь он точно работает, достаточно скопировать содержимое из первого поста в панель, которую создаем посредством админки php-fusion.

PS Вопрос касательно реализации использования одновременно двух и более панелей с таким кодом по прежнему актуален.


[Изменил(а) kundagole, 17 Апреля 2011, 21:12:16]  
^ наверх ^
# 6  
pozitiv
SF Team

Avatar пользователя

паZитифф

SF Support Team

Почетный SF

Сообщений: 1676
Откуда: Киев
Зарегистрирован: 18 Ноября 2007, 18:49:13
Сказали спасибо 148 раз
Статус: offline
ICQ статус 3902393
Опубликовано 17 Апреля 2011, 21:25:14
Возможно проблема в том что одинаковые названия переменных

$url

и

$reg_exp

и других


--------------------
wmz - Z226856101527
wmr - R513979829437

Все вопросы задавать на форуме. На вопросы заданные в приват или асю неотвечаю!
^ наверх ^ 3902393 http://nekto.me
# 7  
kundagole
Пользователь

Avatar пользователя




Местный

Сообщений: 15
Зарегистрирован: 14 Апреля 2011, 02:36:56
Сказали спасибо 0 раз
Статус: offline
Опубликовано 17 Апреля 2011, 21:41:14
Раньше уже переменные пробовал менять, но как оказалось, некоторые упустил. Только что сделал замену абсолютно всех переменных, и код - заработал. Благодарю за помощь.
 
^ наверх ^
# 8  
Vjkjnjd
Пользователь

Avatar пользователя



новичек

Сообщений: 5
Зарегистрирован: 11 Июля 2010, 14:16:15
Сказали спасибо 0 раз
Статус: offline
Опубликовано 28 Апреля 2011, 20:12:17
Что делать, если новости отображаются так после установки кода:

Вьетнам: Температура РїРѕРІС‹С?ается
<p>В«Рa33;стинные финны» следуют РїРѕ пути таких партий, как Партия СЃРІРѕР±РѕРґС‹ РІ Нидерландах, возглавляемая крайне-правым политиком Гертом Вилдерсом, Рё Национальный фронт РІРѕ Франции, использующих националистические Рё анти-иммигрантские предубеждения для раскола рабочих Рё защиты правящих элит, являющихся архитекторами экономического РєСЂРёР·РёСЃР°.</p>


При этом так отображаются новости с сайтов, сделанных НЕ на php-fusion


--------------------
Vjkjnjd - Молотов - моя фамилия. Я не спам!
^ наверх ^
# 9  
Psc
SF Team

Avatar пользователя

Psc

SF Support Team

Почетный SF

Сообщений: 2515
Откуда: As is
Зарегистрирован: 10 Ноября 2007, 13:15:07
Сказали спасибо 353 раз
Статус: offline
Опубликовано 12 Мая 2011, 18:34:54
Вьетнам: Температура повышается
<p>«p1;33;стинные финны» следуют по пути таких партий, как Партия свободы в Нидерландах, возглавляемая крайне-правым политиком Гертом Вилдерсом, и Национальный фронт во Франции, использующих националистические и анти-иммигрантские предубеждения для раскола рабочих и защиты правящих элит, являющихся архитекторами экономического кризиса.</p>


оно?
это юникод, его нада перкодировать будет.
iconv я думаю оптимальный вариант.


--------------------
Retired
^ наверх ^
# 10  
lee8558
Пользователь

Avatar пользователя




новичек

Сообщений: 2
Зарегистрирован: 10 Мая 2011, 05:08:28
Сказали спасибо 0 раз
Статус: offline
Опубликовано 13 Мая 2011, 13:33:23
Спасибо что откликнулись. Проблему решил.
Просто на этом сайте в самом модуле новостей прописали стили. Я их тоже себе прописал и всё стало как надо.
Спасибо за помощь.
monster energy tee shirt
 
^ наверх ^
Перейти на форум:


105,460,091 уникальных посетителей
сейчас: 22 Ноября 2024, 06:42:29
Генерация страницы: 0.25 сек.

Original size:34 кб.
GZipped size: 8 кб.
Compression:76%