Movable Typeの最近のブログ記事

表題の件を探したところ「かたつむりくんのwww」に良い記事があったのでメモメモ。
https://tinybeans.net/blog/2012/06/16-075413.html

 

<$mt:SetVar name="favorite" value="バッジョ,ジーコ,クライフ,ピルロ,ストイコビッチ,グアルディオラ"$>
<$mt:Var name="favorite" regex_replace="/[^,]/g","" cat="," count_characters="1" setvar="length"$>

<mt:For var="i" from="1" to="$length">
  <mt:If name="__first__"><ul></mt:If>
  <$mt:Var name="favorite" regex_replace="/^([^,]+).*/","$1" setvar="value"$>
  <$mt:Var name="favorite" regex_replace="/^([^,]+,?)(.*)/","$2" setvar="favorite"$>
  <li><$mt:Var name="value"$></li>
  <mt:If name="__last__"></ul></mt:If>
</mt:For>

カンマの数を拾ってループさせる回数を決め、<For>でその回数だけ回して、使った分だけ削って次へ回す感じかな。

元ページのほうに詳しい解説があるのでそちらも参照すること。

実案件で作ったので備忘録。

クライアントは某自治体(代理店も入っているので名前は明かせない)。今回の要望は「更新をすべてトップページに表示したい」。当初は更新情報の子ブログを立ち上げて手動で入力した発信することを提案したが、担当者さまは自動生成へのこだわりが強いようす。話を聴いていくと市民からのニーズが確実にあること、更新者が多数いて更新した情報を集めるだけでも大変で、多少不完全なものであっても自動生成のほうが合理的と分かりました。

そこでこんな仕様で組んでいます。

◆「更新情報」は最近30日に更新のあったものを表示。
◆ウェブページはすべて監視して、「最終更新日」をキーに「更新日:<ページタイトル>を更新しました」と表記
◆新着情報などブログにしてあるものは「公開日:<記事タイトル>を更新しました」
◆一覧を日付順に並べる

ひと工夫する必要があったのが「一覧を日付順に並べる」という部分。いったん配列変数に格納してLoopで並び替えながら取り出すことに。

配列変数を入れ子にする必要があって、下層の日付をキーにして並べ替えしたかったけど方法が見つからない。MTLoopの並び替えは「sort_by=」の値に「key」or「value」以外の選択肢は無さそう。なのでここは日付+記事IDをkeyに設定することで解決。

 

----------
参考ソース
----------

【ブログ記事を配列変数に格納】

<mt:Entries days="30" blog_ids="9,17,14">
    <mt:SetVarBlock name="entryKey"><$mt:EntryDate format="%Y%m%d"$><$mt:EntryID$></mt:SetVarBlock>
    <mt:SetHashVar name="updateEntries">
        <mt:SetHashVar name="$entryKey">
            <mt:SetVarBlock name="date"><$mt:EntryDate format="%Y.%m.%d"$></mt:SetVarBlock>
            <mt:SetVarBlock name="ttl"><$mt:EntryTitle$> を更新しました</mt:SetVarBlock>
            <mt:SetVarBlock name="cate"><$mt:EntryBlogName$></mt:SetVarBlock>
            <mt:SetVarBlock name="url"><$mt:EntryPermalink$></mt:SetVarBlock>
        </mt:SetHashVar>
    </mt:SetHashVar>
</mt:Entries>

 

【ウェブページについても似た感じで配列変数に格納】

※ソースは省略
※ただしこちらは公開日でなく更新日がキーなのでdaysモディファイアが使えない。
 ごにょごにょと書いて30日前までに更新された記事を抽出するように。

 

【表示部】

<mt:Loop name="updateEntries" sort_by="key reverse">
    <mt:GetVar name="__value__" setvar="updateEntry">
    <dl class="homeNewsItem">
        <dt><$mt:GetVar name="updateEntry{date}"$></dt>
        <dd class="entryDate" datetime="<$mt:GetVar name='updateEntry{date}'$>"><a href="<$mt:GetVar name='updateEntry{url}'$>"><$mt:GetVar name='updateEntry{ttl}'$></a></dd>
    </dl>   
