Elvez Tech Blog

高齢者支援サービス「エルブズアップス」、「御用聞きAI」を運営している株式会社エルブズのメンバーが開発に関する事や、プログラミングの話、ツールの紹介などを綴ります。

Django-CMSにRSSプラグインを追加する方法

Sep 12, 2018 6:11:37 PM / by 冨永善視

エルブズのポータルサイト(elvez.jp)は日々使いやすくなっています。

本日は、

  • 都道府県・基礎自治体のデータ項目が見やすくなりました
  • ヘルプデスクにアクセスしやすくなりました
  • RSSフィードで最新のお知らせを表示するようになりました

 

今日はDjnago-CMSのRSSリーダープラグインを追加する方法をご紹介します。

  1. プラグイン用のdjangoアプリを追加
  2. plugin_models.pyを追加
  3. cms_plguins.pyを追加
  4. プラグイン用テンプレートを追加
  5. migrateファイルを作成

 

自治体を探すならエルブズ


1. プラグイン用のdjangoアプリを追加

プラグイン用にcommonという名前のアプリを追加します。

python manage.py startapp common

アプリが作成されたら、プロジェクトのsetting.pyにcommonを追加します。

 

2. cms_plugins.pyを追加

common以下にcms_plugins.pyを追加します。

今回はフィードのURLと表示件数を設定できるようにします。

from django.db import models
from cms.models import CMSPlugin

class FeedReaderPluginModel(CMSPlugin):
url = models.URLField(verbose_name='フィードURL')
number = models.PositiveIntegerField(verbose_name='表示件数', default=1)

def __unicode__(self):
return self.url

def __str__(self):
return self.url

 

3. cms_plugins.pyを追加

フィードのエントリーを取得して、表示件数のみcontextに渡します。

import feedparser
from cms.plugin_pool import plugin_pool
from cms.plugin_base import CMSPluginBase
from common.plugin_models import FeedReaderPluginModel
from django.utils.translation import ugettext as _

@plugin_pool.register_plugin
class FeedReader(CMSPluginBase):
model = FeedReaderPluginModel
module = _('RSS')
name = _('フィードリーダー')
render_template = "common/plugins/feed_reader.html"

def render(self, context, instance, placeholder):
feeder = feedparser.parse(instance.url)
entries = list()
for index, entry in zip(range(instance.number), feeder['entries']):
title = entry.title
link = entry.link
entries.append({'title': title, 'link': link})

context.update({'entries': entries})
return context

 

4. プラグイン用のテンプレートを追加

リンクにしたタイトルを箇条書きで表示するようにします。

<ul>
{% for entry in entries %}
<li><a href="{{entry.link}}" target="_blank">{{entry.title}}</a></li>
{% endfor %}
</ul> 

今回追加したファイルは以下の通りです。

common/
├── cms_plugins.py
├── plugin_models.py
└── templates
   └── common
   └── plugins
   └── feed_reader.html

 

5. migrateファイルを作成

最後にmigrateファイルを作成してdjangoを起動します。

python manage.py makemigrations
python manage.py migrate
python manage.py runserver

 

これでDjango-CMSのプラグインにフィードリーダーが追加されます。

 


いかがだったでしょうか。

Django-CMSはDjangoアプリを作る要領で、手軽にプラグインを追加できて便利ですね。

 

エルブズでは共に開発する仲間を募集しています
ご興味がありましたらお気軽にお知らせください。

コーポレートサイトのURLが変更になりました。
会社情報については https://elvez.co.jp までごアクセスください。 

 

Topics: オープンソース

冨永善視

Written by 冨永善視

地方創生ポータルサイト エルブズ | お問合せ | 御用聞きAIiOS版 | Android版) | 高齢者生活支援対話システム | 資料請求 | ビデオ | 採用情報
Copyright 2019 | 株式会社エルブズ