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

2019年08月25日

PHP : 画像を返す処理( readfile ) と画像を縮小する処理( GD )

この PHP を指定ファイル名で呼び出すと、幅を 100px で縮小された画像を返します( 無ければ縮小画像を返します )。

▼ 縮小
imagecopyresampled
<?php
$debug = false;

// *************************************
// 画像があるフォルダの相対パス
// *************************************
$image_dir = 'images';

// *************************************
// QueryString より対象の
// 画像ファイル名を取得
// *************************************
$file = "{$image_dir}/{$_GET['name']}";

// *************************************
// 画像が存在しない場合は、
// エラー用の画像をブラウザに返す
// *************************************
if ( !file_exists( $file ) || $_GET['name'] == '' ) {
	header("Content-Type: image/png");
	$file = "{$image_dir}/error.png";
	header('Content-Length: ' . filesize($file));
	readfile($file);
	exit();
}

// *************************************
// ファイルの MIME を取得
// *************************************
$mime = image_type_to_mime_type( exif_imagetype( $file ) );

// *************************************
// ファイル名から拡張子を除いた部分を
// 取得して、縮小ファイルのファイルの
// パスを作成する( .jpg )
// *************************************
$path_parts = pathinfo($_GET['name']);
$small_file = "{$image_dir}/s/{$path_parts['filename']}.jpg";

// *************************************
// 縮小ファイルがなければ作成して
// ブラウザに返す、あればそのまま返す
// *************************************
if ( !file_exists( $small_file ) ) {
	if ( ImageConvert( $image_dir, $_GET['name'], exif_imagetype( $file ) ) ) {
		header("Content-Type: image/jpeg");
		header('Content-Length: ' . filesize($small_file));
		readfile($small_file);
	}
	else {
		// 縮小に失敗した場合は、大きい元のファイルを返す
		header("Content-Type: {$mime}");
		header('Content-Length: ' . filesize($file));
		readfile($file);
	}
}
else {
	header("Content-Type: image/jpeg");
	header('Content-Length: ' . filesize($small_file));
	readfile($small_file);
}

// *************************************
// ファイルを縮小して保存
// *************************************
function ImageConvert( $dir, $filename, $type ) {

log_print( "$dir, $filename, $type" );

	// *************************************
	// ファイルの属性等を取得
	// *************************************
	$target	= getimagesize( "$dir/$filename" );

log_print( print_r($target,true) );
 
	// 現在のサイズ
	$width	= $target[0];
	$height	= $target[1];

	$width_new	= 100;	// 幅固定

	// *************************************
	// 縮小後の高さを計算で求める
	// *************************************
	$height_new = (int)( ($height/$width)*$width_new );

	$target_path = "$dir/$filename";

	$jpeg = false;

	// *************************************
	// 画像の種類によって、オブジェクト作成方法を選択する
	// *************************************
	if ( $type == 2 ) {
		$jpeg = @imagecreatefromjpeg( $target_path );
	}
	if ( $type == 3 ) {
		$jpeg = @imagecreatefrompng( $target_path );
	}
	if ( $type == 4 ) {
		$jpeg = @imagecreatefromgif( $target_path );
	}
	if ( $jpeg === false ) {
		return false;
	}

log_print( "現画像取得" );

	// *************************************
	// 新しい空のイメージ
	// *************************************
	$jpeg_new = @imagecreatetruecolor( $width_new, $height_new );
	if ( $jpeg_new === false ) {
		return false;
	}

log_print( "新しい画像取得" );

	// *************************************
	// サイズ変更して新しいイメージへ転送
	// *************************************
	$ret = @imagecopyresampled(
		$jpeg_new,
		$jpeg,
		0,
		0,
		0,
		0,
		$width_new,
		$height_new,
		$width,
		$height
	);

	if ( !$ret ) {
		return false;
	}

log_print( "縮小完了" );

	// *************************************
	// JPEG ファイルとして、
	// クオリティ 75 で出力
	// *************************************
	$path_parts = pathinfo($filename);
	$ret = @imagejpeg ( $jpeg_new, "$dir/s/{$path_parts['filename']}.jpg", 75 );
	if ( !$ret ) {
		return false;
	}

log_print( "ファイル出力完了:$dir/s/{$path_parts['filename']}.jpg" );

	return true;
}


