Forums / National / Russian / RSS - Зло или полезная фича ?

12>>>

Вся правда об RSS

Ratibor
#1 2009-02-05 20:14
Меня интересует вот такой вопрос:
можно ли в RSS рассылки вставить коды счетчиков, таких к примеру как rambler top 100 и т.п. ?
Объясняю причину.
Юзеры подписываются на новости, для них это хорошо, не надо лазить по сайтам,
но мне как админу то какая от этого польза ?
Юзеры не заходят на сайт и соответственно счетчик не крутится :-)
Решаемо это как то ?
Не задавай глупых вопросов, не услышишь вранья.
Amro
#2 2009-02-05 20:59
В RSS рассылки ? или в модуль вывода Rss ленты ?
Вообще в спецификации rss (1.0, 2.0 или Atom) нет тегов для вставки javascript, да и программы читалки rss лент его обрабатывать не будут, так что смысла нет.
Ratibor
#3 2009-02-05 21:02
# Amro : В RSS рассылки ? или в модуль вывода Rss ленты ?
та что в rss.php в корне.

Слышал что там прокатывает какое то шаманство :-)
Так вроде не через тэг, а как то хитро.
Софт для чтения rss как то же обращается к странице ?
Не задавай глупых вопросов, не услышишь вранья.
Amro
#4 2009-02-05 21:19
Самый лучший способ это проверить ))) ну в спец софте для чтения rss срабатывать точно не будет а вот например в лисе, опере т.е. в браузерах, думаю должно сработать. alert("Test"); в помощь )
jcrush
#5 2009-02-05 22:21
по сути смотрите как в дле сделали правильно, все в настройках регулируется:
Вариант 1: рсс - вся новость
2. рсс под яндекс формат

по мне было бы неплохо настроить вывод рсс вручную например в середине рсс вставить урл сайта или ссылку атоматом ставить, это куда лучше если с тебя грабят хоть ссылку может не заметят...
SEO блог: http://blog.stfw.ru/
Trustmaster
#6 2009-02-05 22:56
Это важный религиозный вопрос вы подняли, товарищ Ратибор! Некоторые сайты вообще не предоставляют ленты в формате RSS/Atom, чтобы те не отбирали у них хлеб насущный за счет баннеропоказов, контекста и прочих приятностей.

Некоторые RSS читалки (вроде моей Liferea) имеют поддержку JavaScript, однако в общем случае в RSS можно добавлять только серверные счетчики (в PHP-скрипте) и счетчики-картинки. Баннеры, кстати, тоже можно вставлять, если у пользователя не отключено отображение графики в RSS.

Мудрый же ньюсмейкер размещает в RSS-лентах только первый абзац новости, а остальное, как говорится, под катом.

Так что какие-то такие интеллектуальные настроечки, чтобы админ мог сам решить, что пользователи смогут грабить по RSS, а что нет, надо бы и нам воплотить.
May the Source be with you!
medar
#7 2009-02-06 02:26
Ратибор, а зачем тебе надо чтобы счетчик крутился ?
Чтобы отслеживать популярность RSS можно его зарулить через feedburner.

Резюмируя, надо сделать
1. поддержку [ more ] в теле статьи
2. или обрезку текста после N-нного символа и вставку ссылки "читайте дальше на сайте"
3. возможность из админки отключать rss - все, только статьи, только комменты, только сообщения форума.
Так ?
rangjungyeshe.ru
This post was edited by medar (2009-02-06 12:18, 15 years ago)
Ratibor
#8 2009-02-06 02:44
# medar : Ратибор, а зачем тебе надо чтобы счетчик крутился ?
Чтобы отслеживать популярность RSS можно его зарулить через feedburner.
Популярность rss мне до фени.
А вот показатели счетчика влияют на цену размещаемой рекламы на сайте :-)
Не задавай глупых вопросов, не услышишь вранья.
jcrush
#9 2009-02-06 08:40
интересно все такие глупые, посмотрели на счетчик взяли доступ к стате, а там счетчик на левых сайтах крутили, ну ну
SEO блог: http://blog.stfw.ru/
Ratibor
#10 2009-02-06 16:34
# jcrush : а там счетчик на левых сайтах крутили, ну ну
Речь не идет о левых сайтах, вот потому я и говорил, там как то хитро надо вставлять,
а не просто в тело самого сообщения.

Во, нашел я старый плагин rss, смотрите в самом внизу:

