RSS Generator

Тема в разделе "PHP", создана пользователем pavlenkora, 23 дек 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. pavlenkora

    pavlenkora

    Регистр.:
    8 окт 2008
    Сообщения:
    195
    Симпатии:
    80
    Вот какая задача!
    Есть сайт на php, нужно создать на этом сайте Rss канал для всех его страниц!
    Есть скрипт RSS_GENERATOR
    PHP:
    <?

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // CLASS NAME      : RSS_GENERATOR                                                                        //
    // LANGUAGE        : PHP                                                                                  //
    // LANGUAGE VERSION: 5.0                                                                                  //
    // AUTHOR          : Julien PACHET                                                                        //
    // EMAIL           : j|u|l|i|e|n| [@] |p|a|c|h|e|t|.|c|o|m                                                //
    // VERSION         : 1.0                                                                                  //
    // DATE            : 10/09/2005                                                                           //
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // History:                                                                                               //
    // class based from php class easy-rss                                                                    //
    //   by Paulius Lescinskas (http://www.phpclasses.org/browse/package/1820.html)                           //
    // -------                                                                                                //
    //  Date        Version   Actions                                                                         //
    // ------------------------------------------------------------------------------------------------------ //
    //  10/09/2005  0.9       Tested version                                                                  //
    //  10/09/2005  1.0       Prod version                                                                    //
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // What the class need:                                                                                   //
    // * Nothing                                                                                              //
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // What the class do:                                                                                     //
    // * Generate RSS feed from array of items                                                                //
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // Declaration                                                                                            //
    // -----------                                                                                            //
    // rss_generator($title)                                                                                  //
    //   magic function __get                                                                                 //
    //   magic function __set                                                                                 //
    //   get($items)                                                                                          //
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////

    class rss_generator {

        private 
    $_encoding="UTF-8";
        private 
    $_title="";
        private 
    $_language="en-us";
        private 
    $_description="";
        private 
    $_link="";
        private 
    $_generator="rss_generator";
        private 
    $_version="2.0";

        public function 
    __construct($title) {
            
    $this->_title=$title;
        }
        public function 
    __get($name) {
            if (
    $name=='encoding')        return $this->_encoding;
            if (
    $name=='title')        return $this->_title;
            if (
    $name=='language')        return $this->_language;
            if (
    $name=='description')    return $this->_description;
            if (
    $name=='generator')        return $this->_generator;
            if (
    $name=='link')        return $this->_link;
        }
        public function 
    __set($name,$value) {
            if (
    $name=='encoding')        $this->_encoding=stripslashes($value);
            if (
    $name=='title')        $this->_title=stripslashes($value);
            if (
    $name=='language')        $this->_language=stripslashes($value);
            if (
    $name=='description')    $this->_description=stripslashes($value);
            if (
    $name=='generator')        $this->_generator=stripslashes($value);
            if (
    $name=='link')        $this->_link=stripslashes($value);

        }

        
    /**
        Make an xml document of the rss stream
        @param: items: n row of associative array with theses field:
                'title': title of the item
                'description': short description of the item
                'pubData': publication timestamp of the item
                'link': url to show the item
        @result: xml document of rss stream
        **/
        
    public function get($items) {
            
    $res="";
            
    // header
            
    $res.="<?xml version=\"1.0\" encoding=\"".$this->_encoding."\"?>\n";
            
    $res.="<rss version=\"2.0\">\n";
            
    $res.="\t<channel>\n";
            
    $res.="\t\t<title><![CDATA[".$this->_title."]]></title>\n";
            
    $res.="\t\t<description><![CDATA[".$this->_description."]]></description>\n";
            
    $res.="\t\t<link>".$this->_link."</link>\n";
            
    $res.="\t\t<language>".$this->_language."</language>\n";
            
    $res.="\t\t<generator>".$this->_generator."</generator>\n";
            
    //items
            
    foreach($items as $item) {
                    
    //$date = date("r", stripslashes($item["pubDate"]));
                    
    $res.="\t\t<item>\n";
                
    $res.="\t\t\t<title><![CDATA[".stripslashes($item["title"])."]]></title>\n";
                    
    $res.="\t\t\t<description><![CDATA[".stripslashes($item["description"])."]]></description>\n";
                    if (!empty(
    $item["pubDate"]))
                    
    $res.="\t\t\t<pubDate>".date("r"stripslashes($item["pubDate"]))."</pubDate>\n";
                if (!empty(
    $item["link"]))
                    
    $res.="\t\t\t<link>".stripslashes($item["link"])."</link>\n";
                
    $res.="\t\t</item>\n";
            }
            
    //footer
            
    $res.="\t</channel>\n";
            
    $res.="</rss>\n";
            return 
    $res;
        }
    }

    ?>
    Но что нужно с ним делать знаний, к сожалению не хватает. Подскажите, каков принцип работы этого генератора, и как его заставить работать!
     
  2. stealthdebuger

    stealthdebuger Механик

    Administrator
    Регистр.:
    25 авг 2008
    Сообщения:
    624
    Симпатии:
    1.379
    Для того, чтобы дать хоть какой-то более-менее определенный ответ скажите на каком движке построен ваш сайт.
     
  3. pavlenkora

    pavlenkora

    Регистр.:
    8 окт 2008
    Сообщения:
    195
    Симпатии:
    80
    Движка нет, это автоматически сгенерированные страницы по заданному шаблону.
    На сайте нет БД.
     
  4. stealthdebuger

    stealthdebuger Механик

    Administrator
    Регистр.:
    25 авг 2008
    Сообщения:
    624
    Симпатии:
    1.379
    Пользуйтесь.
    PHP:
    <?
    echo(
    "<?xml version=\"1.0\" encoding=\"windows-1251\" ?>\r\n");
    echo(
    "<rss version=\"2.0\">\r\n");
    echo(
    "<channel>\r\n\r\n");
    echo(
    "<title>Это лента RSS!</title>\r\n");
    echo(
    "<link>http://".$_SERVER['HTTP_HOST']."/</link>\r\n");
    echo(
    "<description>Описание нашей ленты RSS!</description>r\n");
    echo(
    "<copyright>Copyright 2009, ".$_SERVER['HTTP_HOST']."</copyright>\r\n\r\n");

    $dirop opendir("./");
    while (
    gettype($file=readdir($dirop)) != 'boolean')
    {
    if (
    $file != "." && $file != ".." && ereg(".html",$file))
    {
    $file_handle fopen($file"r");
    $line "";
    while (!
    feof($file_handle)) {
       
    $line .= fgets($file_handle);
    }
    preg_match_all("#<title>(.*)</title>#i",$line,$retval);
    preg_match_all("#<p>(.*)</p>#i",$line,$retval2);
    fclose($file_handle);
        echo(
    "\r\n<item>\r\n");
        echo(
    "<title>".$retval[1][0]."</title>\r\n");
        echo(
    "<link>http://".$_SERVER['HTTP_HOST']."/".$file."</link>\r\n");
        echo(
    "<description><![CDATA[".$retval2[1][0]."]]></description>\r\n");
        echo(
    "</item>\r\n\r\n");
    }
    }
    closedir($dirop);
    echo(
    "</channel>\r\n");
    echo(
    "</rss>\r\n");
    ?>
     
    pavlenkora нравится это.
Статус темы:
Закрыта.