// *************************************
// デバッグログ
// *************************************
function log_print( $msg ) {

	if ( !$GLOBALS['debug'] ) {
		return false;
	}

	file_put_contents("debug.log", $msg ,FILE_APPEND );
	file_put_contents("debug.log", "\n" ,FILE_APPEND );

}


?>





posted by at 2019-08-25 22:06 | PHP | このブログの読者になる | 更新情報をチェックする

2019年08月21日

PHP における標準的なテスト用アップロードのテンプレート

1) 一度にアップロードできるファイルは一つです。
2) PHP とおなじ場所にファイルをアップロードします( 本来は場所を変えるべきです )
3) アップロードできる最大サイズは 1048576 バイトです
4) アップロードするファイル名の日本語対応をしないので、uniqid() 関数でファイル名を作成しています
5) 拡張子は、アップロードされたファイルとおなじものを使用しています
6) PHP が $_FILE にセットする MIME が画像の場合は、HTML で画像を表示します
<!DOCTYPE html>
<html>
<head>
<meta content="width=device-width initial-scale=1.0 minimum-scale=1.0 maximum-scale=1.0 user-scalable=no" name="viewport">
<title>単純ファイルアップロード</title>
<meta charset="utf-8">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.3.1/css/bootstrap.css">

<link rel="stylesheet" href="https://lightbox.sakura.ne.jp/demo/two-section.css">
<style>
#extend {
	white-space: pre;
}
</style>
</head>
<body>
	<div id="head">
		<form 
			enctype="multipart/form-data"
			method="POST">
		
			<div>
				<input name="target" type="file" class="ml-4 btn btn-outline-primary">
				<input type="submit" name="send" value="アップロード" class="ml-4 btn btn-outline-primary">
				<a class="ml-4 btn btn-info" href="<?= $_SERVER["PHP_SELF"] ?>">GET 再読み込み</a>

				<input type="hidden" name="MAX_FILE_SIZE" value="1048576">
			</div>
		 
		</form>
	</div>

	<div id="extend">

<?php
if ( $_SERVER['REQUEST_METHOD'] == "POST" ) {

	// 拡張子を得る為に pathinfo
	$path_parts = pathinfo($_FILES['target']['name']);
	$file_name = uniqid() . ".{$path_parts['extension']}";

	// アップロード先の パス
	$upload = realpath("./");
	$upload .= DIRECTORY_SEPARATOR . $file_name;

	// アップロード先の パス の表示
	print "$upload\n";

	// PHP のアップロード処理( 一時ファイルを移動 )
	if ( move_uploaded_file($_FILES['target']['tmp_name'], $upload ) ) {
		print "<p>アップロードに成功しました</p>\n";
	}
	else {
		print "<p>アップロードに失敗しました</p>\n";
	}

	// アップロード情報の表示
	print_r( $_FILES );

	// 画像の場合は HTML で表示
	if ( stristr($_FILES['target']['type'],'image' ) != false  ) {
		print "<img src='{$file_name}'>";
	}
}

?>
	</div>

</body>
</html>





posted by at 2019-08-21 18:22 | PHP | このブログの読者になる | 更新情報をチェックする

2019年08月20日

PHP : MySQL から JSON 文字列を返す自作(テスト用) API テンプレート

access-control-allow-origin: * を出力して JavaScript から自由に読み込めるようにしています。

fetch_all を使用してJSON 文字列を一括で取得しています。
<?php
error_reporting( E_ALL & ~E_NOTICE );

session_cache_limiter('nocache');
session_start();

// 取得対象列
$list = "社員コード,氏名,フリガナ,所属,性別,作成日,更新日,給与,ifnull(手当,0) as 手当,ifnull(管理者,'') as 管理者";
// json encode オプション
$flg = 0x0000;

