SQLの窓 イラストAC フリー素材

2013年12月18日

PHP : コマンドライン php(cli) で10進数と16進数の変換

たいていは calc.exe で行うと思いますが、PHP があるのならコマンドラインで作業している時は使ってみてもいいかもしれません。ただ、パスが通っていないと面倒なので、これで登録しておいてもいいですね。
rundll32.exe sysdm.cpl,EditEnvironmentVariables
コマンドプロンプトを開いたら、prompt $g で、プロンプトを短くしておいたほうがいい場合もあります。 さて。 16進数が 8559 の時
php -r print(0x8559);
注意するのは、最後のセミコロンを忘れない事と、スペースが必要な場合は、コマンド全体をダブルクォートで囲む事です。
php -r "print 0x8559;"
10進数が 34137 の時
php -r print(dechex(34137));
posted by at 2013-12-18 16:12 | PHP | このブログの読者になる | 更新情報をチェックする

2013年11月28日

PHP : file_get_contents と file_put_contents

PHP の簡易ログとしては file_put_contents が使われますが、表現方法をいろいろテストして行くと、PHP のバージョンを 5.4.0 以上にして json_encode を使いたくなります。

file_get_contents による比較的小さなファイルのダウンロード

デバッグ利用 : file_put_contents ( string $filename , mixed $data );

左右対称のような関数ですが、実際は実装された時期は同じではありませんでした。読み込みは http プロトコルがサポートされるので、早くから導入され使われています。

遅れて、file_put_contents が実装されましたが、この二つの関数を使う場面は思った以上にに多く、これらの例のような使い方をする事も多いかと思います。



posted by at 2013-11-28 19:54 | PHP | このブログの読者になる | 更新情報をチェックする

2013年11月24日

PHPでZIP圧縮 : phpMyAdmin の zip.lib.php を使う方法を 2006/08/03 に調べて記事書いてから、7年も経ってました。

こちらがその時の記事で、これはこれでそのままです。

今回 最新環境で動作確認しました。phpMyAdmin の当時のバージョンは 2.9.0 でしたが、今回は 4.0.9 です。そもそも、phpMyAdmin のライセンスは GNU GENERAL PUBLIC LICENSE Version 2 とあるのですが、今回コードを見たら単純に読み込んだら使え無いようになってました。

define("PHPMYADMIN", true);

こんな記述が必要です(zip.lib.php側でチェックを削除すればいいんですけど)。また、現在は file_get_contentsfile_put_contents があるので、簡単に記述できる上に他のサーバから読み込む事もできます。その場合は、Content-Length を取得するのに cURL 関数の処理が必要になります。

関連する記事

PHP : 指定ファイル名でダウンロード 『application/octet-stream』 と 『Content-disposition: attachment』

あと、このクラスはファイル単位でしか書庫化できません。フォルダごと行いたい場合は、やはり PEAR の File_Archive を使う必要があります。
<?php
$sep = substr( strtoupper( php_uname("s") ), 0, 7 ) == 'WINDOWS' ? ";" : ":";
set_include_path( ".$sep../pear/zip" );

require_once "File/Archive.php";

$files = array(
	 "../dotonet/RenameMdbTable"
);

$dest = File_Archive::toArchive("vbdotnet_RenameMdbTable.zip", File_Archive::toOutput() );

$dest->newFile("hanbaib.mdb"); 
$v = file_get_contents( "../upload_excel_mdb/hanbaib.mdb" );
$dest->writeData( $v ); 

File_Archive::extract( 
	$files, $dest
); 

?>

※ RenameMdbTable はフォルダです

で、zip.lib.php ではこうなります。
<?php
define("PHPMYADMIN", true);
require_once('zip.lib.php');

// 圧縮するファイル
$filename1 = 'mondai1.xlsx';
$filename2 = 'mondai2.xlsx';

// クラス作成
$zipfile = new zipfile();

// 追加
$zipfile->addFile( file_get_contents( $filename1 ), $filename1 );
$zipfile->addFile( file_get_contents( $filename2 ), $filename2 );

// zip をバイナリで変数にセット
$zip_buffer = $zipfile->file();

// ファイルに変数から書き込む
file_put_contents( "test.zip", $zip_buffer );

