wordpress on movable type

45
WordPress on Movable Type 2013/6/29 MTCafe Saitama 2013 藤本

Upload: hajime-fujimoto

Post on 05-Dec-2014

1.526 views

Category:

Documents


3 download

DESCRIPTION

Movable Type上でWordPressの投稿等を扱うWPConnectorプラグインの紹介です

TRANSCRIPT

Page 1: WordPress on Movable Type

WordPress on Movable Type

2013/6/29

MTCafe Saitama 2013

藤本 壱

Page 2: WordPress on Movable Type

今日のアジェンダ

• 自己紹介

• WPConnectorプラグイン(開発中)の紹介

• Listing Frameworkによる投稿等の管理

• 多彩なテンプレートタグ

• WPConnectorプラグインの裏側

• WPConnectorプラグインのこれから

• まとめ

Page 3: WordPress on Movable Type

自己紹介

Page 4: WordPress on Movable Type

自己紹介その1

• 藤本 壱(ふじもと はじめ)

• 兵庫県伊丹市出身

• 群馬県前橋市在住

Page 5: WordPress on Movable Type

自己紹介その2

• 本職はPC系のフリーライター

• 2004年秋からMTユーザー

• さまざまなプラグインを開発

Page 6: WordPress on Movable Type

ブログももちろんMT

http://www.h-fj.com/blog/

Page 7: WordPress on Movable Type

WPConnectorプラグイン(開発中)の紹介

Page 8: WordPress on Movable Type

WordPressのメリット

• テーマ/プラグインが豊富

• 動的出力(管理者にとって手間が少ない)

• テンプレートが生PHP(WordPress以外にも応用が利く)

• 非オブジェクト指向(なんちゃってPHPプログラマでも一応カスタマイズできる)

• 無償

Page 9: WordPress on Movable Type

WordPressの弱点

• テンプレートタグがHTMLも出力(データとHTMLを分離しにくい)

– 例:wp_get_archives, wp_list_categories

• 静的出力に向かない

• ステージングサーバー/公開サーバーを分離しにくい

• 本体のコードが読みにくい(非オブジェクト指向・・・)

• MVCが分離していない

Page 10: WordPress on Movable Type

組み合わせて使おう

• WordPressとMovable Typeを組み合わせて相互補完

• でもどうやって?

WPConnectorプラグイン

Page 11: WordPress on Movable Type

WPConnectorプラグインの機能

• WordPressのオブジェクト(投稿等)をMTの管理画面で管理

• Movable Typeのウェブサイトの機能でWordPressのブログをグループ化

• WordPressのデータをMovable Typeのテンプレートタグで出力

• WordPressの投稿等の状態が変化したときにMovable Typeのテンプレートを自動的に再構築(現状はインデックステンプレートのみ)

Page 12: WordPress on Movable Type

Listing Frameworkによる投稿等の管理

Page 13: WordPress on Movable Type

WordPressの投稿等の一覧をMovable Typeの管理画面で

• Movable Typeの記事一覧と同じUI(Listing Framework)

• 表示するフィールドを自由に選択

• 条件を指定して投稿等を検索

• フィールドの値で投稿を並べ替え

• カスタム投稿タイプ/カスタム分類にも対応

Page 14: WordPress on Movable Type

デモをご覧ください

Page 15: WordPress on Movable Type

多彩なテンプレートタグ

Page 16: WordPress on Movable Type

WordPressのデータをMovable Typeのテンプレートで出力

• 300種類を超える多彩なテンプレートタグ

• WordPressの各種のデータを出力可能

• 複数ブログの混在出力が可能

• カスタム投稿タイプ/カスタム分類にも対応

Page 17: WordPress on Movable Type

事例①:カテゴリ別/年別アーカイブリストの出力

• カテゴリ別かつ年別のアーカイブリストを出力したい

Page 18: WordPress on Movable Type

WordPressで行うには?

• PHP+SQLでコードをガリガリ書く

• ノンプログラマでもできる?(自力でカスタマイズするのは厳しそう・・・)

Page 19: WordPress on Movable Type

WPConnectorなら

• 日付(年/月/週/日)/カテゴリ/タグを組み合わせたアーカイブリストを出力可能(MTWPArchiveListタグ)

• 特定の期間/カテゴリ/タグに限定することも可能

Page 20: WordPress on Movable Type

テンプレートの例

• Movable Type側(インデックステンプレート)<mt:WPArchiveList archive_type="Category-Yearly">