<?PHP

/* ====================
Land Down Under - Website engine
Copyright Neocrome
http://www.neocrome.net

[BEGIN_LDU]
File=rss.php
Version=802
Updated=2005-dec-12
Type=Standalone
Author=Neocrome
Description=
[END_LDU]
==================== */

define('LDU_CODE', TRUE);
$location = "RSS";

require('system/functions.php');
//require('system/templates.php');
require('datas/config.php');
require('system/common.php');

// ======= Stuff that can be set ======

$cfg_maxlines = 20;
$cfg_charset = $cfg['charset'];
$cfg_timetolive = 300;
$cfg_lang = $usr['lang'];
$ldu_cache = FALSE;
$sys['now'] = time();

// ========================

//ldu_connect($cfg['mysqlhost'], $cfg['mysqluser'], $cfg['mysqlpassword'], $cfg['mysqldb']);
//unset($cfg['mysqlhost'], $cfg['mysqluser'], $cfg['mysqlpassword'], $cfg['mysqldb']);

unset ($category, $items);
$m = cv('m','G','STX');

// ======= Loading the categories ======

$sql = ldu_mysql_query("SELECT * FROM $db_structure ORDER BY structure_path");

while ($row = mysql_fetch_array($sql))
	{
	if (!empty($row['structure_icon']))
		{ $row['structure_icon'] = "<img src=\"".$row['structure_icon']."\" alt=\"\" />"; }

	$row['structure_title'] = stripslashes($row['structure_title']);
	$row['structure_desc'] = stripslashes($row['structure_desc']);
	$path2 = strrpos($row['structure_path'],".");

	if ($path2>0)
		{
		$path1 = substr($row['structure_path'],0,($path2));
		$path[$row['structure_path']]=$path[$path1].".".$row['structure_code'];
		$tpath[$row['structure_path']]=$tpath[$path1]." ".$cfg['separator']." ".$row['structure_title'];
		}
	else
		{
		$path[$row['structure_path']]=$row['structure_code'];
		$tpath[$row['structure_path']]=$row['structure_title'];
		}

	$order = explode('.',$row['structure_order']);

	$ldu_cat[$row['structure_code']] = array (
		'path' => $path[$row['structure_path']],
		'tpath' => $tpath[$row['structure_path']],
		'rpath' => $row['structure_path'],
		'title' => $row['structure_title'],
		'desc' => $row['structure_desc'],
		'minlevel' => $row['structure_minlevel'],
		'icon' => $row['structure_icon'],
		'pages' => $row['structure_pages'],
		'links' => $row['structure_links'],
		'group' => $row['structure_group'],
		'order' => $order[0],
		'way' => $order[1]
			);
	}

$ldu_cat['system'] = array (
	'path' => '',
	'tpath' => '',
	'rpath' => '',
	'title' => $L['System'],
	'desc' => '',
	'minlevel' => 0,
	'icon' => '',
	'pages' => 1,
	'links' => 0,
	'group' => 0,
	'order' => 'title',
	'way' => 'asc'
		);

$sql = ldu_cgetall();

if ($sql)
	{
	while ($row = mysql_fetch_array($sql))
		{ $$row['c_name'] = unserialize(stripslashes($row['c_value'])); }
	}

// ======= Grabbing the datas ======

