• 検索結果がありません。

DynamicMTML1109

N/A
N/A
Protected

Academic year: 2021

シェア "DynamicMTML1109"

Copied!
44
0
0

読み込み中.... (全文を見る)

全文

(1)

マルチデバイス対応

の新しいアプローチ

Introducing DynamicMTML

2011.11.9

(2)

スマートフォン対応

(3)

スクリーンサイズだけ

考えていればいいの?

(4)
(5)
(6)
(7)
(8)
(9)

考えなければならないこと++

PCとスマホだけ? タブレットは?

PCはモダンブラウザだけ?

IE6/7は? ガラケーは?

CSS Media Queries / JQuery Mobile?

回線が遅い、繋がりにくい時

N700系のインターネット接続サービス

(10)

Screen size => CSS Media Queries?

User Experiense => JQuery Mobile?

Source / Media Optimization => ???

(11)

HTML

CSS

JavaScript

JQuery

PHP

Perl

Ruby

Java

Client Side

Server Side

(12)
(13)

MTML

(14)

MTML=Movable Type Markup Language

<MTEntries lastn= 10  sort_order= descend >

<MTIf name= __first__ >

<ul>

</MTIf>

    <li>

        <a href=

<MTEntryPermalink>

>

      <MTEntryTitle escape= html >

        </a>

    </li>

<MTIf name= __last__ >

</ul>

</MTIf>

</MTEntries>

(15)

MTML=Movable Type Markup Language

MTML=Viewを担当するもの

MTIf MTElse MTLoopなど、実はロジック

も書ける

テンプレートにプログラムは書けない(完全

に分離している)=>デザイナに敷居が低い

<MTFoo> でも <mt:foo> でも <mtfoo /

> でも <$MTFoo$> でも良い(緩い)

(16)
(17)
(18)

Movable Type = PHP

2004年、MT3.1 でPHPによるダイナミックパ

ブリッシング

mod_rerwiteを使ってmtview.phpが処理

実はMTタグはSmartyのテンプレートに変換さ

れる(prefilter.mt_to_smarty.php)

MTのPHPはPerlで書かれたMTのタグをsmarty

のタグにコンバートしたもの

(19)

DynamicMTML

(20)
(21)
(22)

静的ファイルに記述したMTML

を解釈して実行する技術

サーバーサイド言語として

MTタグを使えるもの

(23)

HTML

CSS

JavaScript

JQuery

PHP

Perl

Ruby

Java

Client Side

Server Side

MTML(MTタグ)

(24)

<MT:IfUserAgent wants="pc">

    PCでしょ?

<MTElse>

    PCじゃないでしょ?

(25)

<MT:IfUserAgent wants="smartphone">

    スマホでしょ?

<MTElse>

    スマホじゃないでしょ?

(26)

<MT:IfUserAgent wants="tablet">

    タブレットでしょ?

<MTElse>

    タブレットじゃないでしょ?

(27)

<MT:IfUserAgent wants="keitai">

    ガラケーでしょ?

<MTElse>

    ガラケーじゃないでしょ?

(28)

<MT:IfUserAgent wants="keitai">

<MT:IfUserAgent like="DoCoMo">

    DoCoMo? 

<MTElse>

<MT:IfUserAgent like="UP.Browser">

    AU?

<MTElse>

    SoftBank?

</MT:IfUserAgent>

(29)

<MT:IfUserAgent like="Safari">

    Safariでしょ?

<MTElse>

    Safariじゃないでしょ?

(30)

スマートフォンとは 

直接関係ないですが...

(31)

<MT:IfLogin>

<MTAuthorDisplayName escape="html">

さん、ようこそ

<MTElse>

ユーザー登録してください。

</MT:IfLogin>

(32)

<MT:IfIE lt= 7 >

Internet Exproler ver.7以上?

<MTElse>

Internet Exproler ver.6以下?

(33)

<mt:KeitaiContent start_tag="h" size="300" 

str2keitai="1" convertthumbnail="100,240" 

z2h="1"> 

    <mt:KeitaiContentBody> 

        <$mt:EntryBody$> 

        <$mt:EntryMore$> 

    </mt:KeitaiContentBody> 

</mt:KeitaiContent>

(34)

start_tag="h" => hタグ(見出しでページ分割)

size="300"      => byte数

str2keitai= 1  => <script>タグ等を削除

convert2thumbnail="100,240"

      => 100pxの画像から240px

      の画像へリンク(変換)

(35)

    <mt:KeitaiPageCount setvar="page_count"> 

    <mt:if name="page_count" gt="1">[ 

        <mt:ifKeitaiPagePrev> 

      <a href="<$mt:KeitaiPagePrevLink$>">PREV</a> 

        </mt:ifKeitaiPagePrev> 

        <mt:KeitaiContentPageList> 

      <mt:IfKeitaiPageCurrent> 

      <strong><$mt:KeitaiPageNumber$></strong> | 

      <mtelse> 

      <a href="<$mt:KeitaiPageLink$>"><

$mt:KeitaiPageNumber$></a> | 

      </mt:IfKeitaiPageCurrent> 

        </mt:KeitaiContentPageList> 

        <mt:ifKeitaiPageNext> 

      <a href="<$mt:KeitaiPageNextLink$>">NEXT</a> 

        </mt:ifKeitaiPageNext>] 

    </mt:if> 

