かたつむりくんのWWW

ちょっと知っておくといいかもしれないDynamicMTMLで実行するPHPのパス関係

例えば、DynamicMTML 適用ファイル内に書いてある PHP で file_get_contents() とかしようとしたときに、うまく取得できなくてハマったことありませんか?(無いか…)

これって、自分が思っていたのと実行されている PHP でのパスが違うのが原因だったりします。

続きを読む

MT タグを MTML タグに変換する Coda 2 プラグイン

ようやく、App Store の Coda 2 のアップデートが来ましたね。

日本語化もされましたし、クリップ機能周りにバグ(?)があったのか、新機能の複数設置のプレースホルダーが使えなかったり、クリップの新規作成のダイアログが画面の外側に出てしまったりしてすごく困っていましたが、これらは解決されていました。うれしい!

ということで、なんとなくですけど、MT タグを MTML タグに変換する Coda 2 のプラグインを書いてみました。

続きを読む

カンマ区切りの文字列をプラグインなしで配列のようにループで取り出すTips

Movable Type でテンプレートを書いているとき、カンマ区切りの文字列があって、これを配列にしてループさせたいってことは多々あるかと思います。

そんな時は、荒木さんの Split プラグイン(小粋空間)を使ったりしますが、プラグインを使えない環境もあるかもしれません。

そこで、今回はプラグインを使わないで、カンマ区切りの文字列を配列のようにループする方法を紹介します。

続きを読む

今年の目標:ブログ記事x本、現在y本、残りz本 をDynamicMTML を使ってリアルタイムに表現する方法

今年は、1年間で 100 本のブログ記事を書こうという密かな目標があるのですが、現在の状況をいちいち管理画面でカウントするのが面倒なので、DynamicMTML を使ってリアルタイムで状況を表示させてみます。

これには MTSearchEntries タグを利用します。

続きを読む

文字コード latin1 の MT4 を utf8 の MT5 に移行する方法

MySQL の文字コードが latin1 の MT4 を、文字コードを utf-8 に変換した上で MT5 に移行する方法です。うまくいくでしょうか(理解が足りない部分もあると思うので、ご指摘ください)。

今回は、MAMP のローカル環境で実験してみたいと思います。

続きを読む

MAMP の MySQL をコマンドで扱うには

Mac の代表的な開発環境と言えば MAMP ですね。

MAMP をインストールすると、初めから phpMyAdmin が使えるので、MySQL の作業はついついそれに頼ってしまいがちです。

しかし、サーバーによっては phpMyAdmin がインストールされていない場合もあり、コマンドで作業しないと行けないこともあります。そんな時のために、MAMP の MySQL をコマンドで操作して練習しておきたいですね。

続きを読む

MTAppjQuery の機能(jQueryプラグイン)をリストアップしてみたらこんなにあった

ふと、MTAppjQuery プラグイン の機能(プラグインにセットされている jQuery プラグインの機能)をリストアップしてみたらこんなにあって、自分でも少し驚いた!

続きを読む

MTCafe Tokyo に行ってきました

もう東京では桜がほとんど散ってしまいました。この一瞬の美しさに、人は魅了されるのでしょうか。

さてさて、桜が満開だった4月7日、MTCafe Tokyo に行ってきました(→ MTCafe とは?)。MTCafe はゆるい感じの会なので、この記事もゆるゆると。

1次会は、4人のLTと雑談、2次会はぶらぶらお酒を飲みながら MT の話をつまみにお散歩しながらお花見、3次会は MT の話をつまみに飲み会、4次会は MT の話をつまみに飲み会、という感じでした。

全体を通して、初めてお会いした方とも色々話せて楽しい会でした。また、色々教えていただいたことも多くて、勉強にもなりました。

1次会の最後では、ダイエットの極意の話もそっちのけで開発した野田さんの新作プラグインのデモもあったりしましたが、トイレに行っていて見逃したという…

僕も LT で2つのデモをさせていただきました。

続きを読む

Custom Field GUI Utility 3.2.5 リリース

WordPress のカスタムフィールドを使いやすくするプラグイン「Custom Field GUI Utility 3.2.5」をリリースしました。

ラジオボタンに「must = 1」を設定したときのバグを修正しました。

以下のページからダウンロードしてください。

Movable Type の特定の記事のユーザーを変更する SQL

Movable Type の特定の記事のユーザーを変更する SQL です。

phpMyAdmin を使うのであれば、mt_entry のテーブルを開いた状態で、上のタブメニューの「SQL」で次の SQL を実行すればOKです。この例では、エントリーID = 1136 の記事の著者を ID = 3 に変更しています。

