Lokkathon #1でプラグインで管理画面を作れるようにしました。

サンプルとしてGoogle Analyticsのプラグインを作りました。

管理画面の作り方

komagata [p0t] - Lokka

管理画面からIDともしあれば、サブドメインを入力できます。(@nkmrshnさん作)

module Lokka
module GoogleAnalytics
def self.registered(app)
app.get '/admin/plugins/google_analytics' do
haml :"plugin/lokka-google_analytics/views/index", :layout => :"admin/layout"
end

app.put '/admin/plugins/google_analytics' do
Option.tracker = params['tracker']
Option.tracker_dn = params['tracker_dn']
flash[:notice] = 'Updated.'
redirect '/admin/plugins/google_analytics'
end

app.before do
tracker = Option.tracker
if !tracker.blank? and ENV['RACK_ENV'] == 'production' and !logged_in?
dn = Option.tracker_dn
tracker_script = ""
(snip...)
content_for :header do
tracker_script
end
end
end
end
end
end

管理画面を作るプラグインのコードはこんな感じです。管理画面のURLを '/admin/plugins/プラグイン名' にすると、プラグイン一覧のプラグイン名から自動的にリンクが張られます。

komagata [p0t] - Lokka

/admin/〜というURLには自動的に認証が係るので、プラグイン内で認証を気にする必要はありません。

テンプレートへの挿入

テンプレートの中にはheader, footerという外部から何かを挿入できるポイントがあります。(テーマ側でこのheader, footerが無い場合は何も起きません)

要はyieldなので、プラグインの中からそれぞれの場所にcontent_forしてあげればプラグインからテンプレートにタグを挿し込むことができます。

content_for :footer do
'<p>created by unk</p>'
end

この仕組を使えばjavascriptを使ったプラグインなどが簡単に作れそうです。

Comments


Option