// メモリからダウンロードさせる
header( "Content-Type: application/octet-stream" );
header( "Content-disposition: attachment; filename=test.zip" );
header( "Content-Length: " . strlen($zip_buffer) );

// 処理終了
print $zip_buffer;
?>

test.zip をファイルとして書き込むと同時にブラウザでダウンロードさせています。


posted by at 2013-11-24 02:06 | PHP | このブログの読者になる | 更新情報をチェックする

2013年11月23日

「HTMLモード」と「PHPモード」という言葉

当然、<? 〜 ?> を PHPモードと呼び、その外側を HTMLモードと呼びます。HTML モードはそのまま出力されるので、ベースが HTML のように感じますが、PHP モードがベースで、その外側は全て print されているのが、ASP や PHP の考え方です。

で、この「HTMLモード」や「PHPモード」という言葉は昔から使っているので、あらためてどこで使われているのか探したところ、HTMLモードがなかなかみつからずに少し時間かかりましたが、以下に見る事ができました。

PHP: コメント - Manual

実際問題、明確に定義された言葉ではなさそうですが、初心者に説明する場合には、こういうワードは結構重要になって来るものです。



posted by at 2013-11-23 00:42 | PHP | このブログの読者になる | 更新情報をチェックする

2013年07月26日

IE拡張メニューで取得したテキストをメールで送る

ネットサーフィンしていて、気になるデータや URL をどこかにメモする事があると思いますが、お気に入りばかりを使っているとやたら増えて整理できないし、掲示板へ移動するのも面倒だったりします。

そこで、IE 拡張メニューを利用してブラウジング中にデータを特定のメールアドレスへ送ってしまおうというものです。
<?
header( "Content-Type: text/html; Charset=shift_jis" );
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );

foreach( $_POST as $Key => $Value ) {
	$_POST[$Key] = str_replace("\\\\", "\\", $Value );
	$_POST[$Key] = str_replace("\\'", "'", $_POST[$Key] );
	$_POST[$Key] = str_replace("\\\"", "\"", $_POST[$Key] );
}

mb_language( "ja" );
mb_internal_encoding("EUC-JP");
$subject = mb_convert_encoding( "ブラウザ報告(lightbox)", mb_internal_encoding(), "SJIS" );
$body = mb_convert_encoding( $_POST['text'], mb_internal_encoding(), "SJIS" );
$body = mb_convert_kana($body,'K','euc-jp');

$to = mb_convert_encoding( "宛先", "JIS", "SJIS" );
$to = "=?ISO-2022-JP?B?" . base64_encode($to) . "?= <宛先メールアドレス>";
$from = mb_convert_encoding( "差出人", "JIS", "SJIS" );
$from = "From: =?ISO-2022-JP?B?" . base64_encode($from) . "?= <差出人メールアドレス>";
mb_send_mail($to, $subject, $body, $from );

?>
メール送信が終了しました。
メール送信は、サーバーサイドの PHP を使って、sendmail で送信します。その為の最低限のコードは上記のようなコードですが、$_POST['text'] が本文ですので、name=text であるテキストエリアが IE 拡張メニューで表示した HTMLに存在すれば良いわけです。
<FORM
	method="POST"
	action="http://host/サーバ側処理.php"
>
<TEXTAREA
	name="text"
	style='width:790px;height:550px;'
></TEXTAREA>
<INPUT
	type="submit"
	name="send"
	value="送信"
><br>
</FORM>
上記のとおり、 テキストエリアは問題無いので、action を前述の PHP の URL に変更すれば良い事になります。メール送信の実際は、さくらインターネットでテストしましたが、うまくいっています。

更新履歴
2009-04-06 : 最初の投稿
2013-07-26 : 再検証前の本文更新

関連する記事

IE拡張メニューで取得したテキストをメールで送る(CDO.Message版)



posted by at 2013-07-26 14:13 | PHP | このブログの読者になる | 更新情報をチェックする

2013年06月15日

実用的かどうかは置いておいて、修正画面のデータの初期表示について

関連する記事

実用的かどうかは置いておいて、2ページ画面遷移の更新アプリの雛形について


