71
Movable Type 6 を使ったサイト構築 & MTAppjQueryでのカスタマイズ例 柳谷真志(@mersy)奥脇知宏(@tinybeans)

MTCafe sapporo#4

  • Upload
    bitpart

  • View
    1.669

  • Download
    0

Embed Size (px)

DESCRIPTION

2013.10.6のMTCafe Sapporoで使用したスライドです

Citation preview

Page 1: MTCafe sapporo#4

Movable Type 6を使ったサイト構築

&MTAppjQueryでのカスタマイズ例

柳谷真志(@mersy)奥脇知宏(@tinybeans)

Page 2: MTCafe sapporo#4

bit part 紹介

Page 3: MTCafe sapporo#4

bit part 紹介

•柳谷真志(@mersy)、奥脇知宏(@tinybeans)

Page 4: MTCafe sapporo#4

bit part 紹介

•柳谷真志(@mersy)、奥脇知宏(@tinybeans)

•2013年1月結成のユニット

Page 5: MTCafe sapporo#4

bit part 紹介

•柳谷真志(@mersy)、奥脇知宏(@tinybeans)

•2013年1月結成のユニット

•8月「bit part 合同会社」設立

Page 6: MTCafe sapporo#4

bit part 紹介 / mersy

•柳谷真志やなぎやまさし

• linker、アイペアーズ(株)

•木曜から札幌きてます!

Page 7: MTCafe sapporo#4

bit part 紹介 / mersy

Page 8: MTCafe sapporo#4

bit part 紹介 / tinybeans

•奥脇知宏おくわきともひろ

•かたつむりくんのWWW

•Movable Type 5.1 プロの現場の仕事術(毎日コミュニケーションズ)

Page 9: MTCafe sapporo#4

bit part 紹介 / plugins

•flexibleSearch •MTAppjQuery

•MTML Completions

• compress modifieretc...

Page 10: MTCafe sapporo#4

bit part 紹介 / plugins

•flexibleSearch •MTAppjQuery

•MTML Completions

• compress modifieretc...

ドキュメント販売中!!http://bitpart.thebase.in/

Page 11: MTCafe sapporo#4

DEMOサイトの構成

Page 12: MTCafe sapporo#4

DEMOサイトの構成 < デザインについて >

Page 13: MTCafe sapporo#4

•Six Apart のごはんレシピhttp://makanai.sixapart.jp/

DEMOサイトの構成

Page 14: MTCafe sapporo#4

DEMOサイトの構成 < デザインについて >

Page 15: MTCafe sapporo#4

DEMOサイトの構成 < デザインについて >

Page 16: MTCafe sapporo#4

•1ウェブサイト

•ウェブサイトで記事を管理

•カテゴリ、タグによる分類

DEMOサイトの構成< MTの概要 >

Page 17: MTCafe sapporo#4

• index_top:トップページ

•search:検索ページ

•admin_js:MTAppjQuery用user.js

• load_js:追加読み込み

DEMOサイトの構成 < インデックステンプレート >

Page 18: MTCafe sapporo#4

•archive_category:カテゴリページ

•archive_entry:個別記事ページ

DEMOサイトの構成 < アーカイブテンプレート >

Page 19: MTCafe sapporo#4

• config

• mod_category_list

• mod_googletagmanager

• mod_header

• mod_header_top

• mod_html_head

• mod_script

• mod_search

• mod_tag_list

DEMOサイトの構成 < テンプレートモジュール >

Page 20: MTCafe sapporo#4

•追加読み込み

•検索

DEMOサイトの構成 < DataAPI使ってる部分 >

Page 21: MTCafe sapporo#4

•トップページのコードhttps://gist.github.com/mersy/2676be477cd4c3c4798f

DEMOサイトの構成 < DataAPI で追加読み込み >

Page 24: MTCafe sapporo#4

• load.js で Data APIオブジェクトを作成https://gist.github.com/mersy/3486116e0d5685c09328

DEMOサイトの構成 < DataAPI で追加読み込み >

Page 25: MTCafe sapporo#4

•追加読み込み部分のコードhttps://gist.github.com/mersy/3af8f8c4aa7904e3f5c0

DEMOサイトの構成 < DataAPI で追加読み込み >

Page 26: MTCafe sapporo#4

•getApiEntries (1, params, "");⇒api.listEntriesとその他の処理をまとめた関数

•api.listEntries(siteId, params, function(response) {});⇒Movable Type Data API SDK library で提供されている記事の一覧を取得する関数

DEMOサイトの構成 < DataAPI で追加読み込み >