// JavaScript ajax 用
header( "Access-Control-Allow-Origin: *" );
header( "Content-Type: application/json; charset=utf-8" );

// DB 接続
$mysqli = new mysqli('サーバ', 'ユーザ', 'パスワード', 'データーベース');
if ( $mysqli->connect_error ) {
	// 接続失敗
	$json = array( "error" => "Connect Error ({$mysqli->connect_errno}) {$mysqli->connect_error}" );
}
else {
	// json encode オプション
	if ( $_GET["pretty"] != "no" ) {
		$flg = $flg | JSON_PRETTY_PRINT;
	}
	if ( $_GET["escape"] != "no" ) {
		$flg = $flg | JSON_UNESCAPED_UNICODE;
	}

	$mysqli->set_charset("utf8");

	// ~E_NOTICE なので、単純化
	if ( $_GET["name"] == "" ) {
		$query = "select {$list} from 社員マスタ";
	}
	else {
		$query = "select {$list} from 社員マスタ";
		// 条件オプション
		$query .= " where 氏名 like ?";
	}

	// SQL 準備
	$stmt = $mysqli->prepare($query);
	if ( $stmt === false ) {
		// SQL 失敗
		$json = array( "error1" => "$mysqli->error : {$query}" );
	}
	else {
		// バインドは変数で
		$param = "%{$_GET["name"]}%";

		// パラメータの数が一致しない場合の warning を出さない為の @ 抑制
		@$stmt->bind_param('s', $param );
		if ( false === $stmt->execute() ) {
			$json = array( "error2" => "$mysqli->error" );
		}
		else {
			// MySQL ネイティブドライバ限定(PHP 5.3.0 以降)
			$result = $stmt->get_result();
			if ( $result === false ) {
				$json = array( "error3" => "$mysqli->error" );
			}
			else {
				// DB 読み出し成功
				$json = $result->fetch_all( MYSQLI_ASSOC );
			}
		}
	}
}

print json_encode( $json, $flg );

?>




posted by at 2019-08-20 17:10 | PHP | このブログの読者になる | 更新情報をチェックする

2016年11月20日

ImageMagick を Windows(32ビット)の PHP で利用する


php 5.4 と 5.6 で動作確認しました

Windows + PHP で ImageMagick するには、こちらからダウンロードします(サイトが無くなっているのでインターネットアーカイブです)

ここからは、画像フォーマット用の DLL を手に入れる事ができます
( ImageMagick-6.8.0-vc9 というフォルダに 画像フォーマット用を含めた DLL が入っています )

最新は、pecl からダウンロードする事ができますが、画像フォーマットの dll が pecl 側には無いので、上記の消失サイトのインターネットアーカイブからダウンロードできるものをコピーして利用可能です。( pecl 側の全てのファイルを、ImageMagick-6.8.0-vc9 の中にコピーして上書きしたものを使用します )



※ phpinfo() で、NTS か TS かを確認します。( 上の例は NTS )

対象となる PHP 用の dll を配置して、php.ini で参照します(例:最初の画像)

それ以外にも、Windows 用の DLL がたくさん用意されているので、そのフォルダを適当に配置して、PATH 環境変数に追加して使用します。( php.ini の記述例 : extension=C:\php\imagick\php_imagick.dll )

正しく設定できれば、以下のようになります。(PHP Version 5.4.13)

※ pecl 側のみだと、ImageMagick supported formats が no values で空になります。


マニュアル

画像処理 [ImageMagick] : php オンラインマニュアル
<?php

// 画像
$image = new Imagick("1382552847536630.jpeg");

// トリミング
$image->cropImage(300, 300, 600, 200);

// 出力
$image->writeImage('crop.jpg');

?>
OK

関連する記事

PHP : 曲線が必要ならば ImageMagick ( 但し使えるかどうかはサーバー次第 )


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

2015年10月10日

PHPで、ベタベタな日付チェック。汎用的とも言うw

