Language
Contacts
GitHub
Support
Registration
Enter
Login: Password: The autologin:
Users
Recent posts
Ответить
1

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

Wasja

  • Истенный Атомовод
  • Юзер
  • 397
  • Репутация:19 
  • Предупреждения: 0 
  • Регистрация:
    11 Nov 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-ридеров).

Edit by author 22 Feb 2011

Drunya

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

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

Wasja

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

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

Ater

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

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

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

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

Edit by author 3 Mar 2011
Все мое имхо...
------
Не флуди и не да зафлудим будешь!

Drunya

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

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

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

Ater

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

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