かたつむりくんのWWW

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 のアドオンはこちらからダウンロードしてください

Custom Field GUI Utility 3.2.4 リリース

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

主に「Custom Field GUI Utilityでeditorが無いときにもメディアアップローダーが使えるようにする | モンキーレンチ」さんの内容を反映させた形になります。

モンキーレンチさん、ありがとうございます!

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

PowerCMS 3 のスニペットフィールド+MTAppjQuery で作ってみた個人情報入力画面

PowerCMS 3スニペット・カスタムフィールドMTAppjQuery プラグイン(←この MTAppjQuery のドキュメント、ちょっと古い…)を組み合わせて、個人情報を入力する感じの画面を作ってみました。

HTML 側は全部スニペット・カスタムフィールドで、動的な部分は MTAppjQuery の user.js で管理する感じです。

メールアドレスなどは、5つまで入力できて、ドラッグアンドドロップで順番を入れ替えることができます。郵便番号から住所を自動入力するところなども自作してみました。

まあ、たいしたことないといえばそれまでなんですけど、こんな感じの管理画面が「簡単に作れる」というのがポイントなんですね。

スニペット・カスタムフィールド、おもしろい!!(MTAppjQueryも我ながら便利!!w)

はじめての DynamicMTML #13 - 指定期間内の記事をリストアップする

今回は、MTSearchEntries を使って、指定期間内の記事をリストアップする方法を紹介します。

指定期間を設定する際に、開始日などは PHP の data 関数等を使うと楽に求められます。しかし、今回紹介する方法は、MT のテンプレート内に直接 PHP のコードを書くという MT らしからぬ方法かもしれませんが、時としてそれもメリットの1つになるかもしれません。

続きを読む

はじめての DynamicMTML #12 - 静的ファイルの PHP を実行する

前回の記事「はじめての DynamicMTML #11 - MT タグの中で PHP を実行する」の中で、「DynamicMTML では、テンプレート中の PHP も実行してくれます」と書きましたが、今回はそれについて少し詳しく見ておこうと思います。

続きを読む

はじめての DynamicMTML #11 - MT タグの中で PHP を実行する

これまで数回にわたって DynamicMTML で提供されているテンプレートタグの使い方を紹介してきました。今回はいったん雰囲気を変えて、MT タグの中で PHP のコードを実行する方法を紹介します。正確には「MT タグを実行する前に PHP を実行する」ということになります。

今回の記事では「クラシックブログ」のテーマを使って解説します。もちろん DynamicMTML が有効な環境というのが前提です。

続きを読む

『ソーシャルメディアマーケター美咲 新人担当者 美咲の仕事帳』感想

表紙の絵につられて思わず買った書籍ですが、すごく良かったです。

僕は、Facebook 関連のイベントに参加するとマーケティング色が強くて、それだけで疲労困ぱいになってしまうようなマーケティング素人ですが、この本は、そんな僕でもすらすら読み進めることができました。

本書は、次の4つの大きなテーマについて、新人ソーシャルメディアマーケター美咲と同僚の拓也が奮闘するというストーリーになっています。

  • 認知向上プロジェクト
  • サイト流入促進プロジェクト
  • フェイスブックプロジェクト
  • 効果測定プロジェクト

どのテーマについても、だらだらとプロジェクト全体像を描くのではなく、これらのテーマに挑む際に重要になるポイント、考え方、注意すべき点などに絞った物語になっているので、読んでいても頭の整理がつきやすくてとても助かりました。

この本は次のような人たちにオススメだと思います。

続きを読む

はじめての DynamicMTML #10 - クエリを処理する4つのテンプレートタグ

DynamicMTML には、クエリを処理するテンプレートタグがいくつか用意されています。今日は、そのうちの4つ、MTQueryLoop、MTQueryVars、MTSetQueryVars、MTQuery を紹介します。

なお、検索サイトやサイト内検索からの流入の際に、検索されたキーワードを処理する MTReferralKeywords というタグもあります。これについては、前回の記事を参照してください。

続きを読む

JavaScript で連番の文字列を簡単に作る

すごく基本的な内容ですが、たった今自分が必要だったので。

例えば、次のような5つの項目があったとします。

expensedtlname_1,expensedtlcount_1,expensedtlunitmoney_1,expensedtlmoney_1,expensedtlremarks_1

これらは枝番が _1 となっていますが、これを 1 〜 10 まで一気に作りたいという場面に出くわしました(まあ、10個くらいなら手作業でも…)。

そんなときは、次のコードを Firebug や Chrome の JavaScript コンソールにコピペして実行すれば一瞬で終わります。