switch ($m)
	{

	// ======= Pages ======

	case 'pages':

	$category = "Pages";

	if (!$rss2_pages)
		{
		$sql = ldu_mysql_query("SELECT page_id, page_title, page_cat, page_desc, page_date FROM $db_pages WHERE page_state=0 AND page_cat NOT LIKE 'system' ORDER by page_date DESC LIMIT $cfg_maxlines ");

		while ($row = mysql_fetch_array($sql))
			{
			if ($usr['level']>=$ldu_cat[$row['page_cat']]['minlevel'])
				{
				$items .= "<item>\n";
				$items .= " <title>".htmlspecialchars($ldu_cat[$row['page_cat']]['title']." : 	".stripslashes($row['page_title']))."</title>\n";
				$items .= " <description>".htmlspecialchars(stripslashes($row['page_desc']))."</description>\n";
				$items .= " <link>".$cfg['mainurl']."/page.php?id=".$row['page_id']."</link>\n";
				$items .= " <pubdate>".date("r",$row["page_date"])."</pubdate>\n";
				$items .= " <comments>".$cfg['mainurl']."/comments.php?id=p".$row['page_id']."</comments>\n";
				$items .= "</item>\n\n";
				}
			}
		ldu_cstore('rss2_pages',$items,$cfg_timetolive);
		}
	else
		{ $items = $rss2_pages; }

	break;

	// ======= Links ======

	case 'links':

	$category = "Links";

	if (!$rss2_links)
		{
		$sql = ldu_mysql_query("SELECT link_id, link_cat, link_title, link_desc FROM $db_links WHERE link_state=0 ORDER by link_id DESC LIMIT $cfg_maxlines ");

		while ($row = mysql_fetch_array($sql))
			{
			if ($usr['level']>=$ldu_cat[$row['link_cat']]['minlevel'])
				{
				$items .= "<item>\n";
				$items .= " <title>".htmlspecialchars($ldu_cat[$row['link_cat']]['title']." : ".stripslashes($row['link_title']))."</title>\n";
				$items .= " <description>".htmlspecialchars(stripslashes($row['link_desc']))."</description>\n";
				$items .= " <link>".$cfg['mainurl']."/links.php?id=".$row['link_id']."&amp;a=jump</link>\n";
				$items .= " <pubdate>".date("r",time())."</pubdate>\n";
				$items .= "</item>\n\n";
				}
			}
		ldu_cstore('rss2_links',$items,$cfg_timetolive);
		}
	else
		{ $items = $rss2_links; }

	break;

	// ======= Events ======

	case 'events':

	$category = "Events";

	if (!$rss2_events)
		{
		$sql = ldu_mysql_query("SELECT event_id,event_date, event_title FROM $db_events WHERE event_state=0 AND event_date>'".$sys['now']."' ORDER by event_date ASC LIMIT $cfg_maxlines ");

		while ($row = mysql_fetch_array($sql))
			{
			$items .= "<item>\n";
			$items .= " <title>".htmlspecialchars(stripslashes($row['event_title']))."</title>\n";
			$items .= " <description>"."-"."</description>\n";
			$items .= " <link>".$cfg['mainurl']."/events.php?m=details&amp;id=".$row['event_id']."</link>\n";
			$items .= " <pubdate>".date("r",$row['event_date'])."</pubdate>\n";
			$items .= " <comments>".$cfg['mainurl']."/comments.php?id=e".$row['event_id']."</comments>\n";
			$items .= "</item>\n\n";
			}
		ldu_cstore('rss2_events',$items,$cfg_timetolive);
		}
	else
		{ $items = $rss2_events; }

	break;

	// ======= Forums ======

	case 'forums':

	$category = "Forums";

	if (!$rss2_forums)
		{
		$sql = ldu_mysql_query("SELECT t.ft_id, t.ft_title, t.ft_updated, s.fs_title
			FROM $db_forum_topics t,$db_forum_sections s
			WHERE t.ft_sectionid=s.fs_id AND s.fs_minlevel=0 AND t.ft_movedto=0
			ORDER by t.ft_updated DESC LIMIT $cfg_maxlines ");

		while ($row = mysql_fetch_array($sql))
			{
			$items .= "<item>\n";
			$items .= " <title>".htmlspecialchars(stripslashes($row['fs_title'])." : ".stripslashes($row['ft_title']))."</title>\n";
			$items .= " <description>"." "."</description>\n";
			$items .= " <link>".$cfg['mainurl']."/forums.php?m=posts&amp;q=".$row['ft_id']."&amp;n=last#bottom</link>\n";
			$items .= " <pubdate>".date("r",$row['ft_updated'])."</pubdate>\n";
			$items .= "</item>\n\n";
			}
		ldu_cstore('rss2_forums',$items,$cfg_timetolive);
		}
	else
		{ $items = $rss2_forums; }

	break;

	// ======= News ======

	default :

	$category = "News";

	if (!$rss2_news)
		{
		$sql = ldu_mysql_query("SELECT news_id, news_date, news_title, news_text FROM $db_news WHERE news_minlevel=0 AND news_state=0 AND news_date<'".$sys['now']."' ORDER by news_date DESC LIMIT $cfg_maxlines ");

		while ($row = mysql_fetch_array($sql))
			{
			$row["news_text"] = stripslashes($row['news_text']);
			$readmore = strpos($row['news_text'],"<more>");
			if ($readmore>0)
				{ $row['news_text'] = substr($row['news_text'], 0, $readmore)."..."; }
			$row['news_text'] = ldu_parse($row['news_text'], TRUE, TRUE, TRUE);

			$items .= "<item>\n";
			$items .= " <title>".htmlspecialchars(stripslashes($row['news_title']))."</title>\n";
			$items .= " <description>".htmlspecialchars($row['news_text'])."</description>\n";
			$items .= " <link>".$cfg['mainurl']."/index.php?m=single&amp;id=".$row['news_id']."</link>\n";
			$items .= " <pubdate>".date("r",$row['news_date'])."</pubdate>\n";
			$items .= " <comments>".$cfg['mainurl']."/comments.php?id=n".$row['news_id']."</comments>\n";
			$items .= "</item>\n\n";
			}
		ldu_cstore('rss2_news',$items,$cfg_timetolive);
		}
	else
		{ $items = $rss2_news; }

	break;

	}

// ======= And outputing the thing ======

// Fix for relative URLs, by Johnb :
/*
$paturl = '`<a href="(?!(http|/))`i';
$patimg = '`<img src="(?!(http|/))i`';
$base = '<a href='.$cfg['mainurl']."/";
$base = '<a href="'.$cfg['mainurl']."/";
$items = preg_replace($paturl, $base, $items);
$items = preg_replace($patimg, $base, $items);
*/
// --- End of the fix

header('Content-type: text/xml');


$output = "<?xml version=\"1.0\" encoding=\"".$cfg_charset."\"?>\n";
$output .= "<rss version=\"2.0\">\n";
$output .= "<channel>\n";
$output .= "<title>".$cfg['maintitle'].": ".$category."</title>\n";
$output .= "<link>".$cfg['mainurl']."</link>\n";
$output .= "<description>".$cfg['subtitle']."</description>\n";
$output .= "<generator>Copyright by http://www.mysite.ru</generator>\n";
$output .= "<pubdate>".date("r",time())."</pubdate>\n";
$output .= "<category>".$cfg['maintitle'].": ".$category."</category>";
$output .= "<ttl>".$cfg_timetolive."</ttl>";
$output .= "<language>".$cfg_lang."</language>\n\n";
$output .= $items;
$output .= "</channel>\n";
$output .= "</rss>";


@ob_start("ob_gzhandler");
echo($output);
@ob_end_flush();

	$file = "bbclone/var/access.php";
	if (file_exists($file))
		{
		if ($cfg['plugin']['bbclone']['lng_control'] == "on") { $bblng = " (".$usr['lang'].")"; }

		define("_BBC_PAGE_NAME", "RSS 2.0 ".$category.$bblng);
		define("_BBCLONE_DIR", "bbclone/");
		define("COUNTER", _BBCLONE_DIR."mark_page.php");
		if (is_readable(COUNTER)) include_once(COUNTER);
		}
$handle = get_content ("http://counter.rambler.ru/top100.cnt?XXXXXX");
?>

Кстати глюк нашел, сперва попробовал заключить код в тэг highlight=php
и привыводе код обрезался вот на этой строке:
$output = "<?xml version=\"1.0\" encoding=\"".$cfg_charset."\"?>\n";

Ксати даже отдельно эту строку нельзя заключить в этот тэг.
Не задавай глупых вопросов, не услышишь вранья.
This post was edited by Ratibor (2009-02-06 16:53, 15 years ago)
Clever
#11 2009-04-25 00:19
у меня рсс вообще не работает. идет конвертация в какую-то непонятную кодировку.
http://auto62rus.ru/rss.php

Ищу плагин для яндекс новостей. От седа не работают :(

Кто что может сказать по багу?
NovoKain
#12 2009-04-25 00:23
Clever, могу сказать что у меня аналогичная проблема.
Clever
#13 2009-04-25 00:58
слава богу... дело не в кривых руках...
jcrush
#14 2009-04-25 18:23
у меня все работает, кстати по поводу счетчика, он может и будет считать посетителей но показывать что либо врятли булет скорее он для внутренних нужд кто сколько юзает рсс ваш, кстати вещь нужная например узнать кто ворует вашу ленту.
SEO блог: http://blog.stfw.ru/
NovoKain
#15 2009-04-25 19:55
http://www.feedburner.com и не «ворует» а читает. Если кому-то понадобится воровать у вас контент он это сделает вне зависимости от наличия у вас на сайте rss ленты.

12>>>