フォーマットチェックを兼ねて、explode で分割し、3つの配列になった場合のみ、checkdate しますが、引数にはそれぞれ +0 を書いておくといいですね。
// 【生年月日】
$ymd = explode("/", $_POST['birthday']);
if ( count($ymd) != 3 ) {
	$ErrorMessage .= "日付のフォーマットが正しくありません<br>";
}
else {
	if( !checkdate( $ymd[1]+0,$ymd[2]+0,$ymd[0]+0 ) ) {
		$ErrorMessage .= "日付が正しくありません<br>";
	}
}

大昔は、checkdate 部分は自作したものですが、各言語にそれなりのがあると思います。その際、必要な値を文字列から分割する必要があるので、どうしてもこういう発想になります。

正規表現使うより説明しやすいってのあります。


大昔は、2000年になる前の頃の事ですが、言語と呼ばれるものも未発達だったので、2000年がうるう年である事をチェックするのに、自分で書いた記憶のある人も世の中には沢山居ます。

通常は、100年で割り切れると、うるう年では無いわけですが、400年で割り切れる 2000年はうるう年なので、気を使ったもんです。
posted by at 2015-10-10 22:54 | PHP | このブログの読者になる | 更新情報をチェックする

2015年09月28日

PHP でカタカナのフリガナ入力のチェック



preg_match で、カタカナのみでなりたっているかどうかをチェックするならば、
if ( !preg_match("/^[ァ-ー]+$/u", $entry) ) {
    print "全てカタカナで入力して下さい";
}
本当は、30FF までがカタカナの範囲ですが、一般的には ァ〜ー で十分です。この範囲の文字が最初から最後まで続いていなかったらエラーです。

ただ、この場合ですと、半角と全角のスペースが許され無いので、一般的にフリガナとしては正しい仕様とするならば、"/^[  ァ-ー]+$/u" として、[] の中に半角と全角のスペースを追加します

また、逆のひらがなのふりがなの場合は、長音を追加する事が必要になります。


posted by at 2015-09-28 18:58 | PHP | このブログの読者になる | 更新情報をチェックする

2014年11月11日

TCPDF で罫線を引く

罫線を引く処理をまとめておけば、それは罫線だけ印刷された印刷物の上にデータを印刷する処理をアプリ側で実装できます(AddPage の後に毎回出力)。そのためには、少なくとも四角形と直線だけ引ける必要があります。

Line メソッド

二つの座標と、罫線の属性を定義した配列で直線を引けます

Line( $x1, $y1, $x2, $y2, array( "width" => 幅, "color" => array( 0, 0, 0 ) ) );
※  array( 0, 0, 0 ) は黒

Rect メソッド

四角形(4つの直線)を作成できます。塗りつぶしもかねているので、以下の書式は塗りつぶしをしない書式です

$line_style = array( "width" => 幅, "color" => array( 0, 0, 0 ) );
Rect( $x, $y, $w, $h, "D", array( "all" => $line_style ) );

4角形なので、4つを別々に定義できますが、all にすると一度に全て定義した事になります

// ***********************************************
// 罫線印字
// ***********************************************
function load_form( $pdf, $cur_position  ) {

	$left = 5;
	$top = 5;
	$width = 200;
	$height = 285;
	$line_height = $GLOBALS['line_height'];

	$line_style = array('width' => 0.1, 'color' => array(0, 0, 0) );
	$body_style = array( 
		'T' => $line_style, 
		'R' => $line_style, 
		'B' => $line_style, 
		'L' => $line_style );
	$pdf->Rect( $left, $top, 200, 285, 'D', $body_style );

	$line_top = $cur_position;
	for( $i = 0; $i < 30; $i++ ) {
		$ly = ($i-1) * $line_height + $line_top;
		$pdf->Line( $left, $ly, $left + $width, $ly );
	}

}


