Язык
Контакты
GitHub
Поддержка
Регистрация
Войти
Логин: Пароль: Запомнить:
Пользователи
Последние сообщения
Ответить
1

RSS для каталога файлов

Wasja

  • Истенный Атомовод
  • Юзер
  • 397
  • Репутация:19 
  • Предупреждения: 0 
  • Регистрация:
    11 Ноя 2010
#1
Для поддержки RSS необходимо добавить в файл "\modules\loads\index.php" в конец файла (но перед "}?>" ) следующую функцию
Code:
/**
     * RSS for loads (c) Wasja
     */
    function rss($id_forum = null) {
        $sitename = '/';
        if (!empty($_SERVER['SERVER_NAME'])) {
            $sitename = 'http://' . $_SERVER['SERVER_NAME'] . '/';
        }
        $html = '<?xml version="1.0" encoding="UTF-8"?>';
        $html .= '<rss version="2.0">';
        $html .= '<channel>';
        $html .= '<title>' . h(Config::read('title', 'loads')) . '</title>';
        $html .= '<link>' . $sitename . 'loads/</link>';
        $html .= '<description>' . h(Config::read('description', 'loads')) . '</description>';
        $html .= '<pubDate>' . date('r') . '</pubDate>';
        $html .= '<generator>RSS Generator for Fapos (c) Wasja</generator>';
        $last_added_loads = $this->DB->select('loads', DB_ALL, array(
            'joins' => array(
                array(
                    'table' => 'loads_sections',
                    'type' => 'LEFT',
                    'alias' => 'b',
                    'cond' => 'a.`category_id` = b.`id`',
                ),
                array(
                    'table' => 'loads_sections',
                    'type' => 'LEFT',
                    'alias' => 'c',
                    'cond' => 'b.`section_id` = c.`id`',
                ),
                array(
                    'table' => 'users',
                    'type' => 'LEFT',
                    'alias' => 'd',
                    'cond' => 'd.`id` = a.`author_id`',
                ),
            ),
            'fields' => array('`a`.*', '`b`.`title` as category_name', '`b`.`section_id` as section_id',
            '`c`.`title` as section_name', '`d`.`name` AS author'),
            'alias' => 'a',
            'order' => '`a`.`date` DESC',
            'limit' => 10)
        );
        if (!empty($last_added_loads)) { 
            $html .= '<lastBuildDate>' . date('r', strtotime($last_added_loads[0]['last_post'])) . '</lastBuildDate>';
            foreach ($last_added_loads as $last_load) { 
                $html .= '<item>';
                $html .= '<link>' . $sitename . 'loads/view/' . $last_load['id'] . '</link>';
                $html .= '<pubDate>' . date('r', strtotime($last_load['date'])) . '</pubDate>';
                $html .= '<title>' . $last_load['title'] . '</title>';
                $html .= '<description><![CDATA[Категория: <a href="' . $sitename . 'loads/section/' . $last_load['section_id'] . '">' . $last_load['section_name'] . '</a> - <a href="' . 

$sitename . 'loads/category/' . $last_load['category_id'] . '">' . $last_load['category_name'] . '</a><br />';
                if (!empty($last_load['description'])) {
                    $html .= 'Описание: ' . $last_load['description'] . '<br />';
                }
                $html .= 'Автор: ' . $last_load['author'] . '<br />';
                $html .= 'Количество скачиваний: ' . $last_load['downloads'] . ']]></description>';
                $html .= '<category>' . $last_load['section_name'] . ' - ' . $last_load['category_name'] . '</category>';
                $html .= '<guid>' . $sitename . 'loads/view/' . $last_load['id'] . '</guid>';
                $html .= '</item>';
            }
        }
        $html .= '</channel>';
        $html .= '</rss>';
        echo $html;
    }
Дополнительно необходимо добавить в шаблон "loads\main.html" перед строкой "</head>" ссылку на RSS
Code:
<link href="/loads/rss" rel="alternate" type="application/rss+xml" title="RSS 2.0" />

Путь к RSS: "/loads/rss".

Добавлено 2011.02.22 12-03

Подкорректировал генерацию ссылок - теперь дополнительно используется имя домена (необходимо для работы офлайн RSS-ридеров).

Отредактировано автором 22 Фев 2011

Drunya

  • Man of God
  • Админ
  • 3527
  • Репутация:110 
  • Предупреждения: 0 
  • Регистрация:
    30 Ноя -0001
#2
Wasja, спасибо:) Я сейчас очень заболел, по этому редко появляюсь тут. Но как выздоровлю, надо будет твои рсски подобавлять в Фапос как стандартные фишки. И может настройку к ним какуюто прикрутить:)

Я горжусь тем, что создал бесплатную CMS - AtomX. И люблю нашу команду)

Wasja

  • Истенный Атомовод
  • Юзер
  • 397
  • Репутация:19 
  • Предупреждения: 0 
  • Регистрация:
    11 Ноя 2010
#3
Drunya пишет:
И может настройку к ним какуюто прикрутить
1) Чекбокс для включения/отключения.
2) Количество отслеживаемых материалов (сейчас 10).
Ну и код для добавления ссылки на RSS - например, {RSS_LINK}.

PS. Мне админку самому править не захотелось. :)

Ater

  • Атом-мозг
  • Юзер
  • 750
  • Репутация:15 
  • Предупреждения: 0 
  • Регистрация:
    17 Авг 2010
#4
ну по поводу RSS вроде как в какой то теме писалось и я вроде описывал что необходимо для RSS каналов сделать в админке :)

если нет то можно попробовать еще раз написать.

по большому счету необходимо:
Возможность создать RSS ленту для любого модуля (по сути включен или отключен RSS канал)
Возможность создания подборок RSS каналов по своему сайту (допустим один канал мне нужен что бы там были новости и статьи, другой канал что бы форум и фотоальбом и еще один канал который будет общим для всего сайта)
Возможность выбрать количество показываемых новостей для каждого канала RSS

совсем по хорошему еще можно добавить возможность настройки отображения вида новости в RSS. Так например должа или нет попадать какая то информация из полей. Как и где отображается фотка и так далее.

Отредактировано автором 3 Мар 2011
Все мое имхо...
------
Не флуди и не да зафлудим будешь!

Drunya

  • Man of God
  • Админ
  • 3527
  • Репутация:110 
  • Предупреждения: 0 
  • Регистрация:
    30 Ноя -0001
#5
Ater, все записано что ты писал раньше. Я все помню:)

Думаю в 1.0 будет все о чем вы говорите кроме
Ater пишет:
Возможность создания подборок RSS каналов по своему сайту (допустим один канал мне нужен что бы там были новости и статьи, другой канал что бы форум и фотоальбом и еще один канал который будет общим для всего сайта)

Я горжусь тем, что создал бесплатную CMS - AtomX. И люблю нашу команду)

Ater

  • Атом-мозг
  • Юзер
  • 750
  • Репутация:15 
  • Предупреждения: 0 
  • Регистрация:
    17 Авг 2010
#6
Drunya пишет:
кроме
жаль =( опять придется пользоваться сторонними сайтами для сьборки общего канала...

Все мое имхо...
------
Не флуди и не да зафлудим будешь!
1
Сейчас online: 153. Зарегистрированных: 0. Гостей: 153.