MT-TOKYO11 LT
Transcript of MT-TOKYO11 LT
• 今日の LT の内容は先日ブログに書いた内容です。MovableType.net で flexibleSearch を使ってみる | bit
part bloghttp://bit-part.net/blog/2015/02/movabletypenet-flexiblesearch.html
• 既にブログ記事読んだ人はビールでも飲んでノンビリしててください。
bit part 紹介
•奥脇知宏(@tinybeans)、柳谷真志(@mersy)•Movable Type、Movable Type Cloud、PowerCMSを利用した構築がメイン業務
• Six Apart の ProNet、Alfasado の PowerCMS Partner Pro
bit part 紹介 / tinybeans•奥脇知宏(おくわきともひろ)•MTAppjQuery等のプラグイン開発、MTML、その他フロントエンドやバックエンド少々
•かたつむりくんのWWW•Movable Type 5.1 プロの現場の仕事術
bit part 紹介
• http://bit-part.net•Movable Type 6 本格活用ガイドブック2013年11月30日発売
flexibleSearch
• https://github.com/tinybeans/jq-plugin-flexibleSearch
• JSON を JavaScript で検索するjQuery プラグイン
• Movable Type 6 だと Data API との組み合わせでも利用可能
• S3 など配信するサイトで使う検索としても利用可能
MovableType.net meets flexibleSearch
• 検索機能、無いなら付けてしまおう
• MovableType.net meets flexibleSearch
• と思ったら、Mediaのテーマには Google Custom
Search が付いてますね、、、、
• demo
MovableType.net meets flexibleSearch
MovableType.net meets flexibleSearch
• プラグインをダウンロード• 必要なファイルを丸っとアップロード• 検索対象にしたいデータを含めたJSONを用意する
• 検索フォームの実装• 検索結果を表示するテンプレートの調整
https://gist.github.com/mersy/b199135d73ae6fc8f481
• インデックステンプレートでJSON を用意する
MovableType.net meets flexibleSearch
{"items":[<mt:entries lastn="0">{"title":"<mt:entryTitle>","datetime":"<$mt:EntryDate format="%Y-%m-%d"$>","dateyear":"<$mt:EntryDate format="%Y"$>","date":"<$mt:EntryDate format="%b月%e日"$>",
<mt:EntryCategories type="primary">"category":"<$mt:CategoryLabel$>","categoryarchivelink":"<$mt:CategoryArchiveLink$>",</mt:EntryCategories>"url":"<mt:entryPermalink>","excerpt":"<mt:EntryExcerpt remove_html="1" strip_linefeeds="1">","body":"<mt:entryBody remove_html="1" strip_linefeeds="1">"}<mt:unless name="__last__">,</mt:unless></mt:entries>]}
• 検索フォームの用意テンプレートモジュール「header」に追加
MovableType.net meets flexibleSearch
<mt:If name="google"><li class="googleplus"><a href="<$mt:GetVar name="google"$>"><i class="fa fa-google"></i></a></li></mt:If></ul><div style="float: right; padding: 5px 0px;"><form style="padding: 5px 0px;" action="/search.html" method="GET" class="form-inline"><input type="hidden" name="offset" value="0"><input type="hidden" name="limit" value="5"><input name="search" class="form-control" type="text" placeholder="キーワード検索"
style="width:12em"><input type="submit" class="btn btn-primary" value="検索"></
form></div><ul class="nav navbar-nav"><li><a href="<$mt:BlogRelativeURL$>">TOP</a></li>
• 検索結果を表示するテンプレートを追加インデックステンプレート「ニュース TOP」の内容をコピペjsを読み込ませる
MovableType.net meets flexibleSearch
<$mt:Include module="common_bottom_js"$><script src="/flexiblesearch/mustache.js"></script><script src="/flexiblesearch/flexibleSearch.js"></script><script src="/flexiblesearch/flexibleSearch-config.js"></script></body></html>
• 結果表示部分の修正MovableType.net meets flexibleSearch
<div class="col-sm-9" id="blog-primary-content"><div id="entry-list"><$mt:Include module="entry-list"$></div><div class="holder"></div>
↓↓ ↓↓ ↓↓
<div class="col-sm-9" id="blog-primary-content"><div id="entry-list"><div id="fs-result"></div></div><div class="holder"></div>
(function ($) { $("#search").flexibleSearch({ searchDataPath: "/search.json", searchDataPathPreload: "/search.json", searchFormCreation: false, loadingImgPath: "/flexiblesearch/loading.gif", resultItemTmpl: [ '{{#items}}', '<article class="entry clearfix">', '<div class="entry-meta"><time datetime="{{&datetime}}"><span class="year">{{&dateyear}}年</span><span
class="monthday">{{&date}}</span></time><a href="{{&categoryarchivelink}}" class="category">{{&category}}</a></div>', '<h1 class="entrytitle"><a href="{{&url}}">{{&title}}</a></h1>', '<div class="entry-excerpt">{{&excerpt}}</div>', '<div class="pagemore"><a href="{{&url}}" class="btn btn-primary">この記事の詳細を見る</a></div>',
'</article>', '{{/items}}' ].join(""), paginateTmpl: [ '<div id="fs-paginate">', '<ul class="pagination">', '{{#page}}', '<li{{#current}} class="active"{{/current}}><a href="#" title="{{pageNumber}}">{{pageNumber}}</a></li>', '{{/page}}', '</ul>', '</div>' ].join(""), dummy: false });})(jQuery);
• demo
MovableType.net meets flexibleSearch