</mt:Loop>

 

実際にはブログによって定型文に変えたりリンク先を記事ページ以外にしたりと激しく分岐させてるけど、上記で骨子の部分は思い出せるかな。

クライアントのサイトで不可解な現象に遭遇。詳細ページの体裁を変更するためにアーカイブテンプレートを探したらどこにも見当たらない。実はインデックステンプレートで詳細ページを書き出していたという仕様でした。

何故そのような仕様になったかここでは説明できないのだけれど、インデックステンプレートをアーカイブテンプレート的に使うことができるのは驚き。MT7からのコンテンツタイプを使い込んでいくと、もしかするとこれを使う機会も出てくるかもしれないのでメモメモ。

-----

これをやるためにはH.Fujimotoさんが公開しているプラグインが必要。サイト上ではMT5.0から6.2までの対応とあるが、クライアントの7.0でも動いているようだ。

https://www.h-fj.com/mtplugins/writetofile.php

基本的には1ページを書き出すものなのだが、条件を設定してLoopなどを回すことで複数書き出すことができる。

他にもアーカイブテンプレート内に設置して、例えば個別店舗を案内するときに、地図がある場合だけ地図ページを書き出すといった使い方も考えられるかな。

 

MTAppjQueryで設定をへぐったところ、管理画面がjs不完全な感じのエラーで不具合となり、プラグイン画面からMTAppjQueryの設定を開くことができなくなり、進むも退くもできなくなってしまった。結局、DBを直接いじって初期化できたのでメモメモ。

まずはphpMyAdminでDBを開き、テーブル: mt_plugindataを覗く。

「plugindata_plugin」カラムが「MT::Plugin::MTAppjQuery」のデータのうち、「plugindata_key」カラムで「configuration:blog:3」のように目標のブログIDを記述してあるデータを削除すると初期化できる。

元ネタはこちら

http://www.tinybeans.net/blog/2010/07/06-115554.html

 

MTAppjQuery プラグインで、タグエリアのようなテキストフィールドをチェックボックスに変える例文

$.MTAppMultiCheckbox({
    basename: 'tags',
    label:    'Moveble Type,TypePad,MTOS,VOX',
    custom:   0,
    debug:    0
});

MTAppjQuery|フィールドの表示・非表示

元ネタはこちら
http://www.tinybeans.net/blog/2014/08/28-230911.html

MTAppjQueryでフィールドの表示・非表示だけならuser.cssでOK

 

表示オプションを消す

/* Hide the display options */
#edit-entry #display-options {
    display: none;
}

 

すべてのフィールドを表示する

/* Show the every fields */
#edit-entry #sortable .field {
    display: block !important;
}

 

キーワード欄とタグ欄を消す

/* Hide the keywords and the tags */
#edit-entry #sortable #keywords-field,
#edit-entry #sortable #tags-field {
    display: none !important;
}

 

本文欄を消す

#edit-entry #sortable #text-field {
    display: none !important;
}

または

#edit-entry #sortable #text-field {
    position: absolute;
    top: 0;
    left: 0;
    width: 1px;
    height: 1px;
    overflow: hidden;
}

MT|mtevalとリッチテキストエディタ

モディファイア「mteval」を使うと、エントリーやウェブページの本文内でMTタグが使えますが、エディタの「HTML編集モードの切り替え」をするとボロボロになってしまいます。

