Movable Typeでphpを使って検索ページを作成する

以前にMovable Typeでphpを使用する記事を投稿しましたが、phpを使って簡単な記事検索の実装を試してみます。

サンプルコード

まずは検索フォームですが、今回は記事タイトルを文字列で検索する想定で行ってみます。

<form action="search.php" method="get">
  <input type="search" name="s">
  <button>検索</button>
</form>

次に検索結果ページです。
出力ファイル名をsearch.phpとした上で、記事情報と検索文字列の取得を行います。

<?php
<MTSetVarBlock name="total"><MTBlogEntryCount></MTSetVarBlock>
// 記事情報を変数に格納
$articles = array(
<mt:Entries lastn="$total">
  array(
    'title' => '<MTEntryTitle encode_php="q">',
    'category' => '<MTEntryCategories glue=", "><MTCategoryLabel encode_php="q"></MTEntryCategories>'
  )<MTUnless name="__last__">,</MTUnless>
</MTEntries>
);

// 検索で使用する文字列を取得
$search_query = isset($_GET['s']) ? $_GET['s'] : false;
$safe_search_query = htmlspecialchars($search_query, ENT_QUOTES, 'UTF-8');
?>

検索結果一覧を表示する部分です。

<?php
foreach ($articles as $article) {
  // 検索文字列が空または検索文字列を含む記事の場合は出力
  if(!$search_query || strpos($article['title'], $search_query) !== false) {
    echo '<h1>' . htmlspecialchars($article['title']) . '</h1>';
  }
}
?>

これで文字を入力せずに検索した場合、すべての記事が表示されます。

<h1>記事C</h1>
<h1>記事B</h1>
<h1>記事A</h1>

「A」という文字で検索すると、記事Aのみが表示されます。

<h1>記事A</h1

参考サイト

このエントリーをはてなブックマークに追加

関連記事

コメントを残す

メールアドレスが公開されることはありません。
* が付いている欄は必須項目です

CAPTCHA


コメントが承認されるまで時間がかかります。

2024年7月
 123456
78910111213
14151617181920
21222324252627
28293031