UPDATE `mt_entry` SET `entry_author_id`=3,`entry_created_by`=3,`entry_modified_by`=3 WHERE `entry_id` =1136

ブログの記事の著者を一気に変更したい場合は次のようになります。この例では、ブログID = 2 内のすべての記事の著者を ID = 3 に変更しています。

UPDATE `mt_entry` SET `entry_author_id`=3,`entry_created_by`=3,`entry_modified_by`=3 WHERE `entry_blog_id` =2

以上です。

入れ子になったカテゴリの階層を調べるテンプレート

入れ子になったカテゴリの階層を調べる方法です。

MTSubCategories タグやカテゴリアーカイブに次のテンプレートを入れればOKです。

<$mt:SetVar name="cat_level" value="0"$>
<mt:ParentCategories><$mt:SetVar name="cat_level" op="++"$></mt:ParentCategories>

最初に変数 cat_level を初期化(ゼロを代入)して、MTParentCategories タグ内でインクリメント( +1 )します。これで親カテゴリの数だけ加算されていくので、カテゴリの階層が分かるというわけです。

ちなみに、MTParentCategories タグはトップレベルのカテゴリのコンテキストでも呼ばれ、その場合は MTParentCategories はトップレベルカテゴリである現在のカテゴリを返すようです(ソース未確認)。

続きを読む

Movable Type で 13 日の金曜日に JSON が現れる

今日は平成24年4月13日(金)ということで、JSONの日だとか Twitter で見かけたので Movable Type でもやってみましょう。

DynamicMTML が使える環境で、次のようなインデックステンプレートを作ればOKです!

<!DOCTYPE HTML>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>13日の金曜日にJSON現る</title>
</head>
<body>
<mt:DynamicMTML>
<$mt:Date format="%d" setvar="date"$>
<$mt:Date format="%A" setvar="day_ja"$>
<$mt:Date format="%w" setvar="day_num"$>
<h1>今日は<$mt:Var name="date"$>日の<$mt:Var name="day_ja"$>です。</h1>
<mt:If name="date" eq="13">
    <mt:If name="day_num" eq="5">
        <mt:SetHashVar name="json">
        <$mt:SetVar name="Love" value="再構築"$>
        <$mt:SetVar name="and" value="Love DynamicMTML"$>
        </mt:SetHashVar>
        <$mt:Var name="json" to_json="1"$>
        <$mt:SetVar name="appear" value="1"$>
    </mt:If>
</mt:If>
<mt:Unless name="appear">
<p>平和だな〜</p>
</mt:Unless>
</mt:DynamicMTML>
</body>
</html>

以上です( ̄ロ ̄lll)

AnotherCustomFields プラグインの日付型のフィールドを DynamicMTML に対応させる

前回に引き続き、今回は AnotherCustomFields プラグインで追加した日付型のフィールドを DynamicMTML に対応させる方法を紹介します。なお、この記事は前回の記事を前提として話を進めます。

まずは藤本さんのところで販売されているマニュアルに沿って、「日付と時刻」型のフィールドを追加してください。

今回は、次のようなのフィールドを EntryFields の config.yaml に追加しました。

  • フィールド名:startdate
  • ラベル名:開始日時
  • テンプレートタグ:MTEntryStartDate

なお、既存の config.yaml に追記してオブジェクトを拡張するときは、schema_version のバージョン番号を上げるのをお忘れなく。

続きを読む

AnotherCustomFields プラグインを DynamicMTML に対応させる

藤本さんAnotherCustomFields プラグインの解説書を買いました。

AnotherCustomFields プラグインは、MTOS(オープンソース版の Movable Type)にカスタムフィールドの機能を追加することができるプラグインです。フィールドの追加は、管理画面から行うのではなく config.yaml という設定ファイルを書いてサーバーにアップロードするという手間はありますが、とても簡単な設定ファイルですので特に苦になりません。設定ファイルの書き方は、プラグインの解説書に丁寧に書かれていますので、MTOS を頻繁に使う方は、是非とも1冊購入しておくと良いかもしれません。

また、AnotherCustomFields は、Movable Type の標準のカスタムフィールドとはデータの持ち方が違います。そのため、AnotherCustomFields を標準のカスタムフィールドと併用するということも考えられます。例えば、「自分で PHP で SQL を投げて、カスタムフィールドで条件を絞りブログ記事を取得する」ということをやる場合は、MT 標準のカスタムフィールドよりもずっと楽に SQL が書けるようになるので、そういった需要にもオススメです。

