Zend Framework, создание RSS фидов и редиректа для Feedburner

в разделе Программирование | Метки: Zend Framework, PHP, Feedburner


<?php

class RssController extends Zend_Controller_Action
{
    public function 
articlesarticlesAction()
    {
        
$articles_table = new articlesTable();
        
$articles_data $articles_table->getLatest(10); // Получаем последние 10 статей (этот класс самим надо писать)
        
$base_url 'http://www.yoururl.ru/';
        
$pubDate date('Y-m-d');
        
$feedArray = array(
                
'title'         => 'Новые статьи',
                
'link'          => $base_url 'rss/recent-articles/',
                
'description'   => 'Новые статьи, добавленные на сайте.',
                
'language'      => 'ru-ru',
                
'charset'       => 'utf-8',
                
'pubDate'       => $pubDate,
                
'generator'     => '1000 specially trained monkeys',
                
'entries'       => array()
            );
        foreach (
$articles_data as $article_data) {
            
            
$feedArray['entries'][] = array(
                    
'title'         => trim($article_data['name']),
                    
'link'          => $base_url 'articles/detail/id/' $article_data['id'],
                    
'guid'          => $base_url 'articles/detail/id/' $article_data['id'],
                    
'description'   => $article_data['contents'],
                    
'pubDate'       => $article_data['added'],
                );
            
        }
        
$user_agent $this->_request->getHeader('User-Agent'); // Получаем User-agent посетителя
        
$skip_useragents = isset($user_agent) ? preg_match('/feedburner|feedvalidator/i'$user_agent) : FALSE// Проверяем не явлеется ли посетитель ботом Feedburner
        
if (!$skip_useragents) {
            
$this->getResponse()->setRedirect('http://feeds2.feedburner.com/yourwebsite-new-articles'307); // Если это не бот Feedburner то редиректим на фид Feedburner
        
}
        
// Если это таки бот Feedburner подсовываем ему фид
        
$this->_helper->viewRenderer->setNoRender();
        
$feed Zend_Feed::importArray($feedArray);
        
$feed->send();
    }
}
?>