0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

microCMS × PHP レンタルサーバーで構築

Posted at

お客さんのレンタルサーバー

クライアントが用意したレンタルサーバーへftp接続している状況でmicroCMSを使用したい、というパターンではJamstack構成を組めない。

PHPが使用できるなら、それが最も手っ取り早くmicroCMSを組むこめる方法かもしれない。

microCMSが提供しているSDKを利用するべきか

microCMSでは、PHPを使用するためのSDKが用意されている。
しかし、このSDKを利用するためには、composerというPHPのバージョン管理アプリが必要となる。

このcomposerを、人さまのサーバーに勝手にインストールしてよいはずがない。

SDKを利用せず、PHPのみの実装

SDKは使わないでPHPだけで書く方法はあって、それは簡単に実装できた。
一覧ページと個別ページだけなら、2ファイルだけで済む。
実際にはAPIキーの隠蔽は別途行うのでアクセス権限を設定したディレクトリに変数を格納しておく必要があるが、わかりやすく2ファイルだけにすると以下のようになる。

一覧ページ

archive.php
<?php
// API呼び出し
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://XXXXXXXXXXXXXXXXXXX.microcms.io/api/v1/news');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');

$headers[] = 'X-MICROCMS-API-KEY: XXXXXXXXXXXXXXXXX';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($ch);
curl_close($ch);

// 取得したら表示
$result = json_decode($response, true);
foreach ($result['contents'] as $contents) {
$url = 'http://XXXXXXXXXXXXX?id=' . $contents['id'];
ShowHtml(
$contents['title'],
$contents['createdAt'],
$url,
$contents['linkbool']
);
}

function ShowHtml($title, $createAt, $url, $linkbool)
{
echo '<meta name="viewport" content="width=device-width, initial-scale=1.0">';
echo '<h2>タイトル:' . $title . '</h2>';
echo '<p>作成日:' . $createAt . '</p>';
echo '<p>URL: <a href="' . $url . '">' . $url . '</a></p>';
echo '<p>詳細画面へ遷移boolian:' . $linkbool . '</p><hr>';
};
?>

記事ページ

single.php
<?php
$id = $_GET['id'];

// クエリパラメータを取得
if (isset($id) == true) {
GetContent($id);
} else {
echo 'Set query parameters';
}

function GetContent($id)
{
// API呼び出し
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://XXXXXXXXXXXX.microcms.io/api/v1/news/' . $id);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');

$headers[] = 'X-MICROCMS-API-KEY: XXXXXXXXXXXXXXXXXX';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($ch);
curl_close($ch);

// 取得したら表示
$result = json_decode($response, true);
ShowHtml(
$result['title'],
$result['createdAt'],
$result['updatedAt'],
$result['body']
);
}

// コンテンツ表示部
function ShowHtml($title, $createAt, $updatedAt, $body)
{
echo '<meta name="viewport" content="width=device-width, initial-scale=1.0">';
echo '<h2>タイトル:' . $title . '</h2>';
echo '<p>作成日:' . $createAt . '</p>';
echo '<p>更新日:' . $updatedAt . '</p>
';
echo '<article style="background-color: aliceblue;">本文:
' . $body . '</article>';
}
?>
0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?