Создание RSS ленты на своем сайте | Свой RSS поток | Как Создать RSS поток? | Класс для создания RSS потока.
[h1]Создание RSS ленты на своем сайте при помощи DOMElement[/h1]
(перевод) Каждый RSS пункта определяется как массив и передаются additem метода. Пункты включать изображения и другие элементы, которые подвида. AddItem метод возвращает экземпляр класса, с тем чтобы метод цепочки, как показано на примере использования. RSS-класс поддерживает все элементы из RSS2 Спецификация включает в себя и даже изображения, skipDays и skipHours, которые содержат вложенные элементы. Под элементы просто передается как массив значений, а затем добавить их в структуру XML. Поддерживает имена элемента находятся в выключатель (см. phpswitch.com), чтобы обеспечить действительно только элементы RSS предоставляются, а также делегатов, что должно произойти, чтобы каждый действительный элемент объявления. Неверный элементы quitly использоваться в качестве не может быть и исключения, при использовании __toString. __toString Метод оказывается покончить с необходимостью отдельного метода getRSS поэтому объект echo'ed непосредственно в этом примере. Тем не менее, рекомендуется, чтобы при использовании этого класса, то вывод будет записан в файл и файл, используемый в качестве точки доступа для RSS-каналы. Это позволит вам сэкономить много накладных расходов, особенно если пункты создаются в базе данных результирующего набора.
Пример использования:
Результат:
Немного поколдуете и адаптируете его под свою БД и свой сайт. Я пользуюсь именно этим классом и доволен. Единственно, что его неудобно пользовать в Win1251, а мне неудобно хранить данные в UTF8, т.к. она занимают значительно больше места.
Свой RSS поток | Как Создать RSS поток? Класс для создания RSS потока.
Этот класс, как следует из названия, создает канал. RSS-класс расширяет класс DOMDocument, которая встроена в PHP, который позволит прямой доступ ко всем функциональным расширением DOMElement.(перевод) Каждый RSS пункта определяется как массив и передаются additem метода. Пункты включать изображения и другие элементы, которые подвида. AddItem метод возвращает экземпляр класса, с тем чтобы метод цепочки, как показано на примере использования. RSS-класс поддерживает все элементы из RSS2 Спецификация включает в себя и даже изображения, skipDays и skipHours, которые содержат вложенные элементы. Под элементы просто передается как массив значений, а затем добавить их в структуру XML. Поддерживает имена элемента находятся в выключатель (см. phpswitch.com), чтобы обеспечить действительно только элементы RSS предоставляются, а также делегатов, что должно произойти, чтобы каждый действительный элемент объявления. Неверный элементы quitly использоваться в качестве не может быть и исключения, при использовании __toString. __toString Метод оказывается покончить с необходимостью отдельного метода getRSS поэтому объект echo'ed непосредственно в этом примере. Тем не менее, рекомендуется, чтобы при использовании этого класса, то вывод будет записан в файл и файл, используемый в качестве точки доступа для RSS-каналы. Это позволит вам сэкономить много накладных расходов, особенно если пункты создаются в базе данных результирующего набора.
Code: PHP
<?php
/**
*
* A class to create RSS feeds using DOM
*
* @Author Kevin Waterson
*
* @copyright 2009
*
* @author Kevin Waterson
*
* @license BSD
*
*/
class rss extends DomDocument
{
/**
* @ the RSS channel
*/
private $channel;
/**
*
* @Constructor, duh! Set up the DOM environment
*
* @access public
*
* @param string $title The site title
*
* @param string $link The link to the site
*
* @param string $description The site description
*
*/
public function __construct($title, $link, $description)
{
/*** call the parent constructor ***/
parent::__construct();
/*** format the created XML ***/
$this->formatOutput = true;
/*** craete the root element ***/
$root = $this->appendChild($this->createElement('rss'));
/*** set to rss2 ***/
$root->setAttribute('version', '2.0');
/*** set the channel node **/
$this->channel = $root->appendChild($this->createElement('channel'));
/*** set the title link and description elements ***/
$this->channel->appendChild($this->createElement('title', $title));
$this->channel->appendChild($this->createElement('link', $link));
$this->channel->appendChild($this->createElement('description', $description));
}
/**
*
* @Add Items to the RSS Feed
*
* @access public
*
* @param array $items
*
* @return object Instance of self for method chaining
*
*/
public function addItem($items)
{
/*** create an item ***/
$item = $this->createElement('item');
foreach($items as $element=>$value)
{
switch($element)
{
/*** create sub elements here ***/
case 'image':
case 'skipHour':
case 'skipDay':
$im = $this->createElement($element);
$this->channel->appendChild($im);
foreach( $value as $sub_element=>$sub_value )
{
$sub = $this->createElement($sub_element, $sub_value);
$im->appendChild( $sub );
}
break;
case 'title':
case 'pubDate':
case 'link':
case 'description':
case 'copyright':
case 'managingEditor':
case 'webMaster':
case 'lastbuildDate':
case 'category':
case 'generator':
case 'docs':
case 'language':
case 'cloud':
case 'ttl':
case 'rating':
case 'textInput':
case 'source':
$new = $item->appendChild($this->createElement($element, $value));
break;
}
}
/*** append the item to the channel ***/
$this->channel->appendChild($item);
/*** allow chaining ***/
return $this;
}
/***
*
* @create the XML
*
* @access public
*
* @return string The XML string
*
*/
public function __toString()
{
return $this->saveXML();
}
}
?>
Code:
<?php
/*** the first article item ***/
$item1 = array(
'title'=>'Zend Framework Example Site',
'link'=>'http://www.phpro.org/articles/Zend-Framework-Example-Site.html',
'description'=>'This example site hopes to introduce the newcomers to Zend Framework in a friendly way, by providing a simple modular site layout and can have the newcomer up and running in minutes.',
'pubDate'=>date(DATE_RSS),
'image'=>array('link'=>'http://phpro.org', 'url'=>'http://phpro.org/images/spork.jpg', 'title'=>'SPORK'),
'language'=>'en');
/*** second article item ***/
$item2 = array(
'title'=>'Xajax-In An Object Oriented Environment',
'link'=>'http://www.phpro.org/tutorials/Xajax-In-An-Object-Oriented-Environment.html',
'description'=>'This tutorial takes the next step in development and shows, by way of example, how xajax can be utilized in an Object Oriented environment',
'pubDate'=>date(DATE_RSS),
'language'=>'en');
/*** third article item ***/
$item3 = array(
'title'=>'Introduction to SPL DirectoryIterator',
'link'=>'http://www.phpro.org/tutorials/Introduction-to-SPL-DirectoryIterator.html',
'description'=>'The DirectoryIterator is one of the more oft used of the Iterator classes and this tutorial helps to expose the user to developing in a standardised and Object Oriented approach',
'pubDate'=>date(DATE_RSS),
'language'=>'en');
/*** a new RSS instance, pass values to the constructor ***/
$rss = new rss('PHPRO.ORG', 'http://phpro.org', 'PHP Articles Tutorials Examples Classes');
/*** add the items from above ***/
$rss ->addItem($item1)
->addItem($item2)
->addItem($item3);
/*** show the RSS Feed ***/
echo $rss;
?>
Code: XML
<?xml version="1.0"?>
<rss version="2.0">
<channel>
<title>PHPRO.ORG</title>
<link>http://phpro.org</link>
<description>PHP Articles Tutorials Examples Classes</description>
<image>
<link>http://phpro.org</link>
<url>http://phpro.org/images/spork.jpg</url>
<title>SPORK</title>
</image>
<item>
<title>Zend Framework Example Site</title>
<link>http://www.phpro.org/articles/Zend-Framework-Example-Site.html</link>
<description>This example site hopes to introduce the newcomers to Zend Framework in a friendly way, by providing a simple modular site layout and can have the newcomer up and running in minutes.</description>
<pubDate>Thu, 01 Jan 2009 08:11:20 +1100</pubDate>
<language>en</language>
</item>
<item>
<title>Xajax-In An Object Oriented Environment</title>
<link>http://www.phpro.org/tutorials/Xajax-In-An-Object-Oriented-Environment.html</link>
<description>This tutorial takes the next step in development and shows, by way of example, how xajax can be utilized in an Object Oriented environment</description>
<pubDate>Thu, 01 Jan 2009 08:11:20 +1100</pubDate>
<language>en</language>
</item>
<item>
<title>Introduction to SPL DirectoryIterator</title>
<link>http://www.phpro.org/tutorials/Introduction-to-SPL-DirectoryIterator.html</link>
<description>The DirectoryIterator is one of the more oft used of the Iterator classes and this tutorial helps to expose the user to developing in a standardised and Object Oriented approach</description>
<pubDate>Thu, 01 Jan 2009 08:11:20 +1100</pubDate>
<language>en</language>
</item>
</channel>
</rss>