Your SlideShare is downloading. ×
WordPress on Movable Type
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

WordPress on Movable Type

1,104
views

Published on

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

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


0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,104
On Slideshare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
1
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. WordPress on Movable Type 2013/6/29 MTCafe Saitama 2013 藤本 壱
  • 2. 今日のアジェンダ • 自己紹介 • WPConnectorプラグイン(開発中)の紹介 • Listing Frameworkによる投稿等の管理 • 多彩なテンプレートタグ • WPConnectorプラグインの裏側 • WPConnectorプラグインのこれから • まとめ
  • 3. 自己紹介
  • 4. 自己紹介その1 • 藤本 壱(ふじもと はじめ) • 兵庫県伊丹市出身 • 群馬県前橋市在住
  • 5. 自己紹介その2 • 本職はPC系のフリーライター • 2004年秋からMTユーザー • さまざまなプラグインを開発
  • 6. ブログももちろんMT http://www.h-fj.com/blog/
  • 7. WPConnectorプラグイン (開発中)の紹介
  • 8. WordPressのメリット • テーマ/プラグインが豊富 • 動的出力(管理者にとって手間が少ない) • テンプレートが生PHP(WordPress以外にも応用 が利く) • 非オブジェクト指向(なんちゃってPHPプログラマ でも一応カスタマイズできる) • 無償
  • 9. WordPressの弱点 • テンプレートタグがHTMLも出力(データとHTML を分離しにくい) – 例:wp_get_archives, wp_list_categories • 静的出力に向かない • ステージングサーバー/公開サーバーを分離 しにくい • 本体のコードが読みにくい(非オブジェクト指 向・・・) • MVCが分離していない
  • 10. 組み合わせて使おう • WordPressとMovable Typeを組み合わせて 相互補完 • でもどうやって? WPConnectorプラグイン
  • 11. WPConnectorプラグインの機能 • WordPressのオブジェクト(投稿等)をMTの管 理画面で管理 • Movable Typeのウェブサイトの機能で WordPressのブログをグループ化 • WordPressのデータをMovable Typeのテンプ レートタグで出力 • WordPressの投稿等の状態が変化したときに Movable Typeのテンプレートを自動的に再構 築(現状はインデックステンプレートのみ)
  • 12. Listing Frameworkによる 投稿等の管理
  • 13. WordPressの投稿等の一覧を Movable Typeの管理画面で • Movable Typeの記事一覧と同じUI (Listing Framework) • 表示するフィールドを自由に選択 • 条件を指定して投稿等を検索 • フィールドの値で投稿を並べ替え • カスタム投稿タイプ/カスタム分類にも対応
  • 14. デモをご覧ください
  • 15. 多彩なテンプレートタグ
  • 16. WordPressのデータを Movable Typeのテンプレートで出力 • 300種類を超える多彩なテンプレートタグ • WordPressの各種のデータを出力可能 • 複数ブログの混在出力が可能 • カスタム投稿タイプ/カスタム分類にも対応
  • 17. 事例①:カテゴリ別/年別アーカイブ リストの出力 • カテゴリ別かつ年別のアーカイブリストを出力 したい
  • 18. WordPressで行うには? • PHP+SQLでコードをガリガリ書く • ノンプログラマでもできる?(自力でカスタマイ ズするのは厳しそう・・・)
  • 19. WPConnectorなら • 日付(年/月/週/日)/カテゴリ/タグを 組み合わせたアーカイブリストを出力可能 (MTWPArchiveListタグ) • 特定の期間/カテゴリ/タグに限定すること も可能
  • 20. テンプレートの例 • 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で上記テンプレート の出力ファイルを組み込む
  • 21. 応用:特定カテゴリの 月別アーカイブリスト • 「自作プラグイン」カテゴリの月別アーカイブリ ストを年でグループ化して出力
  • 22. 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>
  • 23. 事例②:複雑なカレンダー • 特定のカテゴリに属する投稿のみ出力 • 日毎の投稿一覧を出力
  • 24. WordPressで行うには? • WordPress標準のカレンダーは機能が単純 すぎる • カレンダー系のプラグインが多数存在するが、 ブラックボックスすぎて細かいカスタマイズを しずらい
  • 25. WPConnectorプラグインなら • 投稿/固定ページ/メディア/カスタム投稿 タイプのカレンダー出力が可能(WPCalendar タグ) • カテゴリ/タグ/カスタムフィールド等の条件 に合う投稿等だけのカレンダー出力も可能 • それぞれの日に属する投稿等のリストも出力 可能
  • 26. テンプレートの例 <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>
  • 27. 事例③:複数ブログを混在させた 最新記事一覧 • ポータル系サイト等で、複数ブログの最新記 事を混在させて時系列に出力したい
  • 28. WordPressで行うには? • 結構面倒 – 方法1:各ブログから最新記事を読み込み、配列 に代入してからソート – 方法2: SQLを直接発行して各ブログの投稿のテ ーブルからデータを読み込む(ブログごとにテーブ ルが別なので面倒)
  • 29. WPConnectorプラグインでは • 投稿/固定ページ/メディア/カスタム投稿 タイプに対応(WPPostsタグ等) • 複数ブログを混在した情報出力が可能 (include_blogsモディファイア) • カテゴリ/タグ/カスタムフィールド等の条件 を指定した出力も可能
  • 30. テンプレートの例 <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で上記テンプレート の出力ファイルを組み込む
  • 31. デモをご覧ください
  • 32. WPConnectorプラグインの裏側
  • 33. Movable Type is a framework • Webアプリケーション開発のフレームワーク – Object Relational Mapper (Data::ObjectDriver,MT::Object) – Model(Perlのロジック) – View(テンプレート) – Controller(mt.cgi/config.yaml)
  • 34. MT::Objectを継承したクラス ウェブページMT::Page ブログ記事とカテゴリのリンクMT::Placement アイテムMT::Asset タグMT::Tag ユーザーMT::Author ブログMT::Blog カテゴリMT::Category ブログ記事MT::Entry 内容クラス
  • 35. MT::Objectの基本 • IDが1番のブログから記事を読み込んでタイト ルを出力 use MT::Entry; my @entries = MT::Entry->load({ blog_id => 1 }); for my $entry (@entries) { print $entry->title . “¥n”; } • SQLは書かない
  • 36. WP::Object • MT::Objectを継承 • WordPressのオブジェクトを抽象化したクラス • WP::Objectを継承して各オブジェクトに対応する クラスを作成
  • 37. WP::Objectを継承したクラス 投稿のメタ情報(カスタムフィールド)WP::PostMeta 投稿系と分類系のリンクWP::TermRelationship ユーザーWP::User コメントWP::Comment ブログWP::Blog 分類系(カテゴリ,タグ,カスタム分類等)WP::Taxonomy 投稿系(投稿,固定ページ,メディア,カス タム投稿タイプ等) WP::PostObject 内容クラス
  • 38. WP::Objectの基本 • 投稿を読み込んでタイトルを出力 use WP::Post; my @posts = WP::Post->load({ wp_blog_id => 1 }); for my $post (@posts) { print $post->title . “¥n”; }
  • 39. WP::Objectの裏側 • MTとWPではデータベースのフィールド名の命 名規則が異なる • WPはブログごとにテーブルの組が作られる • MySQLにビューを作って差異を吸収
  • 40. WPConnectorプラグインのこれから
  • 41. さらに実装したい機能 • 投稿等の一覧画面にカスタムフィールドも表 示 • テンプレートタグをさらに追加 • アーカイブの出力 • WordPressの機能をMovable Typeから利用 (カスタムメニューなど)
  • 42. ○○○::Objectで広がる世界 • WP::Objectと同様のことは他のCMS等でも 可能(なはず) • CMS – Joomla, MODX, SoyCMS, a-blog cms,・・・ • Webアプリケーションフレームワーク – Ruby on Rail, CakePHP,・・・ • Etc.
  • 43. Everything on Movable Type • ○○○::Objectを通して他のCMS等とMovable Typeを連携 – 他のCMS等のデータをMovable Typeのテンプレート タグで出力 – 他のCMS等のデータをMovable Typeの管理画面で 利用
  • 44. まとめ • WPConnectorプラグインでWordPressと Movable Typeを連携できる • Listing FrameworkでWordPressの投稿等を管 理 • 多彩なテンプレートタグでWordPressのデータを 柔軟に出力 • MT::Objectを拡張して様々なCMS等と連携する と面白いかも(Everything on Movable Type)
  • 45. ご清聴ありがとうございました