読者です 読者をやめる 読者になる 読者になる

元フリーエンジニアライフ

Ruby on Rails とか MovableType とかAWSやってるフリーランスウェブエンジニアの記録でした。現在は法人成りしてIT社長。

プラグイン開発メモ

MovableTypeで記事公開時に処理したいとき

MailMugで、記事公開時にメルマガ配信ジョブ登録したかった。 公開時処理? 記事保存時 新規作成で公開 ステータスを公開に変更 一括編集 ステータスを公開に変更 指定日時公開 それぞれのコールバックについて。

MovableTypeでジョブキューによる非同期処理を行いたい

たとえばメルマガ配信は大変時間のかかる処理。 ただでさえSMTPが遅い上に大量にある コールバック内で送信までやるべきでない 中断した場合再開できる必要がある そこでジョブキュー。MovableTypeは標準でこの仕組みを備えている。

「【MT東京-06】Movable TypeプラグインカタログVol.1」 で話してきた

「【MT東京-06】Movable TypeプラグインカタログVol.1」 で話してきた・・・まぁ単なるLTなんですけども。

MT::Object で外部結合(OUTER JOIN)

MT::Objectで外部結合をする方法について。

アクションの結果の返し方によって、post_runコールバックの実行順が変わって嵌まったメモ

世界で今の僕ぐらいしか困ってないメモ。 build_pageしてテンプレートを処理して返すアクション(メソッド)と、テンプレート自体を返すアクションでは、template_param等のページ加工用コールバックと、post_runコールバックの実行順が変わる。 コールバッ…

MT::Objectでは精度仕様・桁数を指定したfloatは使えない

loat(9,6) で指定できそうでできない

MT::Mailで添付ファイル付きメールを送信する

MT::Mail自体には添付ファイル付のメールを組み立てる機能はないが、自分でヘッダーやBodyを作成してパラメータとして渡すことで、送信することはできる。 確認環境 MovableType 6.0 MIME::Entity (MIME-tools) MT5でも動くと思う・・・たぶん・・・ サンプルコー…

MT::Object での GROUP BY 集計関数の利用方法

微妙に痒いところに手が届かないものの、MT::Object->(count|max|avg|sum)_group_byというのがひっそりとある。 使い方は共通してこんなかんじ。hogeのところは便宜読み替えのこと。 my $group_iter = MT::Foo->hoge_group_by( $terms, { %args, group => […

MTのデータベース中の文字列を一括置換するスクリプト

SQLだとこんなかんじで・・・ UPDATE mt_entry SET entry_text=REPLACE(entry_text, "http://takeyu-web.com/", "/") WHERE entry_text IS NOT NULL; カスタムフィールド(複数行テキスト)だったらこんな感じで・・・ UPDATE mt_entry_meta SET entry_meta_vclob=…

MTのデータベースで任意のSQLを実行して結果を取得する

MT::Object->driver()を使う。 my $sql = "SELECT * FROM mt_entry WHERE entry_id = ?"; my @bind_values = ( 100 ); require MT::Object; my $driver = MT::Object->driver; my $dbh = $driver->rw_handle; my $sth = $dbh->prepare( $sql ); die $dbh->er…

MTプラグインで拡張したカラムにインデックスを貼ったりデフォルト値を設定したりするには

MTプラグインを作成する際、既存のオブジェクト(記事 MT::Entry とか)に、プラグイン独自の属性を追加する場合がある。 このとき、config.yamlでこんな風にするのが基本。 object_types: entry: myid: integer 追加したカラムにインデックスを貼ったり、デ…

MovableTypeのダッシュボードウィジェットを動的に追加する

ダッシュボードウィジェットを追加するには、プラグインのレジストリの以下ようなエントリを追加すれば良い。 applications: cms: widgets: sample: label: Sample Widget template: widget/sample.tmpl condition: |+ sub { 1 } handler: |+ sub { my ( $ap…

MovableTypeのダッシュボードウィジェットをプラグインから強制的に表示したり非表示にしたりする

ダッシュボードの表示・非表示設定は何処に入っているのか?ステータス切り替えアクションを追ってみた。 MT::App::update_widget_prefs を見ると、 $user->widgets であることがわかった。MT::Authorのwidgetsは 'widgets' => 'hash meta', のように定義さ…

MT::Object->search_by_meta() でカスタムフィールド以外での検索条件を追加する

MovableTypeでサイトを構築していると、カスタムフィールドを使ってあれやこれや結構ややこしいことをしたくなります。(JOINまみれになるのであんまりよくないのですが・・・) その場合、プラグインを作ったりするのですが、カスタムフィールドで検索するのに…

ダッシュボードの「サイト情報」に独自のグラフを追加する

MovableType 6.0 の新機能に「Site Stats」というものがありますね。 MTDDCの時「実はPlaggableでプラグインからグラフデータを追加することもできる」と聞いていたので、気になっていました。 Mtddc2013: Movable Type 6 Overview from Yuji Takayama …

プラグイン設定の入力チェックを行う方法メモ

必要になったので調べてみたメモ。

AngularJS + MovableType Data API でインクリメンタル検索してみた

Movable Type 6の新機能「Data API」。 藤本さんをはじめ皆様がすでにいろいろ試されていますが、僕も少し触ったのでメモ。 プログラマな人には好感触ですが、デザイナーさんにはいまいちピンとこないのではないでしょうか。 Data API自体はこれまでとは違っ…