アーカイブ
MT-MEMO
アセットデータの各種取得
2025/10/20
mt:AssetProperty
今まで全然知らなかったけどファイルサイズはMTから取得できる。
アセット情報だからMT経由でアップしたアセットだけかな、多分、知らんけど。
サイズ →
幅 →
高さ →
ラベル →
説明 →
投稿者 →
登録日時 →
MTAssetProperty
子サイトでフォルダ名を変更したい時
2025/10/20
公開するまでのテストで別フォルダで作っておいて、公開時に正式なフォルダ名で公開したい、なんて時のためのメモ。
元のフォルダは残る
まず一番最初に注意したいことは、設定から変更しても元のフォルダは残ってしまうということ。
MTの場合はフォルダ名を修正ではなく新しくフォルダを作ることになってしまう。
これはけっこうめんどくさい。
なので設定でサイトURLとサイトパスを変更して再構築したら、FTPで変更前のフォルダを手動で削除する必要がある。
アセットは移動できない
再構築してもアセットは新しいフォルダに移動してくれない。
データは残ってるので元のフォルダの画像を一旦DLしてから新しいフォルダにアップすることでアセット一覧に出てくるようになる。
面倒だね・・・
新しいフォルダにアップするのは任意の場所にアップした画像ファイルと「assets_c」フォルダね!これがアップした画像のデータの元になってるので!
ループ時のカウンター
2025/10/20
コンテンツデータなんかでループさせてる時のカウンター。
これだけで記事を作るのもどうかと思ったけど他に書くのもないわりにメモを入れておきたかったので。
カウンターが6までの時
それ以降の時
カウントして6回以上だったら別の処理をしたいなぁと思ってググったらドンビシャのページがあった。今となってはどこで見つけたのか覚えてない。
その他の予約変数
下記のようなものがあるらしい。
__first__
ループ出力の最初である場合 true (1) となります。
__last__
ループ出力の最後である場合 ture (1) となります。
__odd__
ループ出力の奇数回目の場合 ture (1) となります。
__even__
ループ出力の偶数回目の場合 ture (1) となります。
__index__
ループのインデックスを格納します。
__counter__
ループした回数を格納します。
記事ページ
2025/10/20
基本的にコンテンツデータを使ってどうこうすることが多かったので記事ページをどうこうするのはあまり知らなかった事実。
ということで覚え書き。
とりあえずループと単発で取得する一式
←ループで取得する時に必要なやつ。これは全件取得。
ページタイトル:
本文:
続き:
記事の公開日:
記事のプライマリカテゴリー:
記事のカテゴリーすべて:
←ループで取得する時に必要なやつの終了タグカスタムフィールドでつまずいたやつ
アセットでURLだけ取得したい時。
[MTAssetURL]ではエラーになる。ググってもなかなか見つけられなかったのでここにも記載。
仮に作ったカスタムフィールドの名前が[PdfAddress]だったとしたら、その後ろに[Asset]をつけてあげる。
下記はそれプラス[PdfAddress]にデータがあったら、という書式。
でもこんなのググって出てこなかったら本当にわからない。
オフィシャルだとこのページのここの記載が解説。わかるかっつーの!
アーカイブマッピング
あとこれは記事データだけじゃないけどアーカイブマッピングにもちょっとだけMTタグが使えたよという話。
下記は日時のファイル名をアーカイブマッピングで作っちゃうやつ。
.html
.html ← コンテンツデータの場合はこっち
※20231211203222.htmlみたいな感じで作られる
あと条件に合わないやつはファイル生成しないやつ。
これは本文が空じゃなければファイルを生成というパターン。
こういうのもネットのあちこちにあるとググりやすくなるよね。
.html他にもこういうパターンも。値を変数にいれてif文で判定してる。
css-memo/%F.html
Movable Type:不要なHTMLを出力しない
MTで不要なHTMLファイルを出力しない方法
コンテンツフィールドの使い方
2025/10/20
カスタムブロックの作成
2025/10/20
ブロックエディタで使える標準のものではちょっと機能が足りない、機能を特化させたいものを用意したい時に使う機能がカスタムブロック。
左メニューのブロックエディタから作成する。
例1 : 段落間のスペースを作る
新規カスタムブロックから
名前:行間スペース
識別子:block_space
ブロック:なにも選ばず
カスタムスクリプト:下記のstyleを設定
コンテナ要素で包むにチェック
ブロックの追加と削除にはチェックせず
プレビューを表示するにチェック
で完了。編集画面のブロックを追加から「行間スペース」のボタンができてるはずなので利用できるようになる。
上記style設定は管理画面での見た目の整えなので、書き出されるhtml側でも同じようなcss設定を用意しておけば作れる。
例2 : 入力ブロック
例えば上記のようなxmpブロックを用意したい場合。
HTMLブロックを使ってタグ打ちしちゃってもいいんだけど練習がてらカスタムブロックで作るとしたら・・・
新規カスタムブロックから
名前:xmp
識別子:xmp
ブロック:テキスト(複数行)を選んでクラス名を任意のものに設定。(ここでは「xmp_area」と設定)
カスタムスクリプト:下記
コンテナ要素で包む、ブロックの追加と削除、共にチェックなし
プレビューを表示するにチェック。
カスタムスクリプト枠内は下記。
同じく上記のstyle要素は管理画面内での見え方設定なので、html側は別途サイトデザインに合うような形でのcss設定が必要。
ブロックの初期値でクラス名を設定したけど、その設定値をjsで使うのでそこさえ覚えといたらなんとでもなるかと。
(ちなみに上記のjs内で[xmp]としてるがタグで囲むとそこでタグと解釈されてレイアウトが崩れるからそうしてるだけです)
コンテンツデータのエディタに独自cssをつける
2025/10/20
コンテンツデータのエディタに独自cssをつける
他で見るのと同じこと書くけど・・・メモとして一応残す。
1:設定 > 投稿の「WYSIWYGエディタの設定」に独自cssファイルのURLを記載。
例:そのままフルパス
https://mt.nascha.jp/mt-system-v5/mt-static/support/edit.css
例:変数を使う
{{theme_static}}edit.css
例:ドメイン部分の省略
/mt-system-v5/mt-static/support/edit.css
2:上記で設定したcssファイルに内容を記載していく
例:
[data-content-type-name="コンテンツデータ名"][data-field-name="フィールド名"] h1 {
color: #000;
margin: 0px 0px 0px 0px;
padding: 10px;
background-color:#b1d131;
}
3:再構築して入力エディタ箇所を確認
注:[略][略]の間にスペース入れちゃうと効かない。30分くらい悩んだ。
参考リンク集
記事・ウェブページ・コンテンツデータの編集画面に CSS を適用する
コンテンツフィールドの入力をブロックエディタモードにする
MTのバージョンアップ
2025/10/20
コンテンツデータのメモ
2025/10/20
大注意!
ある程度作ってからコンテンツタイプでフィールドを削除するとたまに時々コンテンツデータが見れなくなるようになる!
ある程度作ってからのフィールド削除は危険なのでやめよう!
コンテンツデータのテンプレートはこんな感じ。
<$mt:ContentFieldValue$>
「内容」っていうのはコンテンツタイプで設定したフォームの枠の名前。
データをループさせて一覧を書き出すのはこんな感じ。
<$mt:ContentFieldValue$>
カテゴリセットを元にデータを取得する時はこんな感じ
〜処理〜
[英語のフィールド名]はどうも英語名じゃないと取得できないようなので、事前にコンテンツタイプを作る時から考えて名前をつけよう。英語のフィールド名をつけてなかったらコンテンツアーカイブなんかからテンプレートを作るけど、その時に右側のコンテンツフィールドを選んでユニークIDを控えてそれを入れよう。
コンテンツタイプで編集フォームの要素を作ってコンテンツデータのところでデータ入力に関してはメモはいいよね。わかる話だし。
コンテンツデータとはちょっと話がずれるけど、出力ファイル名のところ、階層パス付けて保存するとちゃんとその通りの構造になってくれるのは偉いな!
しかし公式ヘルプはほんとわかりにくい。
入力したデータを取得するのはどうしたらいいのかすらヘルプページから探すことは困難。
「ContentFieldValue」という単語を知らないと多分探せない。
コンテンツデータを取得するにあたり、アセットの場合はAssetURLが使えて...
<$mt:AssetURL$>
日付データだとformatが使える。
その他
カテゴリセットの値を取得したい時。
コンテンツ対応で作る時のコンテンツフィールド名が「ページ階層」だとして。
●日本語の方(セットする時のフォームの左側の方)
●英語の方(セットする時のフォームの右側の方)
●階層として出したい時
これ左右の値の名前?がなんていうのかわからんのでググり方が非常に難しい。
Labelにするならvalueにしてくれよとも思う。
あと<mt:SubCategoryPath>はアーカイブマッピングの設定でもいけた。
こんな感じ。
/%-F
複数のカテゴリー設定を作ってた場合は知らん。やってないし。
ページ送りのテスト
2025/10/20
本体機能を使う場合は下記ページ
Movable Typeの標準機能での動的ページ分割
ただあまり自由度が感じられなく・・・
MTだとPageButeを使うのが一般的なのかな?
PageBute
今回は過去ページ一覧をjsonファイルとして書き出して、javascriptで読み込んで表示も全部javascriptを試してみた。
テストページ
利点としてはjavascriptで制御してるのでいろいろ融通が効く、MTの機能を使ってるのが一覧にするjsonファイルの書き出しなので初歩的な機能しか使ってないという点。
欠点は記事一覧を出してるので数百件の過去記事データになると読み込みが大変なんじゃ・・・?という点。
まあそのへんは工夫と知恵でなんとかするしかないかもね。
文字の置き換え
2025/10/20
タグはエンコードしないと消えるのでなんとかしたいがグローバル・モディファイアではちょっとざっくり一括すぎて使いにくい。
具体的には<code>で囲まれた分のタグはhtmlエンコードして表示できるようにしたい。
調べるとregex_replaceは連続して使えることがわかったので下記のようにしてみた。
<$mt:PageBody regex_replace="/\74/g","<" regex_replace="/\76/g",">"$>
\74と
\76はそれぞれ開始タグ(<)と閉じタグ(>)。
エスケープ処理を入れてもどうもなぜかうまくマッチしてくれなくて文字コードで指定したらうまくいった。
文字コードの確認はここで見た。
文字コードの確認
とりあえずこれでなんとか動いてる。
モジュールを使う
2025/10/20
よく使うのはこのへん?
<$mt:Include module="テンプレートモジュール名"$>
<$mt:Include widget="ウィジェット名"$>
<$mt:Include identifier="main_index"$>
モジュールは引数みたいなことができる。
<$mt:Include module="テンプレートモジュール名" page="A"$>
(テンプレートモジュール名)内では...
Aです。
Bです。
Cです。
ちなみにコンテンツデータとかwebページの編集画面でMTタグを使うにはテンプレート側で
mteval="1"
をつけると展開してくれる。
不要な空行を消す
2025/10/20
ここに書いた処理は空行が削除される
フォルダの一覧
2025/10/20
ウェブページの一覧を見せるにはいくつか方法がある。
【1】Foldersを使う
show_empty="0"をつけることで空フォルダは出力しないようにできるが、並び順については指示ができない。
<$mt:FolderLabel$>
【2】TopLevelFoldersを使う
<mt:If tag="FolderCount" ne="0">を入れることで空フォルダを出力させないようにできる。こちらはFoldersと違いフォルダの並び順で出力できる。
<$mt:FolderLabel$>
【3】TopLevelFoldersを使う その2
こちらは出力させないフォルダを指定するパターン。
<$MTFolderLabel$>
<$mt:FolderLabel$>
MT 基礎編
2025/10/20
変数
変数の作り方はいくつかある。
作り方によって特徴があるので注意が必要。
できるはずなのにな〜という時は作り方を変えてみたりするのも手。
単独での変数
特徴
・valueに「$変数名」で他の変数の値を使うことができる
・$はなくてもいけるけど付けないと後で見返した時わからんようになる笑
複数の変数を作る時
contents_entry_year=
page_title=トップページ
特徴
・一度に複数の変数を作れる
・上記例のようにFieldValueのようなものを入れる時はこの形じゃないと入らない。
長い(?)変数
ここの中に書かれたものが変数名「page_data」の中身になる。
特徴
・四則演算ができないのでこの形で数字の定義をするのはやめよう。
変数の表示の仕方
変数の文字置き換え
・わりと使う。regex_replaceは複数繋げられるのは便利。あとregex_replaceは変数だけじゃなくMTタグ全般に使える。(後述)
コンテンツデータ 値の取得(FieldValue)
だいたいこの形。
画像はこういうやつ
パーマリンクはこれ
Contentsのモデファイア(一覧ループの条件など)
わりと使うのが
limitsort_byというところ
一覧はこちら
if文
2024年です。
2023年です。
2022年より前です。
その他
大文字、小文字
← 値を大文字にする
← 値を小文字にする
新規インストール
2025/10/20
準備 サーバーにディレクトリを作る
下記3ディレクトリが必要。
●ウェブサイトディレクトリ
●アプリケーションディレクトリ
●スタティックディレクトリ
今回は下記のような入れ子構造にした。フォルダ名は仮。
●ウェブサイトディレクトリ(/www/)
┗アプリケーションディレクトリ(/www/app/)
┗スタティックディレクトリ
アプリケーションディレクトリはDLしたMTのファイル群を入れるフォルダ。
スタティックディレクトリについてはファイル群にあるので別に用意することもなくそのままの構造でスタートした。
パーミッション
練習の意味もあって一度作ってたMTサイトを削除して再度インストールしたのだが、削除がうまくいってなくて色々ひっかかる。
パーミッションもエラーになったので改めてフォルダに設定。
今回ウェブサイトは777でアプリケーションは755。
ただこれじゃまずいって記事もあったけど、公式ドキュメントサイトの記述に準じた。
データベース
MTサイトは削除してもデータベースに内容が残る?
とにかく内容が残ったので面倒だけど一つづつ削除して改めてクリーンインストール。
チェックページからの初期設定画面
全部終わったらチェックページを確認してから初期設定画面にアクセス。
チェックページ https://ドメイン/app/mt-check.cgi
サインイン https://ドメイン/app/