Блог и RSS

Правила раздела: faq.php?mode=okay
Модератор: Модераторы

mjoy
mjoy
Репутация: -1
Сообщения: 26
Зарегистрирован: 27.01.2016
С нами: 8 лет 2 месяца

Сообщение #1 mjoy » 09.02.2016, 11:48

Планируется ли для блога сделать RSS ленту?

OkayCMS M
Администратор
Аватара
OkayCMS M
Администратор
Репутация: 216
Сообщения: 1627
Зарегистрирован: 12.11.2015
С нами: 8 лет 4 месяца
Сайт Skype

Сообщение #2 OkayCMS » 09.02.2016, 13:06

mjoy писал(а):Планируется ли для блога сделать RSS ленту?
Да, планируется. Скорее всего даже в версию 1.2 будет включено. Но пока не гарантирую.

3H2GS6W
3H2GS6W

Сообщение #3 3H2GS6W » 07.01.2017, 15:08

С Новым 2017 и Рождеством!
Не подскажите как можно в футере (нижняя часть сайта) в разделе "Блог" показать не последние 3 записи, а например все или 7?

korshunov
korshunov
Репутация: 146
Сообщения: 1854
Зарегистрирован: 03.12.2015
С нами: 8 лет 3 месяца
Skype

Сообщение #4 korshunov » 07.01.2017, 15:49

Файл design/default/html/main.tpl, строка
{get_posts var=last_posts limit=3}

{get_posts var=last_posts} - показывать все записи
{get_posts var=last_posts limit=7} - показывать 7 записей

3H2GS6W
3H2GS6W

Сообщение #5 3H2GS6W » 07.01.2017, 16:41

Спасибо.
а как выводить записи в блоге в порядке возрастания, а не убывания (по дате создания записи - старое вверх, новое - вниз)?

korshunov
korshunov
Репутация: 146
Сообщения: 1854
Зарегистрирован: 03.12.2015
С нами: 8 лет 3 месяца
Skype

Сообщение #6 korshunov » 08.01.2017, 07:15

Стандартно простых возможностей для такого нет.
Надо программировать - создавать сортировку, начиная с API или в шаблоне пытаться выводить в обратном порядке.

pikasso M
pikasso M
Возраст: 45
Репутация: 10
Сообщения: 128
Зарегистрирован: 31.01.2016
С нами: 8 лет 1 месяц

Сообщение #7 pikasso » 29.12.2017, 09:57

OkayCMS писал(а):
mjoy писал(а):Планируется ли для блога сделать RSS ленту?
Да, планируется. Скорее всего даже в версию 1.2 будет включено. Но пока не гарантирую.
Как я понимаю - этот вопрос остался в далеком прошлом и не планируется.

Добавлено спустя 50 минут 30 секунд:
Ладно
нашел решение для симплы
заточил под Окай

в папке view создаем файл
RssView.php с содержанием

Код: Выделить всё

<?PHP
 
 
require_once('View.php');
 
class RssView extends View
{
  public function fetch()
  {
    // Количество постов на 1 странице
    $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 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>';
        $rssfeed .= '<guid isPermaLink="true">'. $base_url . $p->url . '</guid>';
        $rssfeed .= '<link>'. $base_url . $p->url . '</link>';
        $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();
  } 
}


в корне сайта создаем файл
rss.php с содержанием

Код: Выделить всё

<?php
require_once('api/Okay.php');
$okay = new Okay();

header("Content-type: text/xml; charset=UTF-8");
print '<?xml version="1.0" encoding="utf-8"?><rss xmlns:rss="'.$okay->config->root_url.'" version="2.0"><channel>';
print '<title>'.$okay->settings->site_name.'</title>';
print '<url>'.$okay->config->root_url.'</url>';
print '<lastBuildDate>'.date("D, d M Y H:i:s O").'</lastBuildDate>';

$rss = $okay->blog->get_posts();
foreach($rss as $r) {
print '<item>';
print '<title>'.htmlspecialchars($r->name).'</title>';
print '<link>'.$okay->config->root_url.'/blog/'.$r->url.'</link>';
print '<description>'.htmlspecialchars($r->annotation).'</description>';
print '<pubDate>'.date("l, d M Y H:i:s O", strtotime($r->date)).'</pubDate>';
print '<pubDateUT>'.time(strtotime($r->date)).'</pubDateUT>';
print '</item>';
}
print ' </channel></rss>';
?>


в корне сайта в файле .htaccess
добавляем где то в строке 90
перед # Google sitemap

Код: Выделить всё

# RSS
RewriteRule ^([a-z]{2}/)?rss?$  index.php?module=RssView  [L,QSA]


В шаблон добавьте

Код: Выделить всё

<link rel="alternate" type="application/rss+xml"  title="RSS" href="rss" />


ваша лента будет по адресу
ВАШ САЙТ/rss.php

Пользуйтесь

Добавлено спустя 20 минут 45 секунд:
единственное не могу понять как вывести картинку блого статьи.

Artem-K
Artem-K
Репутация: 1
Сообщения: 17
Зарегистрирован: 03.08.2017
С нами: 6 лет 7 месяцев

Сообщение #8 Artem-K » 31.01.2018, 11:53

Привет всем! Кто-нибудь может создать rss-ленту для выгрузки в яндекс.дзен? Естественно не бесплатно!)


Название раздела: Предложения по улучшению OkayCMS
Правила раздела: faq.php?mode=okay

Быстрый ответ


Введите код в точности так, как вы его видите. Регистр символов не имеет значения.
Код подтверждения

   

Вернуться в «Предложения по улучшению OkayCMS»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 11 гостей