SimplaCMS: подключаем Яндекс Турбо для новостей

Создадим новый файл RssView.php в папке /view/ со следующим содержимым:

<?PHP
require_once('View.php');
class RssView extends View
{
  public function fetch()
  {
    $items_per_page = 20;
    $params = array();
    $params['visible'] = 1;
    $params['limit'] = $items_per_page;
     
    switch($this->request->get('type', 'string')) {
        default:
            $items = $this->blog->get_posts($params);  
            $category = 'Статьи компании';  
            $cat_url = $this->config->root_url.'/blog';
            $base_url = $this->config->root_url.'/blog/';
    }
    header("Content-Type: application/rss+xml; charset=UTF-8"); 
    $p = $items[0];
    $rssfeed = '<?xml version="1.0" encoding="UTF-8"?>';
    $rssfeed .= '<rss xmlns:yandex="http://news.yandex.ru" xmlns:media="http://search.yahoo.com/mrss/" xmlns:turbo="http://turbo.yandex.ru" version="2.0">';
    $rssfeed .= '<channel>';
    $rssfeed .= '<title>'.$this->settings->site_name.'</title>';
    $rssfeed .= '<link>'.$cat_url.'</link>';
    $rssfeed .= '<description>'.$this->settings->company_name.'</description>';
    $rssfeed .= '<language>ru-ru</language>';
    $rssfeed .= '<category>' . $category . '</category>';
    $rssfeed .= '<copyright>Copyright '.date('Y').' '.$this->settings->company_name.'</copyright>';
    $rssfeed .= '<pubDate>' . date("D, d M Y H:i:s O", strtotime($p->date)) . '</pubDate>';
    $rssfeed .= '<lastBuildDate>' . date("D, d M Y H:i:s O", strtotime($p->date)) . '</lastBuildDate>';
    foreach($items as $p) {
        $rssfeed .= '<item turbo="true">';
        $rssfeed .= '<guid isPermaLink="true">'. $base_url . $p->url . '</guid>';
        $rssfeed .= '<link>'. $base_url . $p->url . '</link>';
        $rssfeed .= '<turbo:content>';
        $rssfeed .= '<![CDATA[';
        $rssfeed .= '<header>';
        $rssfeed .= '<h1>' . $p->name . '</h1>';
        $rssfeed .= '</header>';
        $rssfeed .= '<p>'. ($p->text) . '</p>';
        $rssfeed .= '<div data-block="share" data-network="twitter, facebook"></div>';
        $rssfeed .= ']]>';
        $rssfeed .= '</turbo:content>';
        $rssfeed .= '<title>' . $p->name . '</title>';
        $rssfeed .= '<description><![CDATA[' . ($p->annotation) . ']]></description>';
        $rssfeed .= '<comments>'. $base_url . $p->url . '#comments</comments>';
        $rssfeed .= '<pubDate>' . date("D, d M Y H:i:s O", strtotime($p->date)) . '</pubDate>';
        $rssfeed .= '</item>';
    }
    $rssfeed .= '</channel>';
    $rssfeed .= '</rss>';    
    print($rssfeed);
    exit();
  }  
}

Далее откроем в корне сайта .htaccess и после строчки

RewriteRule ^blog(.*)$ /news$1 [L,R=301]

Добавим в него новое правило:

RewriteRule ^rss?$  index.php?module=RssView  [L,QSA]

Теперь у вас есть RSS лента, оптимизированная под Яндекс.Турбо по адресу ваш_сайт.ру/rss
Далее откроем Вебмастер Яндекса, откроем раздел Турбо Страницы -> Источники и добавим ссылку на ваш RSS-канал:

Нажимаем кнопку добавить и ждём когда канал загрузится в систему. После этого проверяем, чтобы всё работало без ошибок и нажимаем кнопку Вкл:

Теперь нужно несколько часов на модерацию вашего источника, а после завершения ваши новости будут в формате Яндекс Турбо ;-)

Поделиться
Отправить
Запинить
 147   2019   simplacms
Популярное