<mt:WPArchiveListHeader><ul></mt:WPArchiveListHeader><mt:WPArchiveListCategoryHeader>

<li><$mt:WPCategoryLabel$><ul>

</mt:WPArchiveListCategoryHeader><li>

<a href="<$mt:WPArchiveLink$>"><$mt:WPArchiveYear$>年</a>(<$mt:WPArchiveCount$>)

</li><mt:WPArchiveListCategoryFooter>

</ul></li>

</mt:WPArchiveListCategoryFooter><mt:WPArchiveListFooter><ul></mt:WPArchiveListFooter>

</mt:WPArchiveList>

• WordPress側ではincludeで上記テンプレートの出力ファイルを組み込む

Page 21: WordPress on Movable Type

応用:特定カテゴリの月別アーカイブリスト

• 「自作プラグイン」カテゴリの月別アーカイブリストを年でグループ化して出力

Page 22: WordPress on Movable Type

WPConnectorプラグインで実現<mt:WPArchiveList category="自作プラグイン" archive_type="Category-Monthly"><mt:WPArchiveListHeader>

<h2><$mt:WPCategoryLabel$></h2><ul>

</mt:WPArchiveListHeader><mt:WPArchiveListYearHeader>

<li><$mt:WPArchiveYear$>年<ul>

</mt:WPArchiveListYearHeader><li>

<a href="<$mt:WPArchiveLink$>"><$mt:WPArchiveMonth$>月</a>(<$mt:WPArchiveCount$>)

</li><mt:WPArchiveListYearFooter>

</ul></li>

</mt:WPArchiveListYearFooter><mt:WPArchiveListFooter><ul></mt:WPArchiveListFooter>

</mt:WPArchiveList>

Page 23: WordPress on Movable Type

事例②:複雑なカレンダー

• 特定のカテゴリに属する投稿のみ出力

• 日毎の投稿一覧を出力

Page 24: WordPress on Movable Type

WordPressで行うには?

• WordPress標準のカレンダーは機能が単純すぎる

• カレンダー系のプラグインが多数存在するが、ブラックボックスすぎて細かいカスタマイズをしずらい

Page 25: WordPress on Movable Type

WPConnectorプラグインなら

• 投稿/固定ページ/メディア/カスタム投稿タイプのカレンダー出力が可能(WPCalendarタグ)

• カテゴリ/タグ/カスタムフィールド等の条件に合う投稿等だけのカレンダー出力も可能

• それぞれの日に属する投稿等のリストも出力可能

Page 26: WordPress on Movable Type

テンプレートの例<table>

<tr><th>Sun</th><th>Mon</th><th>Tue</th><th>Wed</th><th>Thr</th><th>Fri</th><th>Sat</th></tr><mt:WPCalendar month="201211" category="自作プラグイン">

<mt:WPCalendarWeekHeader><tr></mt:WPCalendarWeekHeader><td><mt:WPCalendarIfBlank>

&nbsp;<mt:Else>

<mt:WPCalendarIfPosts><$mt:WPCalendarDay$>(<$mt:WPCalendarPostCount$>)<ul><mt:WPPosts>

<li><a href="<$mt:WPPostPermalink$>"><$mt:WPPostTitle$></a><br />(<$mt:WPPostDate$>)</li></mt:WPPosts></ul>

</mt:WPCalendarIfPosts><mt:WPCalendarIfNoPosts>

<$mt:WPCalendarDay$>(0)</mt:WPCalendarIfNoPosts>

</mt:WPCalendarIfBlank></td><mt:WPCalendarWeekFooter></tr></mt:WPCalendarWeekFooter>

</mt:WPCalendar></table>

Page 27: WordPress on Movable Type

事例③:複数ブログを混在させた新記事一覧

• ポータル系サイト等で、複数ブログの 新記事を混在させて時系列に出力したい

Page 28: WordPress on Movable Type

WordPressで行うには?

• 結構面倒

– 方法1:各ブログから 新記事を読み込み、配列に代入してからソート

– 方法2: SQLを直接発行して各ブログの投稿のテーブルからデータを読み込む(ブログごとにテーブルが別なので面倒)

Page 29: WordPress on Movable Type

WPConnectorプラグインでは

• 投稿/固定ページ/メディア/カスタム投稿タイプに対応(WPPostsタグ等)

• 複数ブログを混在した情報出力が可能(include_blogsモディファイア)

