これまでに作成したLokkaプラグインの話とこれからの話
自分のこのブログは、RubyでできたCMS Lokka で作成していて、プラグインをRubyで書けるということもあってこれまでに結構プラグインを作成してきました。
ある程度作成したプラグインが溜まってきたので、自分が作っている、使っているプラグインの紹介をば。
プラグイン
Lokka Syntax Highlighter
多分一番最初に作って、現在最も活躍しているプラグイン
preタグで囲んだ部分をSyntaxHighlighterでSyntaxHighlightする奴。対応している言語がとにかく豊富で、cssのclassを指定するだけという気楽さもまた良い。
<pre class="brush:**"> </pre>
Lokka Tweet Feed
Lokkaの記事を投稿するとTwetterに流すプラグイン。下書きの時とPreview、あとは本文のどこか(自分は一番最初書いてます)に
<!-- not feed -->
を書いておくとその投稿はTweetされないようになってます。
Lokka Static
このプラグインは、Lokkaで静的なページが作成出来るようになるプラグインです。用途としてはポートフォリオなんかを作成するときに使えます。
まあ静的と入っても、ちゃんとrouteを通してあるので、普通に記事のインスタンスなんかも使うことができます。
プラグインのviewsというディレクトリに(html/erb/haml/erubis/slim)のいずれかのテンプレートを置くと、そのファイル名のrouteが定義されます。
例) "plugin_dir/views/example.rb" というファイルを作成すると、 "http://yourapp.com/example" でアクセス出来るようになります。
また、css javascript imageを使用する場合には、ファイル名と同じディレクトリを作成することで簡単に参照出来るようなHelperを用意しています。
assets_path("example.css")
#=> /plugin/lokka-static/views/example/example.css
assets_path("image/example.png")
#=> /plugin/lokka-static/views/example/image/example.png
Lokka Theme Helper Loader
このプラグインは@yayuguさんが本体にバンドルしてくれたので、現在は特にインストールする必要は無いです。
中身は名前通り、Themeを作成した際に "theme_path/helper/*_helper.rb"をrequireしてくれるようになります。なので細かいviewのhelperを定義出来るようになりました:)
Lokka Link Url Replace
このプラグインは、記事本文中に
[ユーアールエル(本来はurl):http://lokka.org]
と書くことで、"Lokka - CMS for Cloud"のように展開してくれます。
展開先のTitle要素を引っ張ってくるので、若干注意は必要ですが便利に使ってます。
Lokka-sh
@jugyoさんのrails-shをLokka用にforkした物。
rails3.2だとある程度改善されていますが、Ruby1.9.2 + Lokkaだとまだまだirb(console)の立ち上がりが遅いのです。
Lokka Redirect Host
このプラグインは複数ホスト名でアクセスできる場合に、指定したドメイン以外のアクセスはredirectさせるプラグインです。
herokuはapp.heroku.comでもアクセス出来るので、自分の場合はa-newcomer.heroku.comへのアクセスはすべてredirectさせてます。
Lokka Tag Cloud
このプラグインはThemeを作る際のHelperで、使い方は
<% tag_cloud :classes => %w(level1 level2 level3) do |tag, css_class| %>
<%= link_to tag.name, tag.link, :class => css_class %>
<% end %>
と書くことが出来、:classesに渡した配列と現在のタグの総数を元に重み付けのようなものをしてくれます。
自分のFooterにあるタグクラウドはこれを使って出力しています。
Lokka Popular Pages
このプラグインもTheme用でGoogle AnalyticsのAPIを使用して、指定した期間でPVの多かった記事を返します。
<% popular_pages.each do |entry| #retrun Entry instance %> <%= link_to entry.title, entry.link %> <% end %>
と書くことで記事を取得でき、メソッドにhashでオプションを渡すことで様々な指定ができます。
これからの話
LokkaはRubyで作成されているので、プラグインの作成にもある程度自由度があってあんまり飽きることが無いのがいいところかもしれません:)
今後はLokka本体のテスト充実化が進んでいるのでプラグインも追従したいのですが、出来ればLokka本体もある程度の区切りでGem化して行ってくれると嬉しいんですよねぇ。
今はsinatraにlokkaでも使ってるものをrequireさせてrspecを流したりしているのですが、出来ればLokka本体でver *.*.* までの動作は保証します的なことができたらいいですね:)
というか、全く本体にはコミットできていないのでやりたいなら自分でやるっきゃないかな。:p
あとはプラグインのGem化も検討されているみたいなので、その辺りにこれから貢献できたらいいなと思いました。終わり。