(36)

start_tag="h" => hタグ(見出しでページ分割)

size="300"      => byte数

str2keitai= 1  => <script>タグ等を削除

convert2thumbnail="100,240"

      => 100pxの画像から240px

      の画像へリンク(変換)

trimwhitespace="1" => 空行や空白文字を削除

(37)

<mt:dynamicmtml> <mt:archivetype setvar="archive_type"> <mt:if name="archive_type" eq="Individual"> <$mt:entryid setvar="me"$> </mt:if> <mt:if name="archive_type" eq="Page"> <$mt:pageid setvar="me"$> </mt:if> <$mt:setvar name="entries_max" value="10"$> <$mt:setvar name="entries_counter" value="0"$> <mt:referralkeywords trimwhitespace="1"> <mt:if name="entries_counter" lt="$entries_max">     <mt:searchentries target="text" query="$keyword" unique="1"         lastn="$entries_max" not_entry_id="$me" class="*"         highlightingsearchword="1">         <mt:unless name="entries_counter"> <div class="related-entry widget">     <h3 class="widget-header">Your serarch keyword         '<$mt:referralkeyword escape="html"$>'?     </h3>     <ul>         </mt:unless>         <mt:if name="entries_counter" lt="$entries_max">         <li><a href="<$mt:entrypermalink$>">       <$mt:entrytitle escape="html"$>       </a>         </li>         </mt:if>         <$mt:setvar name="entries_counter" value="1" op="+"$>     </mt:searchentries> </mt:if> </mt:referralkeywords>         <mt:if name="entries_counter"></ul> </div> </mt:if> </mt:dynamicmtml>

(38)

<MTRefferalKeywords>

       => 検索エンジンのキーワード

<mt:searchentries target="text"

       query="$keyword" unique="1"

       lastn="$entries_max"

       not_entry_id="$me" class="*"

       highlightingsearchword="1">

(39)

<mt:dynamicmtml>

<mt:IfUserHasPermission permission="edit_all_posts">

    <$mt:setvar name="can_post" value="1"$>

<mt:Else>

    <mt:IfUserHasPermission permission="publish_post">

        <$mt:entryAuthorId setvar="entry_author_id"$>

        <$mt:AuthorId setvar="client_author_id"$>

        <mt:if name="entry_author_id" eq="client_author_id">

       <$mt:setvar name="can_post" value="1"$> 

        </mt:if>

    </mt:IfUserHasPermission>

</mt:Else>

</mt:IfUserHasPermission>

<mt:if name="can_post">

    <p>

        <a href="<$mt:CGIPath$>

        <$mt:

      AdminScript$>?__mode=view&amp;_type=entry&amp;id=<$mt:

      entryid$>&amp;blog_id=<$mt:blogid$>">Edit

        </a>

    </p>

</mt:if>

</mt:dynamicmtml>

(40)
(41)

<h1><MT:Entrytitle></h1>

...

<MTDynamicMTML>

<MT:IfUserAgent wants="smartphone">

    スマホでしょ?

<MTElse>

    スマホじゃないでしょ?

</MT:IfUserAgent>

</MTDynamicMTML>

...

2段階再構築

ブロック内はビルドされず

ファイルの中に出力される

閲覧時に状況(UA)に

よって分岐処理される

(42)

<h1><MT:Entrytitle></h1>

...

<MTML tag= IfUserAgent   

params=’wants="smartphone"’>

    スマホでしょ?

<MTML tag= MTElse >

    スマホじゃないでしょ?

<MTML tag= /MT:IfUserAgent >

...

2段階再構築

閲覧時に状況(UA)に

よって分岐処理される

前ページと同じ処理

(43)

事例

Android/iPhoneサイトのアプリのサーバー

サイド

キャリア公式サイトでのユーザー属性での分

岐表示

外部APIとの連携(例:MTIfTwitterLogin)

CRM(例:Synagy!)との連携

エリアターゲティングとの連携

(44)

参照

関連したドキュメント

マルタ ニュージーランド ギリシャ アイスランド 英国 オランダ スウェーデン ドイツ スロバキア ルクセンブルク フィンランド キプロス ベルギー イスラエル

Eはサンカクホングウシダと交雑が示唆されるけれども,シンエダウチホングウシダの

1-1 睡眠習慣データの基礎集計 ……… p.4-p.9 1-2 学習習慣データの基礎集計 ……… p.10-p.12 1-3 デジタル機器の活用習慣データの基礎集計………

の知的財産権について、本書により、明示、黙示、禁反言、またはその他によるかを問わず、いかな るライセンスも付与されないものとします。Samsung は、当該製品に関する

子どもが、例えば、あるものを作りたい、という願いを形成し実現しようとする。子どもは、そ

自閉症の人達は、「~かもしれ ない 」という予測を立てて行動 することが難しく、これから起 こる事も予測出来ず 不安で混乱

 親権者等の同意に関して COPPA 及び COPPA 規 則が定めるこうした仕組みに対しては、現実的に機

◯また、家庭で虐待を受けている子どものみならず、貧困家庭の子ども、障害のある子どもや医療的ケアを必