Автор Тема: RSS  (Прочитано 28813 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Magi

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 38
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.recipe.ru
RSS
« : 06 Октября 2004, 18:55:47 »
Всем привет!
Расскажите, как реализована функция RSS в санитариуме? В конфиге она включена, а что дальше, как предоставить пользователям возможность читать новости в этом виде?

Оффлайн Green Kakadu

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2757
  • +1/-0
  • 0
    • Просмотр профиля
    • http://gnezdo.webscript.ru
RSS
« Ответ #1 : 07 Октября 2004, 01:25:12 »
тут возможно несколько вариантов (смотря что вам нужно)
1. вывод ленты новостей с помощью javascript
2. вывод в отдельный текстовый файл, который можно инклудить.
по умолчанию js. все ленты кидаются в папку  /your/public/sanitarium/news

настраивается в шаблоне news.txt

3 RSS настоящий, т.е. нечто типа такого формата:


sub print_news  строка 1019




  RSS2 Sanitarium
  [url]http://site.ru/index.html[/url]
  Мой RSS 2.0 feed
  ru
  Copyright 2004, Vasya Pupkin Ink.



    Моя статейка...
    [url]http://site.ru/article.html[/url]
    Это моя супер статья
    My articles
Nonfiction/Business/O\'Reilly_and_Associates/

    Green Kakadu
    Sun, 02 Jan 2002 0:00:01 GMT
 


и т.д.

к сожалению такую фичу надо прикрутить самому. Т.к. можно настроить все содержимое , но все это надо еще запихнуть во внешнй клнтейнер - т.е. нужен доп. шаблон.
Как добавить такую штуку?
Sanitarium_WL.pm
находим sub print_news  (строка 1019) и переписываем ее - надо добавить всего лишь несколько строк, чтоб паралельно генерился RSS feed. Если нужно, я на днях кину сюда "видоизмененный вариант"
 в исканиях.

Оффлайн Magi

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 38
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.recipe.ru
RSS
« Ответ #2 : 07 Октября 2004, 17:34:15 »
Нужно!

Оффлайн Green Kakadu

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2757
  • +1/-0
  • 0
    • Просмотр профиля
    • http://gnezdo.webscript.ru
RSS
« Ответ #3 : 08 Октября 2004, 01:11:04 »
В общем ловите. Только следуйте инструкциям:
1 сделайте копию своего модуля Sanitarium_WL.pm
2. в папку шаблонов tmp-main киньте два файла rss.txt
rss_item.txt
Вот их примерное содержимое
news_rss.txt
----------------------------------------------




  <%cat_name%>
  <%cat_url%>
  ru
  Copyright 2004, ???? ??????.
  vasyapupkin@site.ru
  <%rss%>




--------------------------------------------------------------
rss_item.txt
--------------------------------------------------------------


<%title%>
<%article_url%>
<%preview%>


---------------------------------------------------------------

3 В Sanitarium_WL.pm заменить подпрограмму sub print_news (1019) на такую:
-------------------------------------------------------------------

sub print_news {
#--------------------------------------------------
my ($cat, $how_news, $news_js, $html, $news_txt, $use_txt, %news);
my $self=shift;
$cat=shift;
$how_news=shift;
$use_txt=$self->{\'txt_news\'};
$self->{DB_File}="$self->{\'data\'}/$cat";
$self->{DB_Field}=\'index\';
unless($self->{\'tmp_news\'}){$self->{\'tmp_news\'}=$self->load_tempfile("$self->{\'tmpl_dir\'}/tmp-main/news.txt");}

#RSS ADDON: Load RSS Templates
unless($self->{\'tmp_rss\'}){$self->{\'tmp_rss\'}=$self->load_tempfile("$self->{\'tmpl_dir\'}/tmp-main/news_rss.txt");}
unless($self->{\'tmp_rss_item\'}){$self->{\'tmp_rss_item\'}=$self->load_tempfile("$self->{\'tmpl_dir\'}/tmp-main/rss_item.txt");}

%news=$self->get_nn_recs($how_news);
foreach my $key(sort {$b <=> $a} keys %news){
$self->unpack_rec($news{$key});
$self->get_author_info();
if ($self->{\'static_pages\'}){$self->{\'article_url\'}="$self->{\'public_url\'}/$self->{\'cat_id\'}/$key"."_1.$self->{\'ext\'}";}
else {$self->{\'article_url\'}=$self->{\'view_cgi_url\'}."?id=$key&cat_id=$self->{\'cat_id\'}&page=1";}
$html=$self->small_parsing($self->{\'tmp_news\'});
#RSS ADDON
$self->{\'rss\'} .= $self->small_parsing($self->{\'tmp_rss_item\'});
        if ($use_txt){
$news_txt .= "$html\\n" ;
}
else {
$html=~ s/"/\\\\"/g;
$html=~ s/[\\n\\r]//g;
$html=~ s/\'/\\\'/g;
$news_js .= qq~document.write("$html");\\n~;
}
}
#CHECK DIRS:
if (!(-e "$self->{\'public_dir\'}/news")){
mkdir("$self->{\'public_dir\'}/news", 0777) or croak("Can\'t mkdir $self->{\'public_dir\'}/news, reason: $!");
chmod(0777, "$self->{\'public_dir\'}/news") or croak("Can\'t chmod $self->{\'public_dir\'}/news, reason: $!");
}
#RSS PRINT
open (RSS, ">$self->{\'public_dir\'}/news/$cat.xml") or croak("Can\'t open RSS, reason: $!");
if ($USE_FLOCK){flock(RSS, 2);}
print RSS $self->small_parsing($self->{\'tmp_news_rss\'});
close RSS;

#PRINT in *.js
if ($news_js){
open (NEWS, ">$self->{\'public_dir\'}/news/$cat.js") or croak("Can\'t open NEWS, reason: $!");
if ($USE_FLOCK){flock(NEWS, 2);}
print NEWS $news_js;
close NEWS;
}
#Print in *.txt
if ($news_txt){
open (NEWSTXT, ">$self->{\'public_dir\'}/news/$cat.txt") or croak("Can\'t open NEWSTXT, reason: $!");
print NEWSTXT $news_txt;
close NEWSTXT;
}
}


все.
Для каждой категории будут созданы rss ленты + общая на всех
все они будут лежать там же где и обычные новости
http://site.ru/public_sanitar/news
index.xml - общая лента
1.xml - лента категории с id=1 и т.д.
Кол-во новостей столько сколько вы указали в конфиге
Я не пробовал, но должно работать, если я опечаток не сделал. Если что не так -кидайте сюда, поправим.
« Последнее редактирование: 15 Февраля 2005, 10:55:27 от Green Kakadu »
 в исканиях.

Оффлайн Green Kakadu

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2757
  • +1/-0
  • 0
    • Просмотр профиля
    • http://gnezdo.webscript.ru
RSS
« Ответ #4 : 08 Октября 2004, 01:13:31 »
вот еще. в RSS 0.91 и выше есть в заголовках поля времен, типа
08 Oct 02 2004 GMT
 08 Oct 02 2004 GMT
не знаю, обязательные они или нет.
 Если обязательные, то надо будет доп. тег с временем генерить

:) теперь можно и в Яндекс.новости суваться
 в исканиях.

Оффлайн Magi

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 38
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.recipe.ru
RSS
« Ответ #5 : 10 Декабря 2004, 15:39:29 »
Попробовал. У меня вообще тишина. Просто все работает как раньше, файлы с rss лентой не создаются. В логах никаких ошибок нет...

Оффлайн Green Kakadu

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2757
  • +1/-0
  • 0
    • Просмотр профиля
    • http://gnezdo.webscript.ru
RSS
« Ответ #6 : 10 Декабря 2004, 16:04:02 »
опс. очипяточка там вышла, поправлено
вот тут:
#RSS ADDON: Load RSS Templates
 в исканиях.

Оффлайн Cyberinfo

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 38
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.cyberinfo.ru
RSS
« Ответ #7 : 11 Февраля 2005, 19:36:13 »
народ помагите у меня тут ошибка какая то выдается
http://www.cyberinfo.ru/news/index.xml
-------
XML parsing failed: no element found (Line: 1, Character: 0)
---------
Че это значит?

Оффлайн Cyberinfo

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 38
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.cyberinfo.ru
RSS
« Ответ #8 : 11 Февраля 2005, 19:40:01 »
я так понял это пишет что ошибка в первой строчке т.е. это

что тогда не так и есть рабочие варианты где нить?

Оффлайн Green Kakadu

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2757
  • +1/-0
  • 0
    • Просмотр профиля
    • http://gnezdo.webscript.ru
RSS
« Ответ #9 : 14 Февраля 2005, 21:54:35 »
забавно. а сами файлы по фтп глянь - Они в норме, есть?
 в исканиях.

Оффлайн Cyberinfo

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 38
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.cyberinfo.ru
RSS
« Ответ #10 : 14 Февраля 2005, 22:27:11 »
сами файлы есть, но они пустые полностью внутри! в чем дело может быть?

Оффлайн Cyberinfo

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 38
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.cyberinfo.ru
RSS
« Ответ #11 : 14 Февраля 2005, 22:36:32 »
можешь сказать что должно быть в файлах
1.news_rss.txt
2. rss.txt
3.  rss_item.txt

какое именно у них должно быть содержание и изменить надо только Sanitarium_WL.pm ?

Оффлайн Green Kakadu

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2757
  • +1/-0
  • 0
    • Просмотр профиля
    • http://gnezdo.webscript.ru
RSS
« Ответ #12 : 15 Февраля 2005, 10:53:55 »
Цитировать
Cyberinfo:
можешь сказать что должно быть в файлах
1.news_rss.txt
2. rss.txt
3. rss_item.txt

какое именно у них должно быть содержание и изменить надо только Sanitarium_WL.pm ?


rss.txt переименуй в news_rss.txt
ну а содержание news_rss.txt (ранее rss.txt) и rss_item.txt написано там же где и сам мод.
 в исканиях.

Оффлайн Cyberinfo

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 38
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.cyberinfo.ru
RSS
« Ответ #13 : 16 Февраля 2005, 01:36:01 »
млин! все так и сделанно! и вчем может быть ошибка? из-за чего он не пишет данные в эти файлы?

Borovik

  • Гость
RSS
« Ответ #14 : 17 Сентября 2005, 01:51:31 »
Вот такая же история - файлы создаются, но они пустые. Так и нет решения ?

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28