var str = 'expensedtlname_*,expensedtlcount_*,expensedtlunitmoney_*,expensedtlmoney_*,expensedtlremarks_*';
var snippet = [], from = 1, to = 10, glue = ",";
for (var n = to + 1; from < n; from ++) {
    snippet.push(str.replace(/\*/g, from));
}
console.log(snippet.join(glue));

続きを読む

Movable Type のカスタムフィールド一覧ですべてのテンプレートタグをまとめてコピーしたい

Movable Type のカスタムフィールド一覧、テンプレートタグが表示されるようになったのは嬉しいんですけど、人間欲深いもので、今度はまとめてコピーしたくなったりします。

cflist

そんなときは、次のコードを Firebug や Chrome の JavaScript コンソールにコピペして実行すればOK。一覧の上に表示されます。

(function($){
var code = [];
$('pre.code').each(function(){
code.push($(this).text());
});
for (var i=0,n=code.length;i<n;i++){
code[i]=code[i].replace(/^[^<]+/m,'')
.replace(/\n/g,'')
.replace(/<([^\/>]+)\s\/>/,'<$$$1$>')
.replace(/</g,'&lt;')
.replace(/>/g,'&gt;');
}
$('#actions-bar-top').before('<div class="msg msg-success" style="line-height:1.5;"><pre>'+ code.join("\n") +'</pre></div>');
})(jQuery);

cflist_tags

あとは zen-coding とがでマークアップよろしくということで。あぁ、ラクダ。

カスタムフィールドの名前も一緒にコピーしたかったらこんな感じ。

続きを読む

AND 検索のテンプレートを修正しました

はじめての DynamicMTML #08 - MTSearchEntries (4) MTSplitVars を組み合わせて複数ワードのAND検索」の記事で紹介している AND 検索のテンプレートですが、別のところに流用したらうまく動きませんでした。

そのため、最後の出力の前に、一度 MTLoop を回してすべてのキーワードにマッチするものだけを、最終的な出力用のハッシュ変数 result にセットする方法に変更しました。

なお、このブログ記事の修正の際には、PowerCMSのワークフローリビジョンの機能を使いました。便利すぎてヤバいですw

はじめての DynamicMTML #09 - MTSearchEntries (5) MTReferralKeywords で検索サイトからの流入に対する関連記事を表示する

今回は、MTReferralKeywords というブロックタグを使い、Google、Yahoo!、bing、MSN、goo で検索してサイトに訪れたユーザーに対して、そのキーワードに関連する記事をリストアップする方法を紹介します。

今回のテンプレートの仕様

  • 検索サイトで検索されたキーワードを含むブログ記事一覧を表示する
  • 検索サイトからの流入のときだけ表示する
  • 現在のブログ内のブログ記事から検索する
  • 最新5件を表示する
  • 現在のブログ記事を除く

続きを読む

Custom Field GUI Utility の conf.ini ジェネレーターを作ってみた

Custom Field GUI Utility の設定ファイルを書き出す「conf.ini ジェネレーター(BETA)」というのを作ってみました。少しは設定ファイルを作るのが楽になるでしょうか。

あまり動作検証してないので適当に使ってみてください!

明日からまた、MT に戻ります。

Custom Field GUI Utility 3.2 リリース - WordPress 3.3 に対応

WordPress のカスタムフィールドを使いやすくするプラグイン「Custom Field GUI Utility 3.2」をリリースしました。 主な変更点は以下の通りです。

  • 投稿タイプごとに設定ファイルを変えられるようにしました。
  • カスタムフィールドのボックス名(「カスタムフィールド」というタイトルバーです)も変更できるようにしました。
  • オリジナルの必須チェックを廃止し、「exValidation」を同梱しました。must オプションで簡単に必須項目にすることもできますし、validation オプションで細かく設定することもできます。
    いつも大変お世話になっている 5509 さんに深くお礼申し上げます。
  • textfield、imagefield、filefield に placeholder を追加できるようにしました。
  • 細かい話ですが、imagefield のアップローダーの「×」をクリックしなくてもカスタムフィールドに値が入るようにしました。
  • PHP ファイルを1つにまとめました、すいません。

詳細は以下のページをご確認ください。がんばって書き換えました。

なお、今後は一部有料化を検討しています。たぶん 3,000円くらいですが、「有料化すると会社の手続き的に使いにくくなるな−」という声もあるので、それも含めて検討したいと思います(って前にも書いたような…)。

さて、また MT の人に戻りたいと思います。不具合がないことを祈ります…