データフィールドには、check.php からのリダイレクト用に $_GET を埋め込んであります。ここでは、name(アカウント) が主キーになるので、その値で DB を読み込んで、結果を $_GET にセットしています。
<?php
header( "Content-Type: text/html; Charset=utf-8" );
header( "pragma: no-cache" );
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );
header( "Cache-control: no-cache" );

db_action();

function db_action() {

	if ( trim( $_GET['name'] ) == "" ) {
		$_GET['err'] = "名前が指定されていません";
		return;
	}

	$connect = mysql_connect( "localhost", "root", "password" );
	if ( $connect === FALSE ) {
		$_GET['err'] = "データベースの接続に失敗しました";
		return;
	}
	mysql_set_charset('utf8');

	mysql_select_db( "lightbox", $connect );

	// $_GET['name'] は安全であるという前提
	$query = "select * from transition where name = '{$_GET['name']}'";
	$rows = mysql_query( $query, $connect );
	if ( $rows === FALSE ) {
		$_GET['err'] = "データベースに正しくアクセスではませんでした";
		return;
	}
	$row = mysql_fetch_array( $rows );
	if ( $row === FALSE ) {
		$_GET['err'] = "対象データが存在しませんでした";
		return;
	}

	$_GET['comment'] = $row['comment'];
	
	mysql_close( $connect );

}

?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script>

function check() {

	var pass = document.getElementById("pass").value;
	var text = document.getElementById("comment").value;

	if ( pass.trim() == "" ) {
		alert("パスワードが未入力です");
		document.getElementById("pass").focus();
		return false;
	}
	if ( text.length < 20 ) {
		alert("20文字以上の入力をお願いします");
		document.getElementById("comment").focus();
		document.getElementById("comment").select();
		return false;
	}

}
</script>
</head>
<body>
<span style="color:#ff0000;font-weight:bold;"><?= $_GET['err'] ?></span>
<form action="check.php" method="post" onsubmit="return check();"> 
	名前 <br>
	<input
		type="text"
		id="name"
		name="name"
		readonly
		style="background-color:#c0c0c0;"
		value="<?= $_GET['name'] ?>"><br> 

	備考 <br>
	<textarea
		id="comment"
		name="comment"
		style="width:400px;height:100px;"
		><?= $_GET['comment'] ?></textarea><br>

	パスワード<br>
	<input
		type="password"
		id="pass"
		name="pass"><br>

<br>
<hr>

	<input type="submit" name="submit" value="送信"> 
</form>
</body>
</html>




posted by at 2013-06-15 18:44 | PHP | このブログの読者になる | 更新情報をチェックする

実用的かどうかは置いておいて、2ページ画面遷移の更新アプリの雛形について

入力チェックを JavaScript と PHP と双方で行っています。

JavaScript の入力チェック

JavaScript のチェックは、フォームの onsubmit イベントを使用するオーソドックスなものです。( 文字列に対する trim メソッドは、現在では一般的に実装されていると思います )

JavaScript のエラー処理

入力エラーが発生すると、送信処理をキャンセルして、focus メソッドで、フォーカスをそのフィールドに移動させます。また、入力値が残るようなエラーの場合は、select メソッドを実行します

エラーが無ければ、check.php へデータを送信します。

PHP の入力チェックとエラー処理

check.php では、再度エラーチェックを行って、エラーがあれば、現在の値を url にセットした上で エラーメッセージも付加して form.php へリダイレクトします。

リダイレクトされた場合は、入力画面へ戻って、入力値は保持され、エラーメッセージが表示されます

正常終了後の処理

check.php でエラーがなければ、入力値を使って更新処理を行って、更新が正常終了したメッセージを check.php のページで行っていますが、このままでは F5 の再表示で再投稿に可能性があるので、通常は最終ページを作成してそこにリダイレクトします。

正常終了後の第三ページ

最終リダイレクト先は、form.php でもかまいませんが、第三ページを作成したほうが簡単になります。

ここでの入力画面の前提

この、form.php では、他のページから名前のみを GET で指定して画面遷移して来る事を想定しているので、第三ページを作成するほうが良いと思います。

第三ページでは、その他のページや元のページへナビゲートする為のリンクを用意するといいと思います

