Home > MovableType

MovableType Archive

[MT][plugin]MT4.1でカスタムフィールドに入力した値を扱うプラグインの作り方がわかってきた。

まだまとめて書けるようなレベルではないですが
いまのしごとが落ち着いたら書きますね。

基本としては

$entry = $ctx->stash(’entry’);

とかでとってきたエントリーから

$meta = $entry->meta(’customfields’);

とかしてカスタムフィールド部分を一括でとってきて

$hoge = $meta->{hoge};

でhogeのところに「ベースネーム」で設定したフィールド名を入れてやるとさくっと取れます。

そうしたらもうカスタムフィールドでチェックボックスに印つけたエントリだけ抽出とか
他にも複数ブログで同じような内容のカスタムフィールドつかってポータルブログに混ぜて出したいときなんか

やりたい放題ですね。

またじっくりまとめます

今回はこの本のプラグイン開発の項目にべったりお世話になりました。
古い本ですが そもそも Perl すらまともに触ってなかった自分でもプラグインが作れるようになりましたので 基本の内容としては非常にためになりました。

ブログ自由自在 Movable Type 上級カスタマイズ術

Popularity: 61% [?]

[MobavleType][plugin]プラグインの作り方勉強シリーズPart1.

ちょっとMovableTypeで作りたいプラグインが出てきましたので勉強します
perl未経験なので そのレベルからのスタートです
10年前に買ったはずのらくだ本はどこにいった

まずはこちら 
Entry Category Entries  このプラグインを教材にさせていただいて テキストに書き込みしながら勉強していく様子をライブ感覚で記事にします
 

sub entries {
	#コンテキストと引数となんか
    my ($ctx, $args, $cond) = @_;
	#コンテキストの中のentryを$entryに取得する。取得できなければエントリがないエラー
    my $entry = $ctx->stash('entry')
	or return $ctx->_no_entry_error('MT' . $ctx->stash('tag'));
	#このエントリーのカテゴリーを取得する
    my $cat = $entry->category or return '';
	#引数「カテゴリー」に上で取ったカテゴリーをセットする
    $args->{category} = MT->version_number > 3.2 ? ['OR',[$cat]] : ['OR',$cat];
	#_hdlr_entriesに戻す(_hdlr_entriesとは?)
    MT::Template::Context::_hdlr_entries(@_);

	#_hdlr_entriesはMT/Template/ContextHandler.pmの中にあった
	#中を見る限り MTEntriesの本体なのかなあ
	#@_というのはperlの特殊変数で 普通に配列を示す[@]を[_]につけているもの
	#つまり[_]という名前の配列というイメージか
	#$_[0] とかいう感じで中身を取り出せるそうな
	#つまり $_[0] = $ctx $_[1] = $args  $_[2] = $cond ということかなあ
	#$cond は条件式らしいですがよくわかりません なにが入ってくるんだろうか
}

しかしMovableTypeのプラグイン開発教本みたいのってまったく出てませんね

Popularity: 49% [?]

[MT4][SQLite][PostgreSQL]テストサーバはSQLite、本番環境はPostgreSQL。

MT4でサイト構築してて、本番環境の情報が分からないまま突貫的に開発を進め、後で知らされてみればDBが違ったとかありますよね。あるあるー。

ということで今日はそのあたりで苦労しましたのでメモを残しておきます。
http://as-is.net/blog/archives/001023.html
こちらのMT Database Converterが使えればよかったのですがMT4に対応していなかったもので。

1.テスト環境でSQLiteのダンプを取る

$ pg_dump [database] > [filename].sql
$ sqlite [databasefile].db > [filename].sql

2.本番サーバにMT4を普通にインストールする
PostgreSQLで動くよう設定します。
DBには初期データのみが入っている状態になります。

3.本番サーバのPostgreSQLDBにアクセスし、

mtdb=# DELETE FROM mt_entry;

などして全テーブルを空っぽにします。
mt_entry_id などの末尾に「_id」がついているやつは連番管理テーブルみたいなのでDELETEできないようです。

4.テスト環境のSQLiteダンプデータを手作業で編集する。
SQL文で出力されているダンプデータをテキストエディタで開き、
「CREATE TABLE」系を削除。
あと「CREATE INDEX」も削除します。
「INSERT ~」のみ残すようなイメージです。

5.このダンプデータをインポートします。

$ psql [database] < [filename].sql

エラー無く終われば完了です。

6.確認
MTにログインできればOKです。
あとは画像やらプラグインやら、FTP経由で送り込んで移行完了になるとおもいます。

Popularity: 47% [?]

[MT4][Tips]エントリのソート順(created_on)の意味合いが変わっていた。

MTEntriesでsort_by=”created_on” とした上でエントリの公開日を操作してエントリのソートを実現したり、というのはCMS的用途ではよくあることかと思いますが、MT4で同じことしようとしたら上手くいかなかったのでメモっておきます。

まず、created_on とは本当にエントリが新規作成されたタイミングの日付であるらしい。DBの中身を見ると mt_entry の entry_created_on 。
で、エントリーの日付を公開日時に自動変更するプラグイン(MT4用)というのを入れてみたんですがなぜか上手く動かない様子。DB内が書き換わる様子もなし。

で、直感的ではありますが、DB内の公開日らしいカラム[entry_authored_on] がありましたのでこれかなと見当をつけて、sort_by=”authored_on” としましたら公開日でソートされましたのでめでたしめでたし。

これでエントリから公開日の秒単位をいじって並べ替え、みたいなことができるようになりました。

追記)
http://www.yamasita.jp/linkstation/2007/09/070929_post_49.html
デフォルト値が公開日なだけなのかなぁ
authored_onが無効になってて単純にデフォルト値になってるだけとかいう可能性も。
もっとentry_id とか別の項目でも試してみなければ

ソース見たら早いんでしょうけども

Popularity: 42% [?]

mt-rebuildがうまくいかない。

MovableTypeのはなし

kotonohaLinkプラグインが好きで
ちょくちょく使っているのですが
(StoryEditorから大変お世話になっております)

キーワード一覧CSVからkotonohaLink.datを生成して
同時にmt-rebuild.pl -all で自動再構築してキーワードリンクを一気に更新
という段取りのはずがどうもうまくいかなくて

普通に管理画面から再構築するとキーワードにリンクが表示されるんですが
mt-rebuild.pl から再構築するとさっぱり

グローバルフィルタってそんな仕組みやったっけ?
どのタイミングで反映されてるんやろか

ちょっと要調査
MT/WeblogPublisher.pm に rebuild 部分があったけども
どこをどうやったら mt-rebuild.pl を改造できるもんかもう一つはっきりしない
perl も使えるようになった方がええんやろなぁ

パール・ハーバー 特別版

Popularity: 26% [?]

  • Newer Entries
  • Home > MovableType

    Search
    Feeds
    Meta

    Pages (2): « 1 [2]

    Page Top