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

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

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




Местный

Сообщений: 26
Зарегистрирован: 07 Мая 2009, 18:58:53
Сказали спасибо 1 раз
Статус: offline
Опубликовано 07 Мая 2009, 19:05:29
Всем добрый день!
Появилась потребность отредактировать rss ленту. В ленте необходимо между тегами <yandex:full-text>и </yandex:full-text> выводить полную новость. Пользователям не обязательно видеть полное описание новости (это делается исключительно для Яндекса) - что бы он мог забирать новости в формате rss.

Сам я в этом не силен, на форуме такие темы не поднимались, а потому информации найти не удалось. Буду весьма благодарен за помощь.

Вот сам код ленты:
<?php
/*---------------------------------------------------+
| PHP-Fusion 6 Content Management System
+----------------------------------------------------+
| RSS News
+----------------------------------------------------+
| PHP-Fusion SF Group
| Copyright © 2007 by SF
| http://www.rus-phpfusion.com/
+----------------------------------------------------*/
require_once "maincore.php";
header("Content-Type: text/xml");
echo "<?xml version=\"1.0\" encoding=\"".$locale['charset']."\"?>\n\n\n\n\n";
global $settings, $db_prefix;
$result = dbquery("SELECT * FROM ".$db_prefix."news ORDER BY news_datestamp DESC LIMIT 0, 10");
$numrows = dbrows($result);
echo "<rss version=\"2.0\">\n\n";
echo "<channel>\n";
echo "<title>".htmlspecialchars($settings['sitename']).". Новости</title>\n";
echo "<link>".$settings['siteurl']."</link>\n";
echo "<description>Новости</description>\n";
echo "<image>
<title>".htmlspecialchars($settings['sitename'])."</title>
<url>".$settings['sitebanner']."</url>
<link>".$settings['siteurl']."</link>
</image>";
echo "<language>ru-ru</language>\n\n";
for ($i=0;$i < $numrows;$i++) {
$data = dbarray($result);
if ($data['news_breaks'] == "y") { $data['news_news'] = nl2br($data['news_news']); }
echo "<item>\n";
echo "<title>".$data['news_subject']."</title>\n";
echo "<link>".stripslashes(htmlspecialchars($settings['siteurl']."news.php?readmore=".$data['news_id']))."&l
t;/link>\n";
echo "<description>".stripslashes(htmlspecialchars($data['news_news']))."</description>\n";
echo "<pubDate>".date("r",$data['news_datestamp'])."</pubDate>\n";
echo "<guid>".stripslashes(htmlspecialchars($settings['siteurl']."news.php?readmore=".$data['news_id']))."&l
t;/guid>\n";
echo "</item>\n\n";
}
echo "</channel>\n";
echo "</rss>";
?>


[Изменил(а) Klersemon, 08 Мая 2009, 00:10:52]  
^ наверх ^
# 2  
Klersemon
Пользователь

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




Местный

Сообщений: 26
Зарегистрирован: 07 Мая 2009, 18:58:53
Сказали спасибо 1 раз
Статус: offline
Опубликовано 08 Мая 2009, 15:42:57
Вот, удалось сделать рабочий код:
<?php
/*---------------------------------------------------+
| PHP-Fusion 6 Content Management System
+----------------------------------------------------+
| RSS News
+----------------------------------------------------+
| PHP-Fusion SF Group
| Copyright © 2007 by SF
| http://www.rus-phpfusion.com/
+----------------------------------------------------*/
require_once "maincore.php";
header("Content-Type: text/xml");
echo "<?xml version=\"1.0\" encoding=\"".$locale['charset']."\"?>\n\n\n\n\n";
global $settings, $db_prefix;
$result = dbquery("SELECT * FROM ".$db_prefix."news ORDER BY news_datestamp DESC LIMIT 0, 10");
$numrows = dbrows($result);
echo "<rss version=\"2.0\">\n\n";
echo "<channel>\n";
echo "<title>".htmlspecialchars($settings['sitename']).". Новости</title>\n";
echo "<link>".$settings['siteurl']."</link>\n";
echo "<description>Новости</description>\n";
echo "<image>
<title>".htmlspecialchars($settings['sitename'])."</title>
<url>".$settings['sitebanner']."</url>
<link>".$settings['siteurl']."</link>
</image>";
echo "<language>ru-ru</language>\n\n";