入力ページ(FORM)
<?php
header( "Content-Type: text/html; Charset=utf-8" );
header( "pragma: no-cache" );
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );
header( "Cache-control: no-cache" );

?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script>

function check() {

	if ( !confirm("更新しますか?") ) {
		return false;
	}

	var pass = document.getElementById("pass").value;
	var text = document.getElementById("comment").value;

	if ( pass.trim() == "" ) {
		alert("パスワードが未入力です");
		document.getElementById("pass").focus();
		return false;
	}
	if ( text.length < 20 ) {
		alert("20文字以上の入力をお願いします");
		document.getElementById("comment").focus();
		document.getElementById("comment").select();
		return false;
	}

}
</script>
</head>
<body>
<span style="color:#ff0000;font-weight:bold;"><?= $_GET['err'] ?></span>
<form action="check.php" method="post" onsubmit="return check();"> 
	名前 <br>
	<input
		type="text"
		id="name"
		name="name"
		readonly
		style="background-color:#c0c0c0;"
		value="<?= $_GET['name'] ?>"><br> 

	備考 <br>
	<textarea
		id="comment"
		name="comment"
		style="width:400px;height:100px;"
		><?= $_GET['comment'] ?></textarea><br>

	パスワード<br>
	<input
		type="password"
		id="pass"
		name="pass"><br>

<br>
<hr>

	<input type="submit" name="submit" value="送信"> 
</form>
</body>
</html>



更新ページ
<?php

if ( trim($_POST['name']) == "" ) {
	$url = "form.php?";
	$url .= "name=" . urlencode($_POST['name']);
	$url .= "&comment=" . urlencode($_POST['comment']);
	$url .= "&err=" . urlencode("名前が未入力です");
	header( "Location: $url" );
	exit();
}

if ( strlen($_POST['pass']) > 20 ) {
	$url = "form.php?";
	$url .= "name=" . urlencode($_POST['name']);
	$url .= "&comment=" . urlencode($_POST['comment']);
	$url .= "&err=" . urlencode("パスワードは、20文字以内で入力してください");
	header( "Location: $url" );
	exit();
}


?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
更新が終了しました
</body>
</html>



posted by at 2013-06-15 16:45 | PHP | このブログの読者になる | 更新情報をチェックする

2013年01月18日

JavaScriptライブラリ内で固有のcharsetを使う場合の注意

コメントとかでは問題は出無いと思いますが、文字列にダイレクトで使ってしまうと、別の charset のページから見るとただのバイナリデータになります。扱いは、ブラウザによって違うと思いますが、ブラウザの前で見ている人、または意識せずにそのライブラリを使ってしまった人にとっては未知のトラブルになります。

そのようなライブラリを使う場合は、呼び出すほうのページと同じキャラクタセットをSCRIPT 要素の charset 属性で指定してやれば正しく使えます。

JavaScript : 外部呼出しにおける SCRIPT要素の charset 属性

しかし、自分で作ったライブラリであれば、特に問題は出ませんが、他の人が使う場合は気が付かない場合もあるので、そのような指定なしに正しく動作させる工夫をJavaScript のライブラリ側で行う事ができます。

JavaScript : 外部呼出しにおける SCRIPT 内で呼び出し元の charset に依存しない日本語の書き方


このようにして使われるコードは unicode ですが、変換には、utf8ToUnicode という関数を使っています。これは、UTF-8 to Code Point Array onverter in PHP より取得できます。

使い方は以下のようになります
if ( $_POST['send'] == 'unicode' ) {
	$text = mb_convert_encoding( $_POST['text'], "UTF-8", "shift_jis" );
	$a = utf8ToUnicode($text);
	$text = "";
	for( $i = 0; $i < count($a); $i++ ) {
		$text .= "\u". dechex($a[$i]);
	}
}
if ( $_POST['send'] == 'HTML数値文字列参照' ) {
	$text = mb_convert_encoding( $_POST['text'], "UTF-8", "shift_jis" );
	$a = utf8ToUnicode($text);
	$text = "";
	for( $i = 0; $i < count($a); $i++ ) {
		$text .= "&amp;#". $a[$i] . ";";
	}
}
実行はこちらから『HTML数値文字列参照』ボタンと『unicode』ボタン


