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提供 (仮)

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 関係のエラー

  • Posted by: maRk
  • mt6 | myown
  • はてなブックマークに追加

ローカル環境の 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 のほうでインストールしなおしで使えるようになりました。

Index of all entries

BlogTop > Archives > 2015年5月 Archive

Feeds
Elsewhere

Action Streams

logo

Comment powered by DISQUS

Return to page top