for ($i=0;$i < $numrows;$i++)
{

$data = dbarray($result);
if ($data['news_breaks'] == "y") { $data['news_news'] = nl2br($data['news_news']); }
echo "<item>\n";

echo "<title>".$data['news_subject']."</title>\n";

echo "<link>".stripslashes(htmlspecialchars($settings['siteurl']."news.php?readmore=".$data['news_id']))."&l
t;/link>\n";

echo "<description>".stripslashes(htmlspecialchars($data['news_news']))."</description>\n";

echo "<pubDate>".date("r",$data['news_datestamp'])."</pubDate>\n";

echo "<yandex:full-text>".stripslashes(htmlspecialchars($data['news_extended']))."</yandex:full-text>";

echo "</item>\n\n";
}

echo "</channel>\n";
echo "</rss>";
?>

Единственное что теперь нужно - так это удалить картинки в описаниях новости. Как это можно сделать?:)


[Изменил(а) Klersemon, 08 Мая 2009, 15:43:10]  
^ наверх ^
# 3  
Klersemon
Пользователь

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




Местный

Сообщений: 26
Зарегистрирован: 07 Мая 2009, 18:58:53
Сказали спасибо 1 раз
Статус: offline
Опубликовано 09 Мая 2009, 01:56:30
В поле news_extended хранится расширенное описание новости. Для его импортирования в ленту пишем:
echo "<yandex:full-text>".stripslashes(htmlspecialchars($data['news_extended']))."</yandex:full-text>";
А как быть в том случае, если нам надо импортировать новость , но при этом не учитывать ссылки которые проставляются в этой новости на другие сайты?

Вот тут так реализовано http://www.disputs.ru/rss.php ( не учитываются не ссылки не картинки)


[Изменил(а) Klersemon, 09 Мая 2009, 03:47:50]  
^ наверх ^
# 4  
Psc
SF Team

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

Psc

SF Support Team

Почетный SF

Сообщений: 2515
Откуда: As is
Зарегистрирован: 10 Ноября 2007, 13:15:07
Сказали спасибо 353 раз
Статус: offline
Опубликовано 09 Мая 2009, 08:30:42
Если тебе просто нада убить ссылки замени их тег на другой.


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

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




Местный

Сообщений: 26
Зарегистрирован: 07 Мая 2009, 18:58:53
Сказали спасибо 1 раз
Статус: offline
Опубликовано 09 Мая 2009, 12:45:07
Да, нужно убрать ссылки. К примеру есть новость, в которую мы вставили картинку. При отображении новости через rss в коде страницы будем видеть ссылку на эту картинку <img src='images/news/155.jpg' style='margin:5px' align='left'> - сама задумка в том, что бы удалить картинки из rss ленты, но при этом оставить эти картинки в самих новостях на сайте.

Не совсем понял задумку, заменить теги.. Можно подробней?smiley
 
^ наверх ^
# 6  
Psc
SF Team

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

Psc

SF Support Team

Почетный SF

Сообщений: 2515
Откуда: As is
Зарегистрирован: 10 Ноября 2007, 13:15:07
Сказали спасибо 353 раз
Статус: offline
Опубликовано 10 Мая 2009, 17:10:48
img заменить на hernya и браузер картинку отображать не будет.


--------------------
Retired
^ наверх ^
Перейти на форум:


105,179,087 уникальных посетителей
сейчас: 10 Ноября 2024, 22:40:51
Генерация страницы: 0.18 сек.

Original size:26 кб.
GZipped size: 6 кб.
Compression:76%