続きを読む
posted by at 2013-01-18 20:36 | PHP | このブログの読者になる | 更新情報をチェックする

2012年12月03日

ログイン画面からリダイレクトしてアクセストークンを取得するまでの簡単な PHP コード

実用にはなりませんが、とりあえずいろいろテストするのに、Facebook や Google だと時間がかかってしょうがないのです。まあ、こんなものでも PHP 的なコードは結構満載なので、学生の修行ツールにはなります。

エラーメッセージについて、イントラネットの場合はユーザができる限り最短時間で処理できる事を考えますが、一般の WEB の場合セキュリティの意味から、ユーザが存在する事を明示する事を避ける為に、『ユーザまたはパスワードが正しくありません』とするのが良いと思います。
<?
session_start();

//$_SESSION['login'] = '';
//$_SESSION['client_id'] = '';

$login_script = 'http://localhost/lightbox/work/api/login.php';

// 入力では無い
if ( $_SERVER['REQUEST_METHOD'] == 'GET' ) {
	// ログインされていない
	if ( $_SESSION['login'] != 'yes' ) {
		// アプリケーション ID が指定されていない
		if ( $_GET['client_id'] != 'abcdefg0123456789' ) {
			// エラーによるリダイレクトでは無い
			if ( $_GET['er'] != '000' ) {
				// エラーコード 000 でリダイレクト
				header("Location: {$login_script}?er=000");
				exit();
			}
		}
	}
	// ログインされている
	else {
		// ログイン時のアプリ ID と一致しない
		if ( $_GET['client_id'] != $_SESSION['client_id'] ) {
			// ログアウトする
			$_SESSION['login'] = '';
			$_SESSION['client_id'] = '';
			// エラーコード 000 でリダイレクト
			header("Location: {$login_script}?er=000");
			exit();
		}
	}
}

// 入力である
if ( $_SERVER['REQUEST_METHOD'] == 'POST' ) {
	if ( $_SESSION['login'] != 'yes' ) {
		// ユーザが正しく無い
		// 一般 WEB では、この場合のメッセージは、『ユーザまたはパスワードが正しくありません』とする
		if ( $_POST['login_user'] != 'lightbox' ) {
			header("Location: {$login_script}?er=001&client_id={$_GET['client_id']}");
			exit();
		}
		// パスワードが一致しない
		// 一般 WEB では、この場合のメッセージは、『ユーザまたはパスワードが正しくありません』とする
		if ( hash_hmac('sha256', $_POST['login_pass'], "r101" ) != 'aba283b0fece03ad2e0394cdbd6d163a2c45bbdb3b3697979e8f3c0fde3e939d' ) {
			header("Location: {$login_script}?er=002&client_id={$_GET['client_id']}");
			exit();
		}
	
		// ログイン終了
		$_SESSION['login'] = 'yes';
		$_SESSION['client_id'] = $_GET['client_id'];
		// アプリケーション ID を引き渡して『許可画面』に遷移する
		header("Location: {$login_script}?client_id={$_GET['client_id']}");

	}
}

// ログインしている
if ( $_SESSION['login'] == 'yes' ) {
	// アプリ ID がある
	if ( $_SESSION['client_id'] != '' ) {
		// 許可ボタンを押した
		if ( $_POST['allow_button'] != '' ) {
			header("Location: {$login_script}?access_token=アクセストークン&client_id={$_GET['client_id']}");
		}
	}
}


?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>API ログイン</title>
</head>
<body>
<?
if ( $_GET['er'] != '' ) {
	if ( $_GET['er'] == '000' ) {
		print '<span style="color:red;font-weight:bold;">処理できません</span>';
	}
	if ( $_GET['er'] == '001' ) {
		print '<span style="color:red;font-weight:bold;">ユーザが正しくありません</span>';
	}
	if ( $_GET['er'] == '002' ) {
		print '<span style="color:red;font-weight:bold;">パスワードが正しくありません</span>';
	}
}
if ( $_SESSION['login'] != 'yes' ) {
	require_once('pass_1.php');
}
else {
	if ( $_SESSION['client_id'] != '' ) {

		if ( $_GET['access_token'] != '' ) {
			print "アクセストークン処理完了";
		}
		else {
			// 許可ホタンを押す前
			require_once('pass_2.php');
		}

	}
}