• カテゴリ/タグ/カスタムフィールド等の条件を指定した出力も可能

Page 30: WordPress on Movable Type

テンプレートの例

<mt:WPPosts include_blogs=“all”><mt:WPPostsHeader><ul></mt:WPPostsHeader><li class="blog<$mt:WPBlogID$>"><a href="<$mt:WPPostPermalink$>"><$mt:WPPostTitle$>

</a>(<$mt:WPBlogName$>, <$mt:WPPostDate$>)

</li><mt:WPPostsFooter><ul></mt:WPPostsFooter>

</mt:WPPosts>

• Movable Type側(インデックステンプレート)

• WordPress側ではincludeで上記テンプレートの出力ファイルを組み込む

Page 31: WordPress on Movable Type

デモをご覧ください

Page 32: WordPress on Movable Type

WPConnectorプラグインの裏側

Page 33: WordPress on Movable Type

Movable Type is a framework

• Webアプリケーション開発のフレームワーク

– Object Relational Mapper(Data::ObjectDriver,MT::Object)

– Model(Perlのロジック)

– View(テンプレート)

– Controller(mt.cgi/config.yaml)

Page 34: WordPress on Movable Type

MT::Objectを継承したクラス

ウェブページMT::Page

ブログ記事とカテゴリのリンクMT::Placement

アイテムMT::Asset

タグMT::Tag

ユーザーMT::Author

ブログMT::Blog

カテゴリMT::Category

ブログ記事MT::Entry

内容クラス

Page 35: WordPress on Movable Type

MT::Objectの基本

• IDが1番のブログから記事を読み込んでタイトルを出力

use MT::Entry;

my @entries = MT::Entry->load({ blog_id => 1 });for my $entry (@entries) {

print $entry->title . “¥n”;}• SQLは書かない

Page 36: WordPress on Movable Type

WP::Object

• MT::Objectを継承

• WordPressのオブジェクトを抽象化したクラス

• WP::Objectを継承して各オブジェクトに対応するクラスを作成

Page 37: WordPress on Movable Type

WP::Objectを継承したクラス

投稿のメタ情報(カスタムフィールド)WP::PostMeta

投稿系と分類系のリンクWP::TermRelationship

ユーザーWP::User

コメントWP::Comment

ブログWP::Blog

分類系(カテゴリ,タグ,カスタム分類等)WP::Taxonomy

投稿系(投稿,固定ページ,メディア,カスタム投稿タイプ等)

WP::PostObject

内容クラス

Page 38: WordPress on Movable Type

WP::Objectの基本

• 投稿を読み込んでタイトルを出力

use WP::Post;

my @posts = WP::Post->load({ wp_blog_id => 1 });for my $post (@posts) {

print $post->title . “¥n”;}

Page 39: WordPress on Movable Type

WP::Objectの裏側

• MTとWPではデータベースのフィールド名の命名規則が異なる

• WPはブログごとにテーブルの組が作られる

• MySQLにビューを作って差異を吸収

Page 40: WordPress on Movable Type

WPConnectorプラグインのこれから

Page 41: WordPress on Movable Type

さらに実装したい機能

• 投稿等の一覧画面にカスタムフィールドも表示

• テンプレートタグをさらに追加

• アーカイブの出力

• WordPressの機能をMovable Typeから利用(カスタムメニューなど)

Page 42: WordPress on Movable Type

○○○::Objectで広がる世界

• WP::Objectと同様のことは他のCMS等でも可能(なはず)

• CMS

– Joomla, MODX, SoyCMS, a-blog cms,・・・

• Webアプリケーションフレームワーク

– Ruby on Rail, CakePHP,・・・

• Etc.

Page 43: WordPress on Movable Type

Everything on Movable Type

• ○○○::Objectを通して他のCMS等とMovable Typeを連携

– 他のCMS等のデータをMovable Typeのテンプレートタグで出力

– 他のCMS等のデータをMovable Typeの管理画面で利用

Page 44: WordPress on Movable Type

まとめ

• WPConnectorプラグインでWordPressとMovable Typeを連携できる

• Listing FrameworkでWordPressの投稿等を管理

• 多彩なテンプレートタグでWordPressのデータを柔軟に出力

• MT::Objectを拡張して様々なCMS等と連携すると面白いかも(Everything on Movable Type)

Page 45: WordPress on Movable Type

ご清聴ありがとうございました