さて、この AnotherCustomFields ですが、スタティック・パブリッシングについては自動的に拡張テンプレートタグを生成してくれるので問題ありませんが、DynamicMTML(ダイナミック・パブリッシング)には対応していません。

そこで、AnotherCustomFields のテンプレートタグを DynamicMTML でも使えるようにする方法の基本的な部分を紹介します。

なお、今回は、DynamicMTML が使える状態というのを前提に話を進めます。DynamicMTML のインストールには下記のページを参照してください。

続きを読む

Movable Type のスタティック・パブリッシングでループ以外でも odd と even を出力する方法

リストや表を出力するときに、交互に odd(奇数)や even(偶数)というクラス名などを付けたいことって結構ありますよね。

それを実現する方法としては、jQuery など JavaScript を使う方法が簡単ですが、Movable Type を使っているなら、できればスタティック・パブリッシングで直接出力しておきたいですよね。

MTLoop などの繰り返しタグの中であれば、<mt:If name="__odd__"> などで簡単にできますが、ループの中以外では少し工夫が必要です。

今回は、ループ以外でそれを実現する方法の紹介です。

続きを読む

『よくわかるPHPの教科書』感想

昨年話題になり、発売以降いまだに売れ続けているっぽい書籍『よくわかるPHPの教科書』(たにぐち まこと 著)を読みました。評判通り、すごく良かったです!

PHPって、すごく手軽に動的なWebページが作れるし、人気の CMS なども PHP で作られていることが多いですよね。

そのため、「さあ、PHP でも勉強しようか」という人は、「手軽に何かを作りたい人」が多いのだと思います。作りたいというか、目に見える実用的なことを実現したい、といった感じですね。

この本の良いところは、その実用的なものを実現するための必要最低限の知識に絞られて書かれていることだと思いました。この視点でまとめた谷口さんと編集者さん、なんてすばらしいんだろう!

この本を読み終えれば、すでに PHP と MySQL を連携させてちょっとしたことができるようになってしまいます。

続きを読む

DynamicMTML の MTIfLogin が動かなくなったときには

MT5.13 にアップグレードしてから、DynamicMTMLMTIfLogin がうまく動かなくなりました。もしそうなったら、mt-config.cgi に以下の記述があるか確認し、無ければ追記してみてください。

CookiePath /

僕はそれで解決しました(アルファサードの抜群のソーシャルサポートのおかげで解決できました。ありがとうございました)。

ただし、この設定は、Cookie の有効範囲を広げることになるので、その分セキュリティリスクが高まるという点は押さえておきましょう。

Movable Type のブログ記事一覧で下書き記事の背景色を変更する

当ブログで公開している「MTAppjQuery - Movable Type 5 の管理画面をjQueryでカスタマイズしやすくするプラグイン」について、以下のようなコメントを頂きました。

$.MTAppDebug();で記事一覧画面を見ると下書き保存の記事が赤くハイライトされます。この機能をMTAppDebugなしで実装することは可能でしょうか?
とても見やすく便利な機能です。

mtapp-draftentry

これを実現するのは簡単で、user.js に次のコードを書き入れればOKです。

続きを読む

はじめての DynamicMTML #14 - デバイスごとに表示を分ける MTIfUserAgent と MTUserAgent

今回は、サイトにアクセスしてきたユーザーエージェントによって条件分岐する MTIfUserAgent タグと、ユーザーエージェントの情報を出力する MTUserAgent タグを紹介します。

続きを読む

MTIfUserAgent と MTUserAgent 確認ページ

あなたのユーザーエージェント情報

サンプル

<mt:IfUserAgent wants="smartphone">
<p>スマートフォン:<$mt:UserAgent raw="1"$></p>
</mt:IfUserAgent>

<mt:IfUserAgent wants="keitai">
<p>携帯:<$mt:UserAgent raw="1"$></p>
</mt:IfUserAgent>

<mt:If tag="mt:UserAgent" eq="PC">
<p>PC : <$mt:UserAgent raw="1"$></p>
</mt:If>

<mt:IfUserAgent like="Chrome">
<p>Google Chrome 拡張機能はこちらからダウンロードしてください</p>
</mt:IfUserAgent> 

<mt:IfUserAgent like="Firefox">
<p>Firefox のアドオンはこちらからダウンロードしてください</p>
</mt:IfUserAgent>

上記コードの実行結果

スマートフォン:<$mt:UserAgent raw="1"$>

携帯:<$mt:UserAgent raw="1"$>

PC : <$mt:UserAgent raw="1"$>

Google Chrome 拡張機能はこちらからダウンロードしてください

Firefox のアドオンはこちらからダウンロードしてください