?>
<pre>
<? //print_r($_SESSION)  ?>
</pre>

</body>
</html>

パスワードは、aba283b0fece03ad2e0394cdbd6d163a2c45bbdb3b3697979e8f3c0fde3e939d を変えて埋め込みます。実際のパスワードを埋め込む必要の無い書き方ですが、hash_hmac を使わないでインターネットに貼ってしまうと、辞書があると逆引きできてしまうので注意です(パスワードがバレます)。

以下、画面定義
<!-- ログインフォーム -->
<form method="post">
ユーザ <input name="login_user" type="text"/> <br />
パスワード  <input name="login_pass" type="password"/> <br />
<input name="login_button" type="submit" value="ログイン"/> <br />
</form>

<!-- 許可フォーム -->
<form method="post">
<input name="allow_button" type="submit" value="許可する"/> <br />
</form>

pass_1.php と pass_2.php です。


タグ:PHP
posted by at 2012-12-03 13:22 | PHP | このブログの読者になる | 更新情報をチェックする

2012年05月12日

Google+ API の PHP サンプルの実行

http://code.google.com/p/google-api-php-client/ から API をダウンロードして、API Console の情報を使ってアクセスすると、Google+ での投稿データが表示されました。

リダイレクトする URL は、登録したものしか使えませんでした。locaohost で、oauth2callback.php を作成して実行してみました。

oauth2callback.php
<?php
require_once 'google-api-php-client/src/apiClient.php';
require_once 'google-api-php-client/src/contrib/apiPlusService.php';
session_start();

$client = new apiClient();
$client->setApplicationName('Google+ PHP Starter Application');
// Visit https://code.google.com/apis/console?api=plus to generate your
// client id, client secret, and to register your redirect uri.
$client->setClientId('数字部分');
$client->setClientSecret('シークレットなので秘密です');
$client->setRedirectUri('http://localhost/lightbox/oauth2callback.php');
$client->setDeveloperKey('APIキー');
$plus = new apiPlusService($client);

if (isset($_GET['code'])) {
  $client->authenticate();
  $_SESSION['token'] = $client->getAccessToken();
  header('Location: http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']);
}

if (isset($_SESSION['token'])) {
  $client->setAccessToken($_SESSION['token']);
}

if ($client->getAccessToken()) {
  $activities = $plus->activities->listActivities('me', 'public');
  print 'Your Activities: <pre>' . print_r($activities, true) . '</pre>';

  // The access token may have been updated.
  $_SESSION['token'] = $client->getAccessToken();
} else {
  $authUrl = $client->createAuthUrl();
  print "<a href='$authUrl'>Connect Me!</a>";
}




タグ:google Google+
posted by at 2012-05-12 15:55 | Comment(0) | PHP | このブログの読者になる | 更新情報をチェックする
Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。

Seesaa のページで、アーカイブとタグページは要注意です。タグページはコンテンツが全く無い状態になりますし、アーカイブページも歯抜けページはコンテンツが存在しないのにページが表示されてしまいます。

また、カテゴリページもそういう意味では完全ではありません。『カテゴリID-番号』というフォーマットで表示されるページですが、実際存在するより大きな番号でも表示されてしまいます。

※ インデックスページのみ、実際の記事数を超えたページを指定しても最後のページが表示されるようです

対処としては、このようなヘルプ的な情報を固定でページの最後に表示するようにするといいでしょう。具体的には、メインの記事コンテンツの下に『自由形式』を追加し、アーカイブとカテゴリページでのみ表示するように設定し、コンテンツを用意するといいと思います。


※ エキスパートモードで表示しています

アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります

<% if:page_name eq 'archive' -%>
アーカイブページでのみ表示される内容
<% /if %>

<% if:page_name eq 'category' -%>
カテゴリページでのみ表示される内容
<% /if %>

<% if:page_name eq 'tag' -%>
タグページでのみ表示される内容
<% /if %>
この記述は、以下の場所で使用します