自分が管理するなら何とかなりますが、クライアントに使ってもらうには厳しいですよね(汗

何かうまい対策方法はあるものでしょうか?

-------------------------

ってな投稿をMTQに上げたところ、自己解決したのでメモメモ。

  • エディタの自動変換にかからない文字列を、regex_replaceでMTタグに置換する。
  • 置換するMTタグは長くなるだろうからモジュール化してinclude
  • mtEntryBodyに直接だと何故だかうまくいかないので、いったん変数に格納してから展開
 

<mt:SetVarBlock name="dispBody">
<$mtEntryBody regex_replace="/\[include テストモジュール\]/g",'<mt:Include module="テストモジュール" />' $>
</mt:SetVarBlock>
<mt:GetVar name="dispBody" mteval="1">

 

投稿には、

[include テストモジュール]

ってな具合で。

MT|プラグイン使用履歴

MTもプラグインの使用履歴をメモしていきます。

--------------------------------------

--------------------------------------

--------------------------------------

某bungu様

## 基本プラグイン

  • RemoveBlank-1.04 : 空行や行頭スペースを削除してHTMLソースをスッキリ
  • QuickRebuild-0.6.2 : まとめて再構築
  • PageBute.3.5.7 : ページ分割

## 制作ユーティリティー

## 特用プラグイン

 

--------------------------------------

某seven-h様

## 基本プラグイン

  • RemoveBlank-1.04 : 空行や行頭スペースを削除してHTMLソースをスッキリ
  • QuickRebuild-0.6.2 : まとめて再構築
  • PageBute.3.5.7 : ページ分割

## 制作用ユーティリティー

  • DuplicateEntry 2.11 : 投稿の複製

## 特用プラグイン

  • MTCheckRelease-1.1.12 : 承認フロー

--------------------------------------

MT for AWS|作業メモあれこれ

いろんなサイトに情報はあるが、SSHに慣れている人向けだったりするので、前提になる「そもそも情報」が抜けてたりする。見つけたサイトをここにメモメモ。

--------------------------------------

元ネタはこちら
http://dev.classmethod.jp/cloud/aws/aws-beginner-ec2-ssh/

 

まず、AWSを設置する際の下記の情報があることを確認

  • グローバルIP or ホスト名
  • 秘密鍵(.pem)

次に、ユーザ名。AmazonLinuxはデフォルトで[ ec2-user ]

 

TeraTermで接続

「新しい接続」でグローバルIPを入力してOK

次の画面で、ユーザ名を入れ、秘密鍵を選択するが、
.pemは一覧に出なかったりするので「すべてのファイルを表示」で探す

これでログインできれば成功!

 

WinSCPで接続

上記のグローバルIPと秘密鍵、ユーザ名で接続できるはず。

ただし、/home内のカレントディレクトリ以外はパーミッションの関係でアップロードできない。
これは、SSH接続して、コマンド[ sudo ]のスーパーユーザ権限を使って、パーミッションを変更してあげる必要あり。

--------------------------------------

プラグインをアップロードしても反映されない場合

元ネタはこちら:http://communities.movabletype.jp/2016/06/awsmtappjquery.html

AWS版やクラウド版のMTは、PSGIで動作していてシステムがメモリに常駐しているために、プラグインをアップロードしただけでは読み込まれない。アップロード後に下記のいずれかで再起動する必要がある。

 

[MovableType]カテゴリーページで、記事一覧

元ネタはこちら
http://www.koikikukan.com/archives/2012/04/21-000300.php

MTのカテゴリーページでは、<mtEntries>が使えない。それに対する対策は下記。

<mt:Blogs blog_ids="2" ignore_archive_context="1">
  <mt:Entries blog_ids="2" lastn="10">
    <$mt:EntryTitle$>
  </mt:Entries>
</mt:Blogs>

[ MT ]カスタムフィールドをループで処理

元ネタはこちら
http://www.h-fj.com/blog/archives/2012/11/13-163510.php

 

似たような項目を繰り返してカスタムフィールドを設定することがある。テンプレートで表示させる記述でループで簡略化できないかと考えたが、<$mt:ttl1$>というようなタグの末尾数字を変えていく方法がわからなかった。

これを解決するのが上記URL。

サンプルソースを転記

<mt:For var="x" from="1" to="3">
  <mt:SetVarBlock name="tmpl">&lt;$mt:Color<$mt:GetVar name="x"$>$&gt;</mt:SetVarBlock>
  <$mt:GetVar name="tmpl" decode_html="1" mteval="1"$>
</mt:For>

[ MT ]投稿窓にCSSを反映

元ネタはこちら
http://makepo.jp/content/column/course-cms/mt-tips/2015-06-12.html

 

Movabletypeの投稿窓にCSSを反映させたい場合は「設定」から。

変更したいウェブサイト、ブログを選び、左メニューの[設定] => [投稿] >[WYSIWYGエディタの設定]

元ネタはこちら
http://www.littlepad.net/blog/2009/06/16/123530

MTディレクトリ/tmpl/cms/include/asset_upload.tmpl

の先頭行に、

<$mt:setvar name="extra_path" value="upload_images/"$>

を追加して、(そのままアップすると、アップグレードで戻ってしまうので、)

MTディレクトリ/alt-tmpl/cms/include/asset_upload.tmpl

と、代替えテンプレートとしてアップする。

WindowsにApacheをインストールのメモメモ

サーバ:ヘテムル
MT : Movable Type version 5.14-ja

データベース直でエントリーデータを1917件放り込んだところ、エントリーページが1400しか書き出されない状態。

原因の詳細は不明だが、投稿日を100件ごとにずらしてみたところ1900件書き出せるようになった。

あと17件。。。

MT管理画面カスタマイズのメモ

MT管理画面カスタマイズで調べたサイトをメモメモ。

 

 

MT:管理画面のカスタマイズ(alt-tmplの活用)
http://www.soh-web.net/movable-type/post-9.php

 

MT:管理画面のカスタマイズ(alt-tmplの活用)その2
http://www.soh-web.net/movable-type/mtalt-tmpl2.php

 

 

本文フィールドの表示オプションを有効にしたりドラッグできるようにする「BodyFieldCustomizerプラグイン」
http://www.koikikukan.com/archives/2011/05/06-025555.php
【有償版で商用利用は、ライセンス料が発生します】

 

 

MT5の管理画面カスタマイズはjQueryだけでいける?

http://www.cherrypieweb.com/weblog/technical/20110422002203.php

 

 

MTAppjQuery - Movable Type 5 の管理画面をjQueryでカスタマイズしやすくするプラグイン

MTプラグインのメモ

制作中の案件で使いたい候補をメモメモ

 

記事投稿画面でフィールドの並び替えを抑止する「SortFieldDisablerプラグイン」

http://www.koikikukan.com/archives/2012/04/05-000300.php

 

画像にheight属性を指定しないとレイアウト崩れの原因になる。

Masontyで高さ確定したのちに画像を読み込んだりすると高さが変わってしまうのが原因と思われ。

今回はMTのプラグイン「ResizeImage」で画像の大きさ変更を併用していたが、このプラグインを使用するときはwidthとheightを空で記述しておくと自動的にサイズを入れてくれるようだ。

IE9でMTの本文が入力できない

Windows7にしてからChromeばかり使ってIE9を使っていなかったので気がつきませんでした。IE9でMTの管理画面から更新しようとすると、本文が入力できないという不具合がでてきました。また、プルダウンメニューも動作しないという症状も出ています。

mt-config.cgiへ記述されているURLと違うURL(wwwの有無など)でアクセスした場合に本文が入力できないという症状はググるとたくさん出てきたのですが、これとは全く別の問題で、想像するにjavascriptの動作にエラーがありそう。

結局、IE9のF12キーで出てくる開発者メニューから「ドキュメントモード」をIE8以下にすることで回避できました。

ただ、実際問題、無理にIE9にこだわらずに、ChromeやFirefoxに乗り換えたほうが幸せになれるかもしれませんね。

アーカイブ

ウェブページ