Movable Type PHP
API
柳下 剛利
Movable Type は
今年の10月で12周年
データとロジックが分離
パブリッシングシステム
PHP API の登場は
3.1 (2004.10)
ダイナミックパブリッシング
• ブラウザからのリクエストの際に
HTML を出力する機能
• 再構築負荷の軽減
アクセス頻度の低いページに利用
ダイナミックパブリッシングの処理 (1)
• 404 エラーをフックして処理を実行
DirectoryIndex index.php index.html index.htm /5.2.7/01/02/mtview.php
RewriteEng...
ダイナミックパブリッシングの処理 (2)
• mtview.php
• リクエストからテンプレート情報取得
• Smarty を利用して表示
<?php
include('/Users/taketoshi/Sites/5.2.7/mt/php/...
ダイナミックパブリッシングの処理 (3)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml...
ダイナミックパブリッシングの処理 (4)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml...
ダイナミックパブリッシングの処理 (5)
<?php
function smarty_function_mtblogname($args, &$ctx) {
// status: complete
// parameters: none
$bl...
PHP からの利用<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="<mt:PublishCharset />">
<title>#02</title>
</head>
<body>
...
Movable Typa PHP API
• PHP から MT オブジェクトへのアクセス
• get_instance 後にクラスを require
• オブジェクトを取得するだけで OK
• テンプレートデータを利用するために
Smarty...
Upcoming SlideShare
Loading in …5
×

Movable Type PHP API について - MTCafe Saitama 2013

2,039 views

Published on

2013-06-29 に開催された MTCafe Saitama 2013 で発表

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,039
On SlideShare
0
From Embeds
0
Number of Embeds
379
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Movable Type PHP API について - MTCafe Saitama 2013

  1. 1. Movable Type PHP API 柳下 剛利
  2. 2. Movable Type は 今年の10月で12周年
  3. 3. データとロジックが分離 パブリッシングシステム
  4. 4. PHP API の登場は 3.1 (2004.10)
  5. 5. ダイナミックパブリッシング • ブラウザからのリクエストの際に HTML を出力する機能 • 再構築負荷の軽減 アクセス頻度の低いページに利用
  6. 6. ダイナミックパブリッシングの処理 (1) • 404 エラーをフックして処理を実行 DirectoryIndex index.php index.html index.htm /5.2.7/01/02/mtview.php RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)(?.*)?$ /5.2.7/01/02/mtview.php$2 [L,QSA]
  7. 7. ダイナミックパブリッシングの処理 (2) • mtview.php • リクエストからテンプレート情報取得 • Smarty を利用して表示 <?php include('/Users/taketoshi/Sites/5.2.7/mt/php/mt.php'); $mt = MT::get_instance(3, '/Users/taketoshi/Sites/5.2.7/mt/mt-config.cgi'); $mt->view(); ?>
  8. 8. ダイナミックパブリッシングの処理 (3) <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" id="sixapart-standard"> <head> <$mt:Include module="HTMLヘッダー"$> <title><$mt:BlogName encode_html="1"$>: <$mt:ArchiveTitle$>アーカイブ</ title>
  9. 9. ダイナミックパブリッシングの処理 (4) <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" id="sixapart-standard"> <head> <?php $this->_tag_stack[] = array("mtinclude", array ( 'module' => 'HTMLヘッダー', )); echo multiblog_MTInclude(array('module' => "HTMLヘッダー"), $this); array_pop($this->_tag_stack); ?> <title><?php $this->_tag_stack[] = array("mtblogname", array ( 'encode_html' => '1', )); echo ((is_array($_tmp=smarty_function_mtblogname(array(), $this))) ? $this->_run_mod_handler('encode_html', true, $_tmp, '1') : smarty_modifier_encode_html($_tmp, '1')); array_pop($this->_tag_stack); ?> : <?php $this->_tag_stack[] = array("mtarchivetitle", array ( )); echo smarty_function_mtarchivetitle(array(), $this); array_pop($this- >_tag_stack); ?> アーカイブ</title>
  10. 10. ダイナミックパブリッシングの処理 (5) <?php function smarty_function_mtblogname($args, &$ctx) { // status: complete // parameters: none $blog = $ctx->stash('blog'); return $blog->blog_name; } ?>
  11. 11. PHP からの利用<!DOCTYPE html> <html lang="ja"> <head> <meta charset="<mt:PublishCharset />"> <title>#02</title> </head> <body> <p>Display Name of author_id = 1</p> <?php $MT_PHP = '<mt:CGIServerPath />/php/mt.php'; $MT_CFG = '<mt:ConfigFile />'; include( $MT_PHP ); $mt = MT::get_instance(); require_once('<mt:CGIServerPath />/php/lib/class.mt_author.php'); $author = new Author; if ( $author->Load('author_id=1') ) { echo " <p>Display Name: ".$author->nickname."</p>"; } ?> </body> </html>
  12. 12. Movable Typa PHP API • PHP から MT オブジェクトへのアクセス • get_instance 後にクラスを require • オブジェクトを取得するだけで OK • テンプレートデータを利用するために Smarty を利用して出力

×