はじめに
MovableTypeで個人的によく使う。MTタグを情報共有としておぼえがきで残しておくことにした。
MTタグ集
MovableTypeで設定した「サイトURL」使う場合
これはテストサイト、本番サイトの切り替えで役に立つので、メニューなどでも使用すると便利
ブログの場合
<script src="<$mt:BlogURL encode_html="1"$>common/js/jquery-1.12.4.min.js"></script>
ウェブサイトの場合
<script src="<$mt:WebsiteURL encode_xml="1"$>common/js/jquery-1.12.4.min.js"></script>
MovableType 空行削除する方法
これは、MovableTypeでMTタグを使用した場合に空白行がでてしまうので、ソースを見られた場合の見栄えとMovableTypeで作られているとわからないようにできますw。
デザインのテンプレートの先頭に記載して。最後にで括っておくことで幸せになれます。標準でこれをやってくれると助かるのですが・・
<mt:Unless name="blanklinedel" regex_replace="/^[\s\t]*\n/gm","">
HTMLやMTタグ
</mt:Unless>
ウェブページでディレクトリごとでデザインを切り替える
デザインテンプレートのウェブページでディレクトリごとでデザインを切り替えることで、ヘッダー部分、メニューなど、個別で対応ができます。
クラス名にこのディレクトリ名で統一することでディレクトリ毎でclass分けも可能です。
FolderLabelは日本語(名前)のほうなので、ディレクトリ名とは、違います。新規登録では、ディレクトリ名しか登録しないので間違えないように・・
インデックステンプレート、ブログテンプレートでは使用できないので工夫が必要です。特にテンプレートモジュールで共有する場合など
<mt:If name="page_archive">
<mt:setvarblock name="page_folder"><mt:PageFolder><$mt:FolderLabel$></mt:PageFolder></mt:setvarblock>
</mt:if>
<mt:If name="page_folder" eq="company">
<!-- 会社概要 start -->
<!-- 会社概要 end -->
<mt:ElseIf name="page_folder" eq="news">
<!-- 新着 start -->
これはブログです。
<!-- 新着 end -->
<mt:ElseIf name="page_folder" eq="contact">
<!-- お問い合わせ start -->
<!-- お問い合わせ end -->
<mt:ElseIf name="page_folder" eq="privacy">
<!-- プライバシーポリシー start -->
<!-- プライバシーポリシー end -->
<mt:ElseIf name="page_folder" eq="news">
<!-- 新着 start -->
<!-- 新着 end -->
<mt:ElseIf name="page_folder" eq="service">
<!-- サービス start -->
<!-- サービス end -->
<mt:ElseIf name="page_folder" eq="recruit">
<!-- 採用情報 start -->
<!-- 採用情報 end -->
<mt:ElseIf name="page_folder" eq="access">
<!-- アクセス start -->
<!-- アクセス end -->
<mt:ElseIf name="page_folder" eq="sitemap">
<!-- サイトマップ start -->
<!-- サイトマップ end -->
<mt:else>
<!-- その他 start -->
<!-- その他 end -->
</mt:if>
テンプレートモジュールで使う場合
下記のようにページアーカイブだけ使用するにしておくことで、BLOGページなど再構築でエラーになりません
<mt:If name="page_archive">
<mt:setvarblock name="page_folder"><mt:PageFolder><$mt:FolderLabel$></mt:PageFolder></mt:setvarblock>
上記のタグ...
</mt:if>
インデックスページ、ブログページで、上記テンプレートモジュールで使う場合の方法
インデックステンプレートの上部に下記を定義しておきます。これは、page_folder変数にnewsを入れるということになります。
<mt:Var name="page_folder" value="news">
また、テンプレートモジュール毎にFolderLabelを宣言せずウェブページテンプレート上部に書くことでpage_archiveで対応しなくて済みます。
<mt:setvarblock name="page_folder"><mt:PageFolder><$mt:FolderLabel$></mt:PageFolder></mt:setvarblock>
上記page_folderの応用
これは、取得したディレクトリをclassに使い、該当のメニューにclass="active"を付けています。
FolderLabelは日本語(名前)のほうなので、ディレクトリ名とは、違います。新規登録では、ディレクトリ名しか登録しないので間違えないように・・
名前を日本語にした場合は、<$mt:FolderBasename$>を使います。
<nav class="<mt:Var name="page_folder">">
<p><a href="<$mt:WebsiteURL encode_xml="1"$>">電脳職人村</p>
<ul>
<li><a href="<$mt:WebsiteURL encode_xml="1"$>"<mt:If name="page_folder" eq="home"> class="active"</mt:if>>HOME</a></li>
<li><a href="<$mt:WebsiteURL encode_xml="1"$>news"<mt:If name="page_folder" eq="news"> class="active"</mt:if>>お知らせ</a>
</ul>
</nav>
HTMLファイル名で判断する方法
これは拡張子は含みません。上記のディレクトリで判断するからさらにHTMLファイル毎で分岐したい場合に使用できます。
クラス名にこのHTML名で統一することでHTMLファイル毎でclass分けも可能です。
例はindex.html,detail.htmlを想定しています。
<mt:setvarblock name="htmlfile"><$mt:EntryBasename$></mt:setvarblock>
<mt:if name="htmlfile" like="index">
<mt:ElseIf name="htmlfile" like="detail">
ここになにか書く
</mt:if>
各テンプレートを判断する方法
これは、テンプレートモジュールで使う場合で説明したpage_archive以外も含んだ内容になります。
<mt:If name="main_index">
<!-- トップページ -->
<mt:ElseIf name="entry_archive">
<!-- エントリー -->
<mt:ElseIf name="page_archive">
<!-- ウェブページ -->
<mt:Elseif name="category_archive">
<!-- カテゴリアーカイブページ -->
<mt:ElseIf name="datebased_archive">
<!-- 月や年アーカイブ -->
<mt:ElseIf name="archive_index">
<!-- アーカイブインデックス-->
<mt:else>
<!-- その他 -->
</mt:If>
コンテンツタイプを判断する方法(追記)
コンテンツタイプで下記が追加されていました。
コンテンツタイプアーカイブテンプレート
contenttype_archive
コンテンツタイプリストアーカイブテンプレート
contenttype_archive_listing
カテゴリの場合は、コンテンツタイプリストアーカイブでしか、使用できない
/%-c/%iを使用
<mt:If name="contenttype_archive">
<!-- コンテンツタイプアーカイブページ -->
<mt:ElseIf name="category_archive">
<!-- コンテンツタイプカテゴリページ -->
</mt:If>
サイトマップ用
<MTTopLevelFolders>
<MTSubCatIsFirst>
<section class="sitemap">
<ul>
</MTSubCatIsFirst>
<MTIfNonZero tag="MTFolderCount">
<li><$MTFolderLabel$>
<ul>
<MTPages sort_by="field:page_sort" sort_order="ascend">
<li><a href="<$MTPagePermalink$>" title="<$MTPageTitle$>"><$MTPageTitle$></a></li>
</MTPages>
</ul>
</MTIfNonZero>
<MTSubFolderRecurse>
</li>
<MTSubCatIsLast>
</ul>
</section>
</MTSubCatIsLast>
</MTTopLevelFolders>
コンテンツタイプでよく使う
コンテンツタイプでタグを作って分、ソート、画像、リンクする方法
content_fieldは自分作成したコンテンツタイプ名を指定します。
<ul>
<mt:Contents content_type="コンテンツタイプ名" sort_by="field:並び順" sort_order="descend">
<mt:Var name="class_tag" value="">
<mt:ContentField content_field="タグ"><mt:TagName setvar="class_tag"></mt:ContentField>
<mt:if name="class_tag" like="$htmlfile">
<li>
<a href="<mt:ContentField content_field="URL"><mt:ContentFieldValue></mt:ContentField>" <mt:ContentField content_field="URL">target="_blank"</mt:ContentField> rel="noopener noreferrer">
<mt:ContentField content_field="コンテンツタイプ画像">
<dt><img src="<$mt:AssetURL$>" alt=""></dt>
</mt:ContentField>
<p><mt:ContentField content_field="名称"><mt:ContentFieldValue></mt:ContentField></p>
<p><mt:ContentField content_field="説明文"><mt:ContentFieldValue></mt:ContentField></p>
</a>
</li>
</mt:If>
</mt:Contents>
</ul>
sitemap.xmlサンプルgoogle向け
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.google.com/schemas/sitemap/0.9">
<url>
<loc><$MTBlogURL encode_xml="1"$></loc>
</url>
<MTIgnore>ウェブページ</MTIgnore>
<MTPages lastn="0">
<url>
<loc><$MTPagePermalink encode_xml="1"$></loc>
<lastmod><$MTPageModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod>
</url>
</MTPages>
<MTIgnore>お知らせ</MTIgnore>
<MTEntries lastn="0">
<url>
<loc><$MTEntryPermalink encode_xml="1"$></loc>
<lastmod><$MTEntryModifiedDate utc="1" format="%Y-%m-%dT%H:%M:%SZ"$></lastmod>
</url>
</MTEntries>
</urlset>
PageBute.plプラグインの使用方法
<MTPageContents count="10">
<mt:Entries lastn="999">
<$mt:Include module="記事一覧"$>
<$MTPageSeparator$>
</mt:Entries>
</MTPageContents>
<MTPagination>
<MTPaginationHeader>
<div class="pageNavi">
<ul>
<MTIfPaginationFirst>
<li><a class="link_before" href="<$MTPaginationFirst$>"><<</a></li>
</MTIfPaginationFirst>
<MTIfPaginationPrev>
<li><a class="link_before" href="<$MTPaginationPrev$>">前の5件</a></li>
</MTIfPaginationPrev>
</MTPaginationHeader>
<MTIfPaginationCurrent>
<mt:ignore>現在のページ</mt:ignore>
<li><span><MTPaginationLink element="number"></span></li>
<MTElse>
<mt:ignore>それ以外(遷移用のリンクあり)</mt:ignore>
<li><a href="<$MTPaginationLink$>"><$MTPaginationLink element="number"$></a></li>
</MTIfPaginationCurrent>
<MTPaginationFooter>
<MTIfPaginationNext>
<li><a class="link_next" href="<$MTPaginationNext$>">次の5件</a></li>
</MTIfPaginationNext>
<MTIfPaginationLast>
<li><a class="link_next" href="<$MTPaginationLast$>">>></a></li>
</MTIfPaginationLast>
</ul>
</div>
</MTPaginationFooter>
</MTPagination>
カテゴリ複数選択の場合リスト表示方法(アーカイブのみ有効)
<mt:TopLevelCategories>
<mt:CategoryID setvar="setCategoryID">
<mt:EntryCategories>
<mt:if tag="CategoryID" eq="$setCategoryID">
<li class="<mt:CategoryBasename />"><a href="<mt:categoryarchivelink>" class="category"><mt:categorylabel></a></li>
</mt:if>
</mt:EntryCategories>
</mt:TopLevelCategories>
カテゴリリスト表示方法
<mt:TopLevelCategories> はテンプレートのアーカイブのみ有効
下記でテンプレートモジュールで他のブログ記事からテンプレートモジュールを呼び出ししてだめだった。。
<mt:Blogs include_blogs="ブログID">
<mt:TopLevelCategories>
カテゴリのタグ
</mt:TopLevelCategories>
</mt:Blogs>
なので昔のやつで呼び出し
<mt:Categories show_empty="1" blog_ids="ブログID">
<mt:If name="__first__">
<ul>
</mt:If>
<mt:If tag="CategoryCount" ge="1">
<li><a href="<$mt:CategoryArchiveLink$>"><$mt:CategoryLabel$></a>(<$mt:CategoryCount$>)</li>
<mt:Else>
<li><$mt:CategoryLabel$></li>
</mt:If>
<mt:If name="__last__">
</ul>
</mt:If>
</mt:Categories>
他のブログIDからテンプレートモジュールを呼ぶ方法
<mt:include module="テンプレートモジュール名" blog_id="呼び出すブログID">
複数のブログ記事(2,3,4,5)をまとめて一覧表示
公開日新しいもの順、記事カテゴリ指定
<ul>
<mt:MultiBlog mode="context" exclude_blogs="2,3,4,5">
<mt:Entries sort_by="authored_on" sort_order="descend" category="指定の記事のカテゴリ" include_subcategories="1" limit="5">
<li><dl><dt><span><$MTEntryDate format="%Y.%m.%d" language="ja"$></span></dt><dd><span>【<a class="wponw-blog-name" href="<$mt:EntryPermalink$>"><$mt:BlogName$></a>】<a href="<$mt:EntryPermalink$>"><$mt:EntryTitle$></a></span></dd></dl></li>
</mt:Entries>
</mt:MultiBlog>
</ul>
<p><a href="<$mt:WebsiteURL encode_xml="1"$>all_entry/">一覧を見る</a></p>
記事のカテゴリを表示
<mt:EntryCategories>
<li><a href="<$mt:CategoryArchiveLink$>"><$MTCategoryLabel$></a></li>
</mt:EntryCategories>
他のブログから一覧 include_blogsを追加
最新の1件は引数に追加 lastn="1"
<mt:Entries include_blogs="1">
<dt><$MTEntryDate format="%Y年%m月%d日"></dt>
<dd><a href="<mt:entrypermalink>"><mt:entrytitle></a></dd>
</mt:Entries>
他のブログから年別アーカイブ
<mt:MultiBlog mode="loop" include_blogs="1">
<mt:archivelist archive_type="Yearly">
<li><a href="<mt:archivelink>"><mt:archivetitle></a></li>
</mt:archivelist>
</mt:MultiBlog>
ウェブページを指定のタグで呼び出し
<mt:Pages tag="登録したタグ">
<$mt:PageBody$>
</mt:Pages>
この場合、ウェブページのカスタムフィールドで、チェックBOXを作り タグ名 NoHtml、ウェブページ登録時にチェックする必要があります
デザインのテンプレートのウェブページ、アーカイブマッピングで下記を指定でHTMLを生成しなくできます。
記事も同様にすれば同じようにできます。
<mt:Unless tag="NoHtml">%-c/%-f</mt:Unless>
他のサイトのウェブページを呼び出し
<mt:Pages blog_ids="他のサイトのID" id="指定のウェブページID">
<$mt:PageBody$>
</mt:Pages>
記事のカテゴリで指定して、最後の登録のデータのみ表示
<MTEntries lastn="1" category="指定の記事のカテゴリ">
<dl>
<dt>一覧</dt>
<dd>
<$MTEntryDate format="%Y.%m.%d" language="ja"$><$MTEntryTitle$>
<$mt:EntryBody$>
</dd>
</dl>
</MTEntries>
ブログIDで分岐 複数ID指定の場合
<MTSetVarBlock name="blog_id"><$MTBlogID$></MTSetVarBlock>
<mt:If name="blog_id" like="^(2|3|4|5)$">
<mt:Else>
</mt:If>
ブログIDで分岐 1つずつ指定の場合
<mt:If name="blog_id" like="^(2)$">
<mt:elseIf name="blog_id" like="^(3)$">
<mt:elseIf name="blog_id" like="^(4)$">
</mt:If>
ページタイトルで分岐
<MTSetVarBlock name="page_title"><$MTPageTitle$></MTSetVarBlock>
<mt:If name="page_title" eq="指定のページタイトル">
<mt:Else>
</mt:If>
ページIDで分岐
<mt:SetVarBlock name="page_id"><$mt:PageID$></mt:SetVarBlock>
<mt:If name="page_id" like="^(2)$">
<mt:Else>
</mt:If>