getLastH で現在のフォントでの文字高さを取得
	// ダミーで印字して、現在のフォントでの
	// 行の高さを決定する
	$pdf->SetXY( -100, -100 );
	$pdf->Cell(1, 0, " ", 0, 0, "L");
	$GLOBALS['line_height'] = $pdf->getLastH();



タグ:PHP line Rect
posted by at 2014-11-11 16:45 | PHP | このブログの読者になる | 更新情報をチェックする

2014年11月06日

フリーフォントを使って PHP 画像(GD)として埋め込むアクセスカウンターの DB 処理部分

アクセスカウンターの文字列表示部部下は、PHP 画像(GD)として埋め込むアクセスカウンターの画像出力部分の作成 を参照して下さい。

ここの get_value() 関数の戻り値を $img_text = get_value(); としてセットするだけです。
※ require_once( "example_db.php" ); も必要です

▼ example_db.php
<?php
function get_value() {

	// ***********************************************
	// グローバル変数
	// ***********************************************
	$server = 'サーバー';
	$db_name = 'データベース';
	$user = 'ユーザ';
	$password = 'パスワード';

	// ***********************************************
	// データベース接続
	// ***********************************************
	$connect = @ new mysqli($server, $user, $password, $db_name);
	if ($connect->connect_error) {
		return "----------";
	}

	$query = "update counter ";
	$query .= " set c1 = LAST_INSERT_ID( c1+1 ) ";
	$query .= " where rkey = 1";

	$result = $connect->query($query); 
	if ( !$result ) {
		return "==========";
	}

	$query = "select LAST_INSERT_ID()";

	$result = $connect->query($query); 
	if ( !$result ) {
		return "==========";
	}

	$row = $result->fetch_array(MYSQLI_BOTH);

	$ret = sprintf( "%010d", $row[0]+0 );

	return $ret;

}
?>

要点は、LAST_INSERT_ID( n ) を使用して、カウンター用のレコードの一つの列を更新して、その結果を取得して使用しているところです。

テストに使ったテーブル定義
CREATE TABLE `counter` (
  `rkey` int(11) NOT NULL,
  `c1` int(11),
  `c2` int(11),
  PRIMARY KEY (`rkey`)
)
この方法ですと、一つのテーブルの1レコードだけで複数のカウンターを管理できます。


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

フリーフォントを使って PHP 画像(GD)として埋め込むアクセスカウンターの画像出力部分の作成

アクセスカウンターのカウントアップは、データベースを使用すると簡単です。その部分は別に作成するほうが内容の重要な部分が明確になります。

数字画像を作成するのは、imagettftext を使用すれば容易です。文字に対していろいろ装飾するには、追加処理が必要ですが、ここでは単純に白い背景に対して黒い文字を『GN-キルゴ』というフォントで出力します。

※「GN-キルゴ」は、漫画『キルミーベイベー』のタイトルロゴをイメージしたフォントです

▼ 実際の PHP による画像表示



<?php
// ***********************************************
//
//  プログラム名 : アクセスカウンターの下準備
//  作   成   者 : lightbox
//  作   成   日 : 2014/10/31
//  ソ   ー   ス : UTF-8N
//
//  概要 : 指定したフォントで数字文字列画像作成
//
// ***********************************************
header( "pragma: no-cache" );
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );
header( "Cache-control: no-cache" );

// ***********************************************
// 使用するフォント
// ***********************************************
$font_path = "GN-KillGothic.ttf";
// ***********************************************
// 初期テキスト
// ***********************************************
$img_text = "8888888888";
// ***********************************************
// 幅と高さ
// ***********************************************
$width = 220;
$height = 30;

// ***********************************************
// キャンバス作成
// ***********************************************
$im = imagecreatetruecolor( $width, $height );

// ***********************************************
// 画像の背景色( 白 )
// ***********************************************
$white = imagecolorallocate( $im, 255, 255, 255 );
imagefilledrectangle($im, 0, 0, $width, $height, $white);

// ***********************************************
// 画像の文字色( 黒 )
// ***********************************************
$black = imagecolorallocate( $im, 0, 0, 0 );

