Шаблон Rss ленты в Netcat 2.4

alenkaaa

Создатель
Регистрация
30 Окт 2007
Сообщения
31
Реакции
0
Подскажите, утерян шаблон для отображения rss ленты с другого сайта...в неткате 2.4
Как мне его написать? Откуда взять?
 
Если память не изменяет, там RSS настраивался с помощью макета. В макеты заглядывали? мож и не терялся никуда..
 
В базе знаний на сайте неткета есть. точно.
 
Создать новый макет дизайна, в котором в шаблонах вывода навигации указать:

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

В верхней части страницы (Header:(

<?xml version=\"1.0\" encoding=\"windows-1251\" ?>
<rss version=\"2.0\" xmlns=\"http://backend.userland.com/rss2\">
<channel>
<title>Название Вашего сайта</title>
<link>Ссылка на Ваш сайт</link>
<description>Опсание вашего сайта</description>
Нижняя часть страницы (Footer:(
</channel>
</rss>

Далее отредактируем шаблон отображения раздела (допустим, шаблон "новости", входящий в поставку
NetCat).

Главный принцип - отображать поля по разному, в зависимости от передаваемого значения макета($template).

В поле "Объект в списке:" мы вводим:
".opt_case($template!=7,"<a href=$fullDateLink>$f_Date_day.$f_Date_month.$f_Date_year</a><br>
<font size=-1>$f_NewsAnons</font><br>
$f_AdminButtons<br>", "<item><title>$f_NewsAnons</title><link>http://".$HTTP_HOST. $fullLink. "</link><description>$f_NewsText</description><pubDate>". date("r",
strtotime($f_Date))."</pubDate></item>")."

(вместо <a href=$fullDateLink> $f_Date_day.$f_Date_month.$f_Date_year</a> <br>
<font size=-1>$f_NewsAnons</font><br>
$f_AdminButtons<br>)

и в поле Системные настройки: - global $HTTP_HOST;

RSS версия теперь доступна по адресу:
Для просмотра ссылки Войди или Зарегистрируйся
 
Создаем "Новый макет" ни с кем не связанный..
Шаблоны вывода навигации:
PHP:
//Кол-во
$Limit=30;
// Срок годности документа в минутах
$ttl=5; 
$Updated=$db->get_var("SELECT LastUpdated FROM Message".$NewsClass." WHERE Checked='1' ORDER BY LastUpdated DESC LIMIT 1");
$Updated=strtotime($Updated);
$SubName=$db->get_var("SELECT Subdivision_Name from Subdivision where Subdivision_ID = ".$NewsSub."");
unset($rs);
// Посылаем нужные заголовки
Header("X-Powered-By: NetCat/".$system_env[VersionNumber].opt($system_env[SystemID]==1, " (Small Business)").opt($system_env[SystemID]==2, " (Standard)").opt($system_env[SystemID]==3, " (Extra)").opt($system_env[SystemID]==4, " (Modern)")."");
Header("Expires: ".gmdate("D, d M Y H:i:s", $Updated + ($ttl*60))." GMT");  // Время срока годности
Header("Cache-Control: no-store, no-cache, must-revalidate");  // HTTP 1.1
Header("Cache-Control: post-check=0, pre-check=0", false);
Header("Pragma: no-cache");  // HTTP 1.0
Header("Last-Modified: ".gmdate("D, d M Y H:i:s", $Updated)." GMT"); // Дата последней модификации
Header("X-Creator: NetCat");
Header("Content-Language: ru, ru-RU");  // Язык данных в файле
Header("Content-Type: application/xml; charset=windows-1251");   // Объявляем тип файла
//Header("Content-Disposition: attachment; filename=rss.xml");   // Объявляем имя файла
Верхняя часть страницы (Header:(
PHP:
<?xml version=\"1.0\" encoding=\"windows-1251\"?>
<rss version=\"2.0\" xml:lang=\"ru-RU\">
	<channel>
		<title>$SubName - ".htmlspecialchars($system_env[ProjectName], ENT_QUOTES)."</title>
		<link>http://".$HTTP_HOST."/</link>
		<description>".htmlspecialchars(strip_tags($current_sub[Description]), ENT_QUOTES)."</description>
		<language>ru-RU</language>
		<copyright>Copyright ".date("Y")." ".htmlspecialchars($system_env[ProjectName], ENT_QUOTES)."</copyright>
		<lastBuildDate>".gmdate("D, d M Y H:i:s", $Updated)." GMT</lastBuildDate>
		<generator>$HTTP_HOST</generator>
		<ttl>".$ttl."</ttl>
";
// Собственно начнем выводе информации из раздела
if ($rss=$db->get_results("SELECT Subdivision_ID, Hidden_URL FROM Subdivision WHERE Catalogue_ID='".$catalogue."' ORDER BY Subdivision_ID ASC", ARRAY_A))
{
	$RealURL=array();
	foreach ($rss as $rs)
	{
		$RealURL[$rs['Subdivision_ID']]=$rs['Hidden_URL'];
	}
}
unset($rs);
if ($rss=$db->get_results("SELECT Sub_Class_ID, EnglishName FROM Sub_Class WHERE Class_ID='".$NewsClass."' AND Checked='1' AND Catalogue_ID='".$catalogue."' ORDER BY Sub_Class_ID ASC", ARRAY_A))
{
	$newscat=array();
	foreach ($rss as $rs)
	{
		$newscat[$rs[Sub_Class_ID]]=$rs[EnglishName];
	}
}
unset($rs);
// Выборка всех полей из нужного шаблона
if ($rss=$db->get_results("SELECT * FROM Message".$NewsClass." WHERE Checked='1' AND Subdivision_ID=".$NewsSub." ORDER BY Created DESC LIMIT ".$Limit."", ARRAY_A))
{
	foreach ($rss as $rs)
	{
		$rss_Link="http://".$HTTP_HOST.$RealURL[$rs['Subdivision_ID']].$newscat[$rs[Sub_Class_ID]]."_".$rs[Message_ID].".html";
		$time=strtotime($rs['Created']);
		$DateLink=explode(" ", $rs['Created']);
		$DateLink=explode("-", $DateLink[0]);
		$RSSbody="\t\t<item>\n\t\t\t<title>".htmlspecialchars(strip_tags($rs[$rss_Title]), ENT_QUOTES)."</title>\n";
		$RSSbody.= "\t\t\t<link>".$rss_Link."</link>\n";
		//$RSSbody.= "\t\t\t<description>".htmlspecialchars(strip_tags($rs[$rss_Description]), ENT_QUOTES)."</description>\n";
		$RSSbody.= "\t\t\t<description><![CDATA[ ".($nl2br ? nl2br($rs[$rss_Description]) : $rs[$rss_Description] )." ]]></description>\n";
		$RSSbody.= "\t\t\t<pubDate>".gmdate("D, d M Y H:i:s", $time)." GMT</pubDate>\n";
		$RSSbody.= "\t\t\t<guid isPermaLink=\"true\">".$rss_Link."</guid>\n";
		// Начнем выводить записи
		echo($RSSbody);
		if ($rs[$rss_Author]!="") 
			echo("\t\t\t<author>".htmlspecialchars(strip_tags($rs[$rss_Author]), ENT_QUOTES)."</author>\n"); 
		echo("\t\t</item>\n");
	}
}
echo"
Нижняя часть страницы (Footer:(
PHP:
	</channel>
</rss>
теперь на его основе можно делать RSS для любого раздела
вот пример макета для раздела с "Вопросами и ответами"
создаем на основе первого новый макет
например "RSS - вопросы и ответы"
и в шаблонах вывода навигации описываем необходимые настройки и все
Шаблоны вывода навигации:
PHP:
// ID шаблона 
$NewsClass=3; 
// ID раздела c объектами
$NewsSub=335; 
// Опишем поля, которые будут использованы
$rss_Title="Message";
$rss_Description="Answer";
$rss_Author="Name";
// Переносить строки
$nl2br="yes";
 
делал по всему вышеописанному для джумлы - не работает((
 
Назад
Сверху