HOME > 情報備忘録 > MovableTypeの検索のシステムテンプレートをPHPに置き換える

MovableTypeの検索のシステムテンプレートをPHPに置き換える

MovableTypeではシステムテンプレート上でPHPはインクルードできない。 できないってかPHPとして動いてはくれない。

サイトのベースをPHPで作成していると、不便なのでphpからmt-search.cgiに file_get_contents()でアクセスして取得した内容を表示させるようにします。

テーマの設定はこんな感じ。

theme.yaml
  1.  index:
  2.   search_php:
  3.   label: SearchPHP
  4.   outfile: search.php
  5.   rebuild_me: 1
  6.  
  7.  system:
  8.   search_results:
  9.   description_label: Displays results of a search.
  10.   label: Search Results

インデックステンプレートとしてsearch_php.mtmlを作成しsearch.phpとして書き出されるようにします。 search.phpではGETパラメーターを解析してmt-search.cgiにアクセスします。

search.php
  1.  <?php
  2.  require_once('header.php');
  3.  
  4.  $path_to_cgi = 'http://www.kantenna.com/cgi-bin/mt504/mt-search.cgi';
  5.  $blog_id = $_GET['blog_id'];
  6.  $tag = urlencode($_GET['tag']);
  7.  $limit = isset($_GET['limit']) ? '&limit=' . $_GET['limit'] : '';
  8.  
  9.  $query = sprintf('blog_id=%s&tag=%s%s',
  10.   $blog_id,
  11.   $tag,
  12.   $limit
  13.   );
  14.  
  15.  $stream = file_get_contents($path_to_cgi . '?' . $query);
  16.  echo $stream;
  17.  
  18.  require_once('footer.php');
  19.  ?>

まぁこれだとタグしか対応できないので、foreachで回した方がよいですね。 文章の検索はgoogelさんにお任せなので頭になかったです。

search_results.mtmlには検索結果の表示部分だけを記述すればOKです。

ただしタグの場合のリンクなど、<$mt:TagSearchLink$>は使えないので 下記のように変更してやる必要があります。

HTML
  1.  <a href="<$mt:BlogURL$>search.php?blog_id=<$MTBlogID$>&tag=<$mt:TagName$>&limit=<MTSearchMaxResults>"><$mt:TagName$></a>

ちなみにMT使いの間ではmt-search.cgiは使わないのがセオリーっぽいですw

Movable Type 5実践テクニック

作者:丹羽 章 | 価格:¥ 2,940

関連ページ(1)

WEBプログラム覚書2011年2月17日 02:07

MovableTypeをCakePHPのViewとして使う

MovableTypeをCakePHPのViewとして使うMovableTypeのテーマを書いた。が、完成度低し。続きを読む >>

コメント

コメントする
Name
Email Address
URL
PAGE RANK
TIME LINE
2012
05.16

XMLHttpRequestってUserAgentを変更できないのかorz

セキュリティ的に禁止してるんだろうけどChromeでは出来ないのか、そもそもJavascriptの仕様として禁止されてるのかは不明。

2012
05.10

[PHP]文字列を1文字ごとタグで囲む

PHPで文字列を1文字ごとタグで囲みたいとき。

2012
04.25

WebフォントとJavascript

WebフォントとjQueryのテキストエフェクトプラグインを試してて気がついたんだけど API経由でWebフォント取得、設定してるとJavascriptの実行が早すぎて困るw

2012
04.12

[Ubuntu11.10]インストール直後にやっておけばよかったこと

Ubuntu 11.10 Desktop 日本語 Remixの場合、ユーザーのホームディレクトリにあるディレクトリ名が 日本語なのでターミナルでディレクトリ移動する場合、非常に扱いづらい。

2012
04.11

シンプルでカスタマイズしやすそうなコンテンツスライダー jQuery Slider2

シンプルでカスタマイズしやすそうなコンテンツスライダー jQuery Slider2

2012
04.06

CORESERVERからロリポのチカッパプランに移転してFTPとおさらばした。

CakePHP2系はPHPのバージョンがシビアなので、CORESERVERからロリポの チカッパプランに移転したんだけど、gitが利用できてなんだか得した気分です。

2012
04.04

[CakePHP2.0.x]FormHelper::input()の出力メモ

FormHelper::input()の出力がどのくらい変更できるかのテスト。

2012
03.28

[CSS]WindowsでLESS更新時に自動でコンパイルする設定方法

Windowsで.lessファイル更新と同時にコンパイルしてCSSを書き出す方法を2つほど。 簡単に開発環境を構築するためUbuntu入れたのに、Windowsの方が簡単だったりするから困るw

2012
03.27

[CSS3/HTML5]ページタイトルとかに使えそうな3Dっぽいテキストエフェクト

Code Padよりタイトルとかに使えそうなテキストエフェクト。それほどゴテゴテしてなくていい感じ。