// ***********************************************
// 使用不可サイトのチェック
// ***********************************************
$site = false;
$target_sites = array("http://toolbox.winofsql.jp/","http://logicalerror.seesaa.net/");
foreach( $target_sites as $target ) {
	$len = strlen( $target );
	$ref = substr( $_SERVER['HTTP_REFERER'], 0, $len );
	if ( $target == $ref ) {
		$site = true;
		break;
	}
}

// ***********************************************
// 【使用許可サイトの場合】
// ここに、DB から取得した文字列をセットする処理
// を入れる予定です
// ***********************************************
if ( $site ) {
	$img_text = "1235467890";
}

// ***********************************************
// フォントより文字列画像作成
// ***********************************************
imagettftext(
	$im,
	20,	// サイズ
	0,	// 角度
	5,	// x 座標
	25,	// y 座標
	$black,
	$font_path,
	$img_text);


// ***********************************************
// ブラウザへ出力
// ***********************************************
header('Content-Type: image/png');
imagepng($im);


// ***********************************************
// 後処理
// ***********************************************
imagecolordeallocate( $im, $black );
imagecolordeallocate( $im, $white );
imagedestroy($im);


?>

imagefilledrectangle は、その名の通り( FILL ) 四角形の塗りつぶし処理です。

関連する記事

フリーフォントを使って PHP 画像(GD)として埋め込むアクセスカウンターの DB 処理部分



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

2014年10月15日

PHP + GD : 四角形への DropShadow



グラデーション方法のサンプル

how to create thumbnail + shadow by this script
/* offset of drop shadow from top left */
define ( "DS_OFFSET" , 5 );
 
/* number of steps from black to background color /*
define("DS_STEPS", 10);
 
/* distance between steps */
define ( "DS_SPREAD" , 1 );
 
/* define the background color */
$background = array( "r" => 255 , "g" =>  255 , "b" =>  255 );

// 元のサイズに対して、影のサイズを含めた新しい幅と高さを決定します
$width = $o_width + DS_OFFSET ;
$height = $o_height + DS_OFFSET ;
$image = imagecreatetruecolor ( $width , $height );
 
/* determine the offset between colors */
$step_offset = array( "r" =>  ( $background [ "r" ] / DS_STEPS ), "g" =>  ( $background [ "g" ] / DS_STEPS ), "b" =>  ( $background [ "b" ] / DS_STEPS ));
 
/* calculate and allocate the needed colors */
$current_color = $background ;
for ( $i = 0 ; $i <= DS_STEPS ; $i ++) {
	$colors [ $i ] = imagecolorallocate ( $image , round ( $current_color [ "r" ]), round ( $current_color [ "g" ]), round ( $current_color [ "b" ]));
 
	$current_color [ "r" ] -= $step_offset [ "r" ];
	$current_color [ "g" ] -= $step_offset [ "g" ];
	$current_color [ "b" ] -= $step_offset [ "b" ];
}
 
// 一番外側の四角
imagefilledrectangle ( $image , 0 , 0 , $width , $height , $colors [ 0 ]);
 
// だんだん小さく、色を濃く 
for ( $i = 0 ; $i < count ( $colors ); $i ++) {
	imagefilledrectangle ( $image , DS_OFFSET , DS_OFFSET , $width , $height , $colors [ $i ]);
	$width -= DS_SPREAD ;
	$height -= DS_SPREAD ;
}
ボックスをすこしづづ小さく薄く描画して、最終的には、imageconvolution でガウス分布のぼかしを実行しています( ガウス分布のぼかしは、マニュアルのサンプルにあります )
<?php
$image = imagecreatetruecolor(180,40);

imagestring($image, 5, 10, 8, 'Gaussian Blur Text', 0x00ff00);
$gaussian = array(
	array(1.0, 2.0, 1.0),
	array(2.0, 4.0, 2.0),
	array(1.0, 2.0, 1.0)
);
imageconvolution($image, $gaussian, 16, 0);




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

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

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

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

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


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

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

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

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

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