Page 27: MTCafe sapporo#4

•getApiEntries()https://gist.github.com/mersy/eb1188fc1477c1f5056d

DEMOサイトの構成 < DataAPI で追加読み込み >

Page 30: MTCafe sapporo#4

DEMOサイトの構成

< DataAPI で検索 >

Page 31: MTCafe sapporo#4

DEMOサイトの構成 < DataAPI で検索 >

Page 32: MTCafe sapporo#4

•検索結果URL例

•http://makanai.sixapart.jp/search.html?text=肉&category=肉系ごはん&tag=豚肉

•検索の制限事項

•キーワードのみ複数可、他は未対応

DEMOサイトの構成 < DataAPI で検索 >

Page 33: MTCafe sapporo#4

DEMOサイトの構成 < DataAPI で検索 >

<mt:Include module="mod_html_head"><body id="topPage" class="headerBg"><mt:Include module="mod_googletagmanager"> <div class="wrapper"><mt:Include module="mod_header"><mt:Include module="mod_search">

<h3 id="pageTitle" class="h3_title">検索結果</h3>

<div id="entries" class="listWrapper"> <div id="resultMsg" class="detailDescription"></div> <div id="loadingImg" class="loding" style="display:none;"><img src="<mt:Var name="website_url">common/images/common/loding.gif" alt=""></div> </div>

</div> <input type="hidden" name="searchEnable" value="true"><mt:Include module="mod_script" data_api="1" top="1"></body>

Page 35: MTCafe sapporo#4

•getApiEntries (1, params, pageTitle.join(", "));部分で渡す

DEMOサイトの構成 < DataAPI で検索 >

Page 36: MTCafe sapporo#4

•DataAPIを使う=JSONが返ってくる

•これまでのMTMLの書き方とは発想を変える必要

•JavaScript大事

DEMOサイトの構成

Page 37: MTCafe sapporo#4

MTAppjQueryを使った管理画面のカスタマイズ

Page 38: MTCafe sapporo#4

•材料のカスタムフィールドで、MTAppLineBreakField

MTAppjQuery < MTAppLineBreakField >

Page 39: MTCafe sapporo#4

MTAppjQuery < MTAppLineBreakField >

Page 40: MTCafe sapporo#4

•カスタムフィールド

•システムオブジェクト:記事

•名前:材料

•種類:テキスト(複数行)

•basename:txtingredient

MTAppjQuery < MTAppLineBreakField >

Page 41: MTCafe sapporo#4

if (mtappVars.screen_id === "edit-entry") { $("#customfield_txtingredient").MTAppLineBreakField();}

MTAppjQuery < MTAppLineBreakField >

Page 42: MTCafe sapporo#4

<mt:If tag="txtingredient"><h4>材料</h4><mt:txtingredient split="\n" setvar="ingredient"><mt:SetVar name="ul_cond" value="close"><mt:Loop name="ingredient"><mt:If name="__value__" like="^・"><mt:If name="ul_cond" eq="close"><ul class="detailUL"></mt:If><li> <mt:Var name="__value__" regex_replace="/^・/",""></li><mt:SetVar name="ul_cond" value="open"><mt:Else><mt:If name="ul_cond" eq="open"></ul></mt:If><p class="mb5"><mt:Var name="__value__"></p></mt:If></mt:Loop><mt:If name="ul_cond" eq="open"></ul></mt:If></mt:If>

MTAppjQuery < MTAppLineBreakField >

Page 43: MTCafe sapporo#4

•HTMLがそんなにおかしくならない

<p class="mb5">新タマネギ</p><p class="mb5">さつま揚げ</p><p class="mb5">塩</p>

MTAppjQuery < MTAppLineBreakField >

Page 44: MTCafe sapporo#4

•テンプレートの最終編集者が違う場合にアラート

MTAppjQuery < MTAppDialogMsg >

Page 45: MTCafe sapporo#4

MTAppjQuery < MTAppDialogMsg >

Page 46: MTCafe sapporo#4

•テンプレートの最終編集者が違う場合にアラート→ローカルで編集しているテンプレートが最新ではない=先祖返りを防げる

MTAppjQuery < MTAppDialogMsg >

Page 47: MTCafe sapporo#4

if (mtappVars.screen_id.indexOf("edit-template") > -1) { if (mtappVars.author_name !== mtappVars.modified_by) { $.MTAppDialogMsg({ title: 'テンプレート編集の警告', content: '<span style="color:red;font-weight:bold;">★★★★★★★★★★★★★★★★★★★★<br><br>最終更新者はあなたではありません!!<br><br>★★★★★★★★★★★★★★★★★★★★</span>', width: 'auto', height: 'auto', modal: true, hideEffect: '' }); }}

