BlogTop > Archives > 2015年5月 Archive
2015年5月 Archive
« 2015年4月 | 2015年5月 | 2015年6月 »
今月のいらんことしい(2015年5月)
今月(2015年5月)、ブログでカスタマイズした箇所をまとめたエントリです。
- LDR Pocket をスマートフォン表示時に表示されるようにした
- ウェブマスターツールの名称変更があったので、過去記事にその旨を追記した
以下のページを参照しました。
※ご注意:LDR Pocketはスマートフォン向けサービスのため、「LDR Pocket に登録するボタン」もスマートフォン向けページに掲載いただくようお願いいたします。
Google ウェブマスターツールのGoogle Search Console への名称変更は、2015/5/20 付け記事により告知されています。
今月のカスタマイズは以上です。以下に過去のカスタマイズ記録リストがあります
Movable TypeでoEmbed提供 (仮)
- 2015年5月12日 14:43
- Last update: May 12, 2015 14:43
- MTカスタマイズ | MovableType

oEmbed は、URLよりページに埋め込み可能なコードを得るのに便利なしくみです。Movable Typeのサイトでこれを提供するための方法(正式なものではありませんが)のメモです。
oEmbed については、以下のページが詳しく解説されています。
設計の概要は以下の通りです。
- URL情報から、必要な情報を取得するのに Data-API を使用する
- Data-API から、URLに対応する記事の情報を返すAPIのカスタムインデックステンプレートを作る。APIはとりあえず、PHPで作成する
- APIは外部サイトからのクロスドメインアクセスの都合上、 Access-Control-Allow-Originヘッダー 出力で対策しておく
- APIで返す内容は、パーマリンク、ページタイトル、ページコンテンツくらいでよい。タイプはrich(iframe 利用)にすることで、概要・記事で使用している画像サムネイル等も掲載できる
- ページコンテンツは EntryExcerpt (Data-API でのキーは excerpt)を利用する(毎記事適切な概要入力されていること前提として)
- iframe で返すためのアーカイブテンプレートが必要
- エンベッド用アーカイブをアーカイブテンプレートに追加する
- エンベッド用アーカイブのURIと元記事のURIを紐付けしないと呼び出しができない。このブログではパーマリンクに記事IDを含めていないため、そのままでは無理
- 元記事のURI(/path/to/archives/記事ファイルネーム/)は /path/to/archives/embed/記事ファイルネーム/ のように置換する方針とする
- /embed/* は robots.txt 等に検索でインデックスされないようにしておく
- エンベッド用アーカイブは、使用頻度からダイナミックパブリッシングのほうで採用。表示パフォーマンスは不利になるが、仕組上、エンベッド記事の実体(静的なファイル)はないので、全体の再構築のときに響かない
流れとして、もう少し簡単にまとめます。
- Data-APIをつかって、記事に関係するデータをJSON形式であらかじめ出力しておく
- 記事URLのリクエストから、記事情報を得る
- 必要な情報をパースして、oEmbedの仕様に合った形式で返す
- エンベッド用のアーカイブを用意してこれを iframe にて埋め込む形にする
概説になりましたが、oEmbed対応については以上です。
以下に API のテンプレートのサンプルがあります。実際に使用しているもので、直に記述している部分をテンプレートタグに置き換えしたものです。
※ このブログのURLの構成に基づいているので、そのままコピーしただけでは使えません。
※ Movable Typeのテンプレートタグが入っていますので、他のCMSでも同様にそのままの状態では使用できません。
※ Data-APIの同梱されていない Movable Typeでは動作しません。出力のJSONのキャッシュとして、bit-part/mt-plugin-DataAPIPHPCache を使っています。
※ 作成したのが Data-API のバージョンが 1のときのもので現在は v2 が出ていますが、/v1/ のフォルダがのこっていればそのまま使えています。
実際に使用している記事は以下にあります。WordPressでは、標準で、oEmbedのサイトはホワイトリスト方式になっていますので、wp_oembed_add_provider()に追加しておくなどします。
(上の記事は出力結果の例で、oEmbed の使用は、記事作成の画面のところで記事URLのコピーを貼付けします)
Perl Istack sp ptr 関係のエラー
ローカル環境の Perl にエラーが出て困っていたのでメモしておきます。
perl のエラーで Movable Type 管理画面が表示されないため、ログをみたところ、以下のようなものが記録されていた。
dyld: lazy symbol binding failed: Symbol not found: _Perl_Istack_sp_ptr, referer: http://localhost/MT6X/
Referenced from: $HOME/perl5/lib/perl5/darwin-thread-multi-2level/auto/Imager/Imager.bundle, referer: http://localhost/MT606/ [Fri Apr 17 23:52:21 2015] [error] [client ::1] Expected in: flat namespace, referer: http://localhost/MT6X/
(ユーザーのフォルダは $HOMEで置き換えてます。MTのフォルダ実際ははバージョンごとの任意の名称。どのバージョンの管理画面でもエラーで止まります)
macports を selfupdate した後、perl5 を upgrade このときに $ which perl でパスがなくなったので、インストールしなおし。 というところまでが、現象前での作業。
この Imager は、ユーザーのフォルダのほうに入れているものです。
いろいろ試したのですが効果のあったものだけ記しておきます。検索すると、環境変数を設定してあげる、というものなどあるのですが、環境変数の設定では改善されませんでした。
.bundle のつくバンドルがこの問題に該当するようで、これらを@INCの外に退避させると、管理画面が表示されるようになりました。
根本的な原因と正確な対処法は今のところ不明です。
なお Imager は、cpanm で入れた Imager を一旦削除 (App-pmuninstall 使用) してから、cpan のほうでインストールしなおしで使えるようになりました。
- Feeds
- Elsewhere
- logo