• HOME
  • WORKS
  • SERVICE
  • ABOUT
  • BLOG
  • NEWS
  • RECRUIT
  • CONTACT

エンタメ特化型、心を動かすWeb制作。
まずは無料で相談いたします!

公開日:2025/04/15

ProcessWireで /site/templates/ 外から情報取得する方法|NEWS一覧ページを作る

多言語サイトや外部出力の仕組みを整えていく中で、「ProcessWireの情報を /site/templates/ ディレクトリ外から取得したい」というニーズが発生します。

今回は、NEWS一覧ページを独自のPHPファイルで構築する方法を、コード付きでご紹介します。

フルスタックサイト構築

想定するユースケース

  • /site/templates/ の外に設置された独立した news.php などのファイルで、NEWS一覧を表示したい

  • 表示件数・ページネーション対応

  • news-detail テンプレートを対象に取得

準備:ProcessWireの読み込み

<?php
// ProcessWire を読み込む
include('./processwire/index.php');

ProcessWireのインスタンスを使うためには、明示的に index.php を読み込む必要があります。

記事一覧取得のロジック

表示用のHTML部分は簡略化しています。

テンプレート名= TemplateName 

日時フィールド名=news_date

// 1ページに表示する記事数
$limit = 10;

// URLパラメータから `page` を取得(デフォルト: 1)
$currentPage = isset($_GET['page']) ? (int) $_GET['page'] : 1;

// 取得開始位置を計算
$start = ($currentPage - 1) * $limit;

// NEWSデータを取得
$newsPages = $pages->find("template=TemplateName, limit=$limit, start=$start, sort=-news_date");

// 総ページ数を算出
$totalPages = ceil($newsPages->getTotal() / $limit);

 

HTML表示(簡略)

<h1>NEWS一覧</h1>
<table>
<tr><th>日付</th><th>カテゴリ</th><th>タイトル</th></tr>
<?php foreach ($newsPages as $newsPage): ?>
<tr>
<td>
<?php
// news_dateがUNIXタイムスタンプであることを確認
$newsDate = $newsPage->news_date;
if ($newsDate) {
  try {
    // タイムスタンプを使用してDateTimeオブジェクトを作成
    $datetime = new DateTime();
    $datetime->setTimestamp($newsDate);  // UNIXタイムスタンプをセット
    echo $datetime->format('Y.m.d');  // 'Y.m.d' フォーマットで表示
  } catch (Exception $e) {
    // 変換に失敗した場合のエラーハンドリング
    echo "エラー: " . $e->getMessage();
  }
} else {
  echo "日付が設定されていません";
}
?>
</td>
<td>
<?php
$categories = $newsPage->news_category;
if (isset($categories[1])) {
  $item = $categories[1];
  echo "{$item->title}";
}
?>
</td>
<td><?php echo $newsPage->title; ?></td>
</tr>
<?php endforeach; ?>
</table>

 

ページネーション処理(簡略)

<?php if ($currentPage > 1): ?>
<a href="?page=<?php echo $currentPage - 1; ?>">前へ</a>
<?php endif; ?>

<span><?php echo $currentPage; ?> / <?php echo $totalPages; ?></span>

<?php if ($currentPage < $totalPages): ?>
<a href="?page=<?php echo $currentPage + 1; ?>">次へ</a>
<?php endif; ?>
  • ProcessWireは /site/templates/ の外からでもデータ取得が可能

  • include('./processwire/index.php'); で読み込み可能

  • テンプレートとフィールド設計が済んでいれば、外部出力も柔軟に対応

外部からJSONやHTML出力が求められるヘッドレスCMS用途でもこの方法は活用できます。

こんな方におすすめ

  • 独自のランディングページやLPからNEWS一覧を呼び出したい

  • sitemap.xmlやRSSをカスタム出力したい

  • ProcessWireを使った静的ジェネレーターの土台にしたい

気になった方はぜひ、夢双合同会社へお気軽にご相談ください!

まずは、お気軽にお問い合わせください。

関連記事

  • ProcessWireをおすすめする理由
  • ProcessWireでフォーム送信処理に必要な読み込みファイル
  • ProcessWireをサーバにアップロードする手順
  • ProcessWireを使ったブログ詳細ページの構築
  • ProcessWireにおけるsortパラメータ活用術とカスタムフィールドによる柔軟な並び順制御
  • 【SEO対策】ProcessWireで自動サイトマップ(インデックス)の生成と送信方法
  • ProcessWireでテスト環境と本番環境を一つの管理画面で!
  • ProcessWireで実現する!シンプルで自由な会員制サイト構築ガイド

Back to list

© 2019- MUSOU.