MTAppjQuery < MTAppDialogMsg >

Page 48: MTCafe sapporo#4

•使いやすいプルダウンメニュー

MTAppjQuery < MTAppDynamicSelect >

Page 49: MTCafe sapporo#4

MTAppjQuery < MTAppDynamicSelect >

Page 50: MTCafe sapporo#4

MTAppjQuery < MTAppDynamicSelect >

Page 51: MTCafe sapporo#4

<mt:EntryPrimaryCategory><p class="listCategory<mt:If tag="CategoryColor"> <mt:CategoryColor></mt:If>"><a href="/<mt:CategoryBasename />/"><mt:CategoryLabel></a></p></mt:EntryPrimaryCategory>

MTAppjQuery < MTAppDynamicSelect >

Page 52: MTCafe sapporo#4

•カスタムフィールド

•システムオブジェクト:カテゴリ

•名前:カテゴリカラー

•種類:テキスト

•basename:categorycolor

MTAppjQuery < MTAppDynamicSelect >

Page 53: MTCafe sapporo#4

•表示上のラベルと実際のデータを別に持たせることができる

MTAppjQuery < MTAppDynamicSelect >

Page 54: MTCafe sapporo#4

if (mtappVars.screen_id === "edit-category") { $("#customfield_categorycolor").MTAppDynamicSelect({ text: '0|選択してください,cat1|水色,cat2|黄緑,cat3|オレンジ,cat4|ピンク,cat5|紫,cat6|青,cat7|緑,cat8|紺', separateMode: true });}

MTAppjQuery < MTAppDynamicSelect >

Page 55: MTCafe sapporo#4

•compress モディファイアでコードをスッキリ

MTAppjQuery < compress モディファイア >

Page 56: MTCafe sapporo#4

•compress="1" => 空行が削除

•compress="2"=> 空行と空白が削除

•compress="3" => 空行、空白文字、改行が削除

MTAppjQuery < compress モディファイア >

Page 57: MTCafe sapporo#4

MTML例<mt:Unless compress="2"><ul> <li>foo1</li> <li>foo2</li> <li>foo3</li></ul></mt:Unless>

HTML<ul><li>foo1</li><li>foo2</li><li>foo3</li></ul>

MTAppjQuery < compress モディファイア >

Page 58: MTCafe sapporo#4

•その他の機能はドキュメントで!

MTAppjQuery

Page 59: MTCafe sapporo#4

制作秘話

Page 60: MTCafe sapporo#4

•DataAPIの機能がたりなかったり、作業中に開発・実装されていたり

制作秘話

Page 61: MTCafe sapporo#4

•DataAPIでAssetはつかえるけど、サムネイルのリンクはとれない!?→RC2では解決済み!!

制作秘話

Page 62: MTCafe sapporo#4

•カテゴリの順番がよくわからない?メインカテゴリが最後!?⇒リリースまでには修正されるらしい。

制作秘話

Page 63: MTCafe sapporo#4

MTEZ すげー!!

Page 64: MTCafe sapporo#4

•MTEZはやい!Movable Typeは再構築が遅いとか言わせない!

制作秘話

Page 65: MTCafe sapporo#4

•MTEZのプラグイン認識のタイミングがちょっと分からない??

•→MTAppjQuery のuser.jsの反映が即時というわけでもなさそう。。。

•→無効にしたらすぐ認識した?

制作秘話

Page 66: MTCafe sapporo#4

•お値段がね・・・・

詳しくは=> http://www.sixapart.jp/movabletype/ez/「【無料】WEBサイト引越しキャンペーン」をやってるみたいです。。。

制作秘話

Page 67: MTCafe sapporo#4

本日のまとめ

•Beta 版で構築するってことはそういうこと

•Data API でやれることが広がる!

•でも Data API は JavaScript がががが。。。

•MTAppjQuery でちょっとだけ使いやすく

•MTEZすげー

Page 68: MTCafe sapporo#4

One more thing

Page 69: MTCafe sapporo#4

MT6の書籍がでます!!

Page 70: MTCafe sapporo#4

本日のまとめ

•MovableType 6.0プロの現場の仕事術

•11月発売予定(原稿ガンバリマス!!)

•マイナビ刊

•Data API 解説

•DEMOサイトの詳細解説

Page 71: MTCafe sapporo#4

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

Update bit part, everyday!!

MT::Lover::bitpart