Suche senden
Hochladen
MT meets PHP
•
2 gefällt mir
•
10,036 views
純生 野田
Folgen
Technologie
Diashow-Anzeige
Melden
Teilen
Diashow-Anzeige
Melden
Teilen
1 von 56
Empfohlen
MT meets PHP - PHP conference Kansai 2013
MT meets PHP - PHP conference Kansai 2013
純生 野田
やはりお前らのMTMLは間違っている!
やはりお前らのMTMLは間違っている!
純生 野田
Inside Movable Type
Inside Movable Type
純生 野田
WordPressと外部APIとの連携
WordPressと外部APIとの連携
Hidekazu Ishikawa
WordPressで提供するWeb API
WordPressで提供するWeb API
Yuko Toriyama
MTで学ぶセキュアプログラミング@MT Tokyo
MTで学ぶセキュアプログラミング@MT Tokyo
純生 野田
Gen-Template-for-Perl
Gen-Template-for-Perl
nasneg
Perl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろう
Perl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろう
keroyonn
Empfohlen
MT meets PHP - PHP conference Kansai 2013
MT meets PHP - PHP conference Kansai 2013
純生 野田
やはりお前らのMTMLは間違っている!
やはりお前らのMTMLは間違っている!
純生 野田
Inside Movable Type
Inside Movable Type
純生 野田
WordPressと外部APIとの連携
WordPressと外部APIとの連携
Hidekazu Ishikawa
WordPressで提供するWeb API
WordPressで提供するWeb API
Yuko Toriyama
MTで学ぶセキュアプログラミング@MT Tokyo
MTで学ぶセキュアプログラミング@MT Tokyo
純生 野田
Gen-Template-for-Perl
Gen-Template-for-Perl
nasneg
Perl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろう
Perl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろう
keroyonn
脱コピペ!デザイナーにもわかるPHPとWP_Query
脱コピペ!デザイナーにもわかるPHPとWP_Query
Hidekazu Ishikawa
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
leverages_event
Django boodoo
Django boodoo
泰 増田
GMO TECHNOLOGY BOOT CAMP2015(PHP編)
GMO TECHNOLOGY BOOT CAMP2015(PHP編)
Arata Fujimura
Perl logging
Perl logging
keroyonn
俺のフックがこんなに簡単なわけがない。
俺のフックがこんなに簡単なわけがない。
Hishikawa Takuro
swooleを試してみた
swooleを試してみた
Yukihiro Katsumi
PHP基本的関数QUIZ
PHP基本的関数QUIZ
Wataru Terada
Try Jetpack
Try Jetpack
Hideaki Miyake
Creators'night#12今井
Creators'night#12今井
Daisuke Imai
Jqm20120210
Jqm20120210
cmtomoda
⑲jQueryをおぼえよう!その5
⑲jQueryをおぼえよう!その5
Nishida Kansuke
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
Hiroaki KOBAYASHI
Mojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてる
jamadam
画像を縮小するお話
画像を縮小するお話
technocat
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012
Yusuke Ando
知ってるようで意外と知らないPHPの便利関数
知ってるようで意外と知らないPHPの便利関数
Wataru Terada
Webシステム脆弱性LT資料
Webシステム脆弱性LT資料
Tomohito Adachi
-入門- enchant.js でゲームを作ろう
-入門- enchant.js でゲームを作ろう
nico0927
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
kwatch
Ext.Directについて
Ext.Directについて
Yuki Naotori
Launch a Web Service in 3 Days Using WordPress
Launch a Web Service in 3 Days Using WordPress
Kite Koga
Weitere ähnliche Inhalte
Was ist angesagt?
脱コピペ!デザイナーにもわかるPHPとWP_Query
脱コピペ!デザイナーにもわかるPHPとWP_Query
Hidekazu Ishikawa
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
leverages_event
Django boodoo
Django boodoo
泰 増田
GMO TECHNOLOGY BOOT CAMP2015(PHP編)
GMO TECHNOLOGY BOOT CAMP2015(PHP編)
Arata Fujimura
Perl logging
Perl logging
keroyonn
俺のフックがこんなに簡単なわけがない。
俺のフックがこんなに簡単なわけがない。
Hishikawa Takuro
swooleを試してみた
swooleを試してみた
Yukihiro Katsumi
PHP基本的関数QUIZ
PHP基本的関数QUIZ
Wataru Terada
Try Jetpack
Try Jetpack
Hideaki Miyake
Creators'night#12今井
Creators'night#12今井
Daisuke Imai
Jqm20120210
Jqm20120210
cmtomoda
⑲jQueryをおぼえよう!その5
⑲jQueryをおぼえよう!その5
Nishida Kansuke
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
Hiroaki KOBAYASHI
Mojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてる
jamadam
画像を縮小するお話
画像を縮小するお話
technocat
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012
Yusuke Ando
知ってるようで意外と知らないPHPの便利関数
知ってるようで意外と知らないPHPの便利関数
Wataru Terada
Webシステム脆弱性LT資料
Webシステム脆弱性LT資料
Tomohito Adachi
-入門- enchant.js でゲームを作ろう
-入門- enchant.js でゲームを作ろう
nico0927
Was ist angesagt?
(19)
脱コピペ!デザイナーにもわかるPHPとWP_Query
脱コピペ!デザイナーにもわかるPHPとWP_Query
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
Django boodoo
Django boodoo
GMO TECHNOLOGY BOOT CAMP2015(PHP編)
GMO TECHNOLOGY BOOT CAMP2015(PHP編)
Perl logging
Perl logging
俺のフックがこんなに簡単なわけがない。
俺のフックがこんなに簡単なわけがない。
swooleを試してみた
swooleを試してみた
PHP基本的関数QUIZ
PHP基本的関数QUIZ
Try Jetpack
Try Jetpack
Creators'night#12今井
Creators'night#12今井
Jqm20120210
Jqm20120210
⑲jQueryをおぼえよう!その5
⑲jQueryをおぼえよう!その5
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
Mojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてる
画像を縮小するお話
画像を縮小するお話
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012
知ってるようで意外と知らないPHPの便利関数
知ってるようで意外と知らないPHPの便利関数
Webシステム脆弱性LT資料
Webシステム脆弱性LT資料
-入門- enchant.js でゲームを作ろう
-入門- enchant.js でゲームを作ろう
Ähnlich wie MT meets PHP
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
kwatch
Ext.Directについて
Ext.Directについて
Yuki Naotori
Launch a Web Service in 3 Days Using WordPress
Launch a Web Service in 3 Days Using WordPress
Kite Koga
Cake php4designers
Cake php4designers
Seiji Ogawa
ブログメディアにおけるData APIの活用について
ブログメディアにおけるData APIの活用について
Hatsuhito UENO
20090606 わんくま(がる)
20090606 わんくま(がる)
galluda
詳説ぺちぺち
詳説ぺちぺち
do_aki
Using Dancer
Using Dancer
Yoshihiro Sasaki
SQLマッピングフレームワーク「Kobati」のはなし
SQLマッピングフレームワーク「Kobati」のはなし
Kazuki Minamitani
URLで遊ぼう
URLで遊ぼう
Hiraku Nakano
MySQLerの7つ道具
MySQLerの7つ道具
yoku0825
Keynote In Japanese
Keynote In Japanese
Kuniyoshi Murata
Apacheの展望とmod_perlの超絶技巧 #yapcasia
Apacheの展望とmod_perlの超絶技巧 #yapcasia
鉄次 尾形
Struts2を始めよう!
Struts2を始めよう!
Shinpei Ohtani
「Html sql」で図書館hpにアクセスしてみよう
「Html sql」で図書館hpにアクセスしてみよう
Kentaro Matsui
XMPP仕様簡単解説
XMPP仕様簡単解説
Keiichi Daiba
2005 09 17_osc2005_xoops
2005 09 17_osc2005_xoops
Tom Hayakawa
拡張ライブラリ作成による高速化
拡張ライブラリ作成による高速化
Kazunori Jo
スマフォ時代に乗り遅れない為のレスポンシブ・ウェブデザイン
スマフォ時代に乗り遅れない為のレスポンシブ・ウェブデザイン
invogue
Zend Frameworkで始める携帯サイト
Zend Frameworkで始める携帯サイト
清水樹
Ähnlich wie MT meets PHP
(20)
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
Ext.Directについて
Ext.Directについて
Launch a Web Service in 3 Days Using WordPress
Launch a Web Service in 3 Days Using WordPress
Cake php4designers
Cake php4designers
ブログメディアにおけるData APIの活用について
ブログメディアにおけるData APIの活用について
20090606 わんくま(がる)
20090606 わんくま(がる)
詳説ぺちぺち
詳説ぺちぺち
Using Dancer
Using Dancer
SQLマッピングフレームワーク「Kobati」のはなし
SQLマッピングフレームワーク「Kobati」のはなし
URLで遊ぼう
URLで遊ぼう
MySQLerの7つ道具
MySQLerの7つ道具
Keynote In Japanese
Keynote In Japanese
Apacheの展望とmod_perlの超絶技巧 #yapcasia
Apacheの展望とmod_perlの超絶技巧 #yapcasia
Struts2を始めよう!
Struts2を始めよう!
「Html sql」で図書館hpにアクセスしてみよう
「Html sql」で図書館hpにアクセスしてみよう
XMPP仕様簡単解説
XMPP仕様簡単解説
2005 09 17_osc2005_xoops
2005 09 17_osc2005_xoops
拡張ライブラリ作成による高速化
拡張ライブラリ作成による高速化
スマフォ時代に乗り遅れない為のレスポンシブ・ウェブデザイン
スマフォ時代に乗り遅れない為のレスポンシブ・ウェブデザイン
Zend Frameworkで始める携帯サイト
Zend Frameworkで始める携帯サイト
Mehr von 純生 野田
アクセシビリティで企業価値を高める、小さな会社の戦い方
アクセシビリティで企業価値を高める、小さな会社の戦い方
純生 野田
PowerCMS X
PowerCMS X
純生 野田
次世代版 PowerCMS 開発プロジェクトのご紹介
次世代版 PowerCMS 開発プロジェクトのご紹介
純生 野田
PowerCMS Conference
PowerCMS Conference
純生 野田
PowerCMS X
PowerCMS X
純生 野田
アルファサード株式会社はなぜ アクセシビリティに取り組むのか
アルファサード株式会社はなぜ アクセシビリティに取り組むのか
純生 野田
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用
純生 野田
About PowerCMS4.3
About PowerCMS4.3
純生 野田
オーサリングツールとしてのCMSとWebアクセシビリティ
オーサリングツールとしてのCMSとWebアクセシビリティ
純生 野田
Color Testerはどうやって文字の色を拾っているのか?
Color Testerはどうやって文字の色を拾っているのか?
純生 野田
The Next PowerCMS
The Next PowerCMS
純生 野田
The Next PowerCMS
The Next PowerCMS
純生 野田
ウェブアクセシビリティチェックツール開発者の頭ん中
ウェブアクセシビリティチェックツール開発者の頭ん中
純生 野田
PowerCMS 8341 のご紹介
PowerCMS 8341 のご紹介
純生 野田
Something Different for the Best Web Solution!
Something Different for the Best Web Solution!
純生 野田
SEOの本質から考える PowerCMSを活用した 検索エンジン最適化
SEOの本質から考える PowerCMSを活用した 検索エンジン最適化
純生 野田
MTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティング
MTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティング
純生 野田
Mt seminar hiroshima_public
Mt seminar hiroshima_public
純生 野田
Mac OSにおけるShellコマンドの活⽤用 (Xojo 勉強会)
Mac OSにおけるShellコマンドの活⽤用 (Xojo 勉強会)
純生 野田
Power cms3+azure
Power cms3+azure
純生 野田
Mehr von 純生 野田
(20)
アクセシビリティで企業価値を高める、小さな会社の戦い方
アクセシビリティで企業価値を高める、小さな会社の戦い方
PowerCMS X
PowerCMS X
次世代版 PowerCMS 開発プロジェクトのご紹介
次世代版 PowerCMS 開発プロジェクトのご紹介
PowerCMS Conference
PowerCMS Conference
PowerCMS X
PowerCMS X
アルファサード株式会社はなぜ アクセシビリティに取り組むのか
アルファサード株式会社はなぜ アクセシビリティに取り組むのか
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用
About PowerCMS4.3
About PowerCMS4.3
オーサリングツールとしてのCMSとWebアクセシビリティ
オーサリングツールとしてのCMSとWebアクセシビリティ
Color Testerはどうやって文字の色を拾っているのか?
Color Testerはどうやって文字の色を拾っているのか?
The Next PowerCMS
The Next PowerCMS
The Next PowerCMS
The Next PowerCMS
ウェブアクセシビリティチェックツール開発者の頭ん中
ウェブアクセシビリティチェックツール開発者の頭ん中
PowerCMS 8341 のご紹介
PowerCMS 8341 のご紹介
Something Different for the Best Web Solution!
Something Different for the Best Web Solution!
SEOの本質から考える PowerCMSを活用した 検索エンジン最適化
SEOの本質から考える PowerCMSを活用した 検索エンジン最適化
MTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティング
MTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティング
Mt seminar hiroshima_public
Mt seminar hiroshima_public
Mac OSにおけるShellコマンドの活⽤用 (Xojo 勉強会)
Mac OSにおけるShellコマンドの活⽤用 (Xojo 勉強会)
Power cms3+azure
Power cms3+azure
Kürzlich hochgeladen
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
danielhu54
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
Kürzlich hochgeladen
(10)
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
MT meets PHP
1.
MT meets PHP MTCafe
Saitama 2013 Junnama Noda @ Alfasado, Inc.
2.
About Me (野⽥田
純⽣生) •アルファサード株式会社 代表取締役 •CMS/受託開発を通じてクライアントを爆速化 •Movable Type エバンジェリスト •http://junnama.alfasado.net/online/ •http://twitter.com/junnama • https://www.facebook.com/junnama.noda
3.
http://alfasado.net/
4.
http://powercms.jp/
5.
どのくらいMTが好きか
6.
http://www.amazon.co.jp/dp/4774147109
7.
http://www.amazon.co.jp/dp/4839927537
8.
https://github.com/alfasado
9.
http://2012.osaka.wordcamp.org/
10.
http://2012.osaka.wordcamp.org/
11.
http://2012.osaka.wordcamp.org/speakers/sumio-noda/
12.
エイプリルフールのネタではない! http://powercms.alfasado.net/blog/2011/04/wordpressmovable_type.html
13.
Movable Type • マルチサイトの管理理機能 •
強⼒力力なテンプレートエンジン(MTML) • プラグインによる拡張 • テーマの作成 • パートナー企業によるサードパーティ製品 • 開発⾔言語はPerl
14.
開発⾔言語はPerl
15.
Perl
16.
Perl
17.
MT meets PHP
18.
MT meets PHP •Ver.3.1でダイナミックパブリッシングサポート •
class MT • class MTDatabase • class BaseObject extends ADOdb_̲Active_̲Record • class MTViewer extends Smarty • PHPでプラグインによる拡張が可能
19.
Example 1 <?php $blog_id =
2; include('/path/to/mt/php/mt.php'); $mt = MT::get_instance($blog_id, '/path/to/mt/mt-config.cgi'); $blog = $mt->db()->fetch_blog($blog_id); echo $blog->name . "n"; ?>
20.
Example 2 <?php require_once( 'class.mt_entry.php'
); $_entry = new Entry; $where = "entry_status=2 and entry_blog_id=2"; $where .= " order by entry_authored_on DESC "; $extra['limit'] = 10; $entries = $_entry->Find( $where, FALSE, FALSE, $extra ); foreach ( $entries as $entry ) { echo $entry->title . "n"; } ?>
21.
Example 3 <?php //class.mt_log.php require_once(
"class.baseobject.php" ); class Log extends BaseObject { public $_table = 'mt_log'; protected $_prefix = "log_"; } ?> <?php require_once( 'class.mt_log.php' ); $_log = new Log; $_log->message = “This is test.”; $ts = gmdate( "YmdHis" ); $_log->created_on = $ts; $_log->modified_on = $ts; $_log->Save(); ?>
22.
MTML Movable Type Markup
Language
23.
MTML=Movable Type Markup
Language •MTML=Viewを担当するもの •MTIf MTElse MTLoopなど、実はロジックも書け る •テンプレートにプログラムは書けない(完全に分 離離している)=>デザイナに敷居が低い •<MTFoo> でも <mt:foo> でも <mtfoo /> で も <$MTFoo$> でも良良い(緩い)
24.
<ul> <?php $myposts = get_posts('posts_per_page=10'); foreach($myposts as
$post) : setup_postdata($post); ?> <li><a href="<?php the_permalink(); ?>"> <?php the_title(); ?></a></li> <?php endforeach; ?> </ul> Template for WordPress
25.
<ul> <MT:Entries limit="10"> <li><a href="<MT:EntryPermalink>"> <MT:EntryTitle></a></li> </MT:Entries> </ul> Template
for Movable Type
26.
MTMLの拡張 • ダイナミックパブリッシングのタグはPHPで書く • mt_̲dir/plugins/PluginName/php/以下に設置 •
block.mtfoo.php, function.mtloop.php(命名規則) • Smartyのプラグインとして書く • MTがSmartyプラグインをMTMLに内部変換して実⾏行行
27.
モディファイア <?php // modifier.addstring.php function smarty_modifier_addstring (
$text, $arg ) { return "{$text}{$arg}"; } //<mt:foo addstring= “ただしイケメンに限る。”> ?>
28.
ファンクションタグ <?php //function.mtrand.php function smarty_function_mtrand( $args,
&$ctx ) { $min = $args['min']; $max = $args['max']; return rand( $min, $max ); } //<mt:rand min=”1” max=”10”> ?>
29.
条件タグ <?php //block.mtifrand.php function smarty_block_mtifrand ($args, $content,
&$ctx, &$repeat) { $rand = (rand(0, 1)) ? TRUE : FALSE; return $ctx->_hdlr_if ($args, $content, $ctx, $repeat, $rand); } //<mt:ifRand><mt:else></mt:if> ?>
30.
ブロックタグ(1) <?php //block.mtsampleblock.php function smarty_block_mtsampleblock ( $args,
$content, &$ctx, &$repeat ) { ! $from = $args['from']; ! $to = $args['to']; ! $glue = $args['glue']; ! if (! isset( $content ) ) { ! ! $vars =& $ctx->__stash['vars']; ! ! $ctx->stash( '__counter__', $from ); ! ! $ctx->__stash['vars']['__counter__'] = $from; ! } else {
31.
ブロックタグ(2) ! } else
{ ! ! $out = $ctx->stash('__out'); ! ! $counter = $ctx->__stash['vars'] ['__counter__'] + 1; ! ! if ( $glue && $content && $out ) { ! ! ! $content = $glue . $content; ! ! } else { ! ! ! $ctx->stash('__out', TRUE); ! ! } ! ! if ( $counter <= $to ) { ! ! ! $ctx->__stash['vars']['__counter__'] = $counter; ! ! ! $repeat = TRUE; ! ! } else { ! ! ! $repeat = FALSE; ! ! } ! ! return $content; ! }
32.
ブロックタグ(3) <mt:SampleBlock from="1" to="10"
glue=","> </mt:SampleBlock> ! 1,2,3,4,5,6,7,8,9,10
33.
DynamicMTML PHP Extension for
MT
34.
DynamicMTML • MTのダイナミックパブリッシングの拡張 • 静的ファイル内のMTMLをPHPによって実⾏行行 •
SmartyのテンプレートがMTタグで書ける! • ORマッパ、Worker、静的パブリッシュ,etc • Class MTPlugin(config.phpにまとめて書ける)
35.
DynamicMTML -‐‑‒ Demo -‐‑‒
36.
drwxrwxrwx 32 alfasado
admin 1088 3 10 15:17 . drwxr-xr-x 11 alfasado admin 374 3 8 13:40 .. -rw-rw-rw- 1 alfasado admin 935 2 27 16:08 .htaccess -rw-rw-rw- 1 alfasado admin 1223 2 27 16:08 .mtview.php -rw-rw-rw- 1 alfasado admin 24609 3 2 14:41 index.html
37.
38.
Example 1 <MTIfFacebookLoggedIn> <$MTFacebookGetProfile target="gender" setvar="__gender__"$> <MTIf
name="__gender__" eq="male"> 男性向けページ <MTElseIf name="__gender__" eq="famale"> ⼥女女性向けページ </MTif> </MTIfFacebookLoggedIn>
39.
Example 2 <MTSalesforceGetSObjects object=”Case” limit=”10”> <h2><$MTSalesforceObjectTitle$></h2> <p><$MTSalesforceObjectBody$></p> </MTSalesforceGetSObjects>
40.
Example 3 <MT:IfUserAgent wants="smartphone">
スマホでしょ? <MTElse> スマホじゃないでしょ? </MT:IfUserAgent> <MT:IfUserAgent wants="tablet"> タブレットでしょ? <MTElse> タブレットじゃないでしょ? </MT:IfUserAgent>
41.
Example 4 <MT:IfUserAgent wants="keitai"> <MT:IfUserAgent
like="DoCoMo"> DoCoMo? <MTElse> <MT:IfUserAgent like="UP.Browser"> AU? <MTElse> SoftBank? </MT:IfUserAgent>
42.
Example 5 <MT:IfLogin> <MTAuthorDisplayName escape="html">
さん、ようこそ <MTElse> ここから先はユーザー登録してください。 </MT:IfLogin>
43.
Example 6 <MT:IfIE lt=”7”> Internet
Exproler ver.7以上? <MTElse> Internet Exproler ver.6以下? </MT:IfIE>
44.
Example 7 $terms =
array(‘status’ => 2, ‘blog_id’ => 2, ‘class’=>‘entry’); $args = array(‘sort’ => ‘authored_on’, ‘direcrtion’ => ‘descend’, ‘limit’ => 10 ); $entries = $app->load(‘Entry’,$terms,$args); SELECT * FROM ‘mt_entry’ WHERE entry_status=2 AND entry_class=‘entry’ ORDER BY `mt_entry`.`entry_authored_on` DESC LIMIT 0,10
45.
Example 8 class ExamplePlugin
extends MTPlugin { 'config_settings' => array( // mt-config.cgi 'DynamicForceCompile' => array( 'default' => 0 ),), 'settings' => array( // PluginSettings 'example_setting' => array( 'default' => 1 ),), 'tags' => array( // Template Tags 'block' => array('dynamicmtml' => 'dynamicmtml'), 'function' => array('authorlanguage' => 'authorlanguage'), 'modifier' => array('trimwhitespace' => 'trimwhitespace'),), 'task_workers' => array( // Workers 'mt_rebuild' => array('label' => 'Publishes content.', 'code' => 'workers_mt_rebuild', 'class' => 'MT::Worker::Publish',),), 'callbacks' => array( // Callbacks 'build_page' => 'filter_build_page',),); mt_dir/plugins/EsamplePlugin/php/config.php
46.
47.
<ul> <?php $myposts = get_posts('posts_per_page=10'); foreach($myposts as
$post) : setup_postdata($post); ?> <li><a href="<?php the_permalink(); ?>"> <?php the_title(); ?></a></li> <?php endforeach; ?> </ul> Template for WordPress
48.
<ul> <MT:Entries limit="10"> <li><a href="<MT:EntryPermalink>"> <MT:EntryTitle></a></li> </MT:Entries> </ul> Template
for Movable Type
49.
<ul> <MT:WP:Entries limit="10"> <li><a href="<MT:WP:EntryPermalink>"> <MT:WP:EntryTitle></a></li> </MT:WP:Entries> </ul> Using
DynamicMTML
50.
51.
<!-- File: /app/controllers/posts_controller.php
--> <?php class PostsController extends AppController { var $name = 'Posts'; function index() { $this->set('posts', $this->Post->find('all')); } function view($id = null) { $this->Post->id = $id; $this->set('post', $this->Post->read()); } } ?> Original(Controller)
52.
<!-- File: /app/views/posts/index.ctp
--> <h1>Blog posts</h1> <table> <tr> <th>Id</th><th>Title</th><th>Created</th> </tr> <?php foreach ($posts as $post): ?> <tr> <td><?php echo $post['Post']['id']; ?></td> <td> <?php echo $html->link($post['Post']['title'], array('controller' => 'posts', 'action' => 'view', $post['Post']['id'])); ?> </td> <td><?php echo $post['Post']['created']; ? ></td> </tr> <?php endforeach; ?> </table> Original(View)
53.
<!-- File: /app/controllers/posts_controller.php
--> <?php class PostsController extends AppController { var $name = 'Posts'; function index() { $ctx = $this->ctx; $ctx->__stash['vars']['page_title'] = 'Blog posts'; $ctx->stash('Post', $this->Post->find('all')); } function view( $id = null ) { $ctx = $this->ctx; $this->Post->id = $id; $ctx->stash('Post', $this->Post->read()); } } ?> DynamicMTML(Controller)
54.
<!-- File: /app/views/posts/index.ctp
--> <h1><mt:var name="page_title" escape="html"></h1> <mt:cake:loop model="Post"> <mt:if name="__first__"> <table> <tr> <th>Id</th><th>Title</th><th>Created</th> </tr> </mt:if> <tr> <td><mt:var name="id"></td> <td> <a href=".view/<mt:var name="id">"> <mt:var name="title" escape="html"></a> </td> <td><mt:var name="created"></td> </tr> <mt:if name="__last__"> </table> </mt:if> </mt:cake:loop> DynamicMTML(View)
55.
まとめ • MVCきれいに分けられるよ分業できるよ • MT実はPHPで拡張できるよ便便利利だよ •
GPLライセンス版もあるよ • アルファサードではPHP/Perlエンジニア募集中 • アルファサードではスマホアプリエンジニア募集中
56.
Thank you!