SQLの窓

2015年01月21日


VB.net(C#) : Picasa より指定したアルバム内の画像の URL 一覧を取得する

▼ バッチビルドキット


▼ クライアントライブラリのダウンロード
google-gdata - .NET library for the Google Data API

google-gdata : Google の C# サンプル : PhotoBrowser

Google_Data_API_Setup_1.9.0.0.msi をダウンロードしてインストールすると、
Google_Data_API_Setup_2.2.0.0.msi で再検証しました

C:\Program Files\Google\Google Data API SDK\Redist\Google.GData.Client.dll
C:\Program Files\Google\Google Data API SDK\Redist\Google.GData.Photos.dll
C:\Program Files\Google\Google Data API SDK\Redist\Google.GData.Extensions.dll

となるはずなので、カレントディレクトリにコピーして、

vbc.exe /r:Google.GData.Client.dll,Google.GData.Photos.dll,Google.GData.Extensions.dll ソースコード.vb

でビルドして実行します
Imports Google.GData.Client
Imports Google.GData.Photos

Module Module1

	Sub Main()

		' --------------------------------------------------
		' 引数の処理( ユーザ パスワード アルバム名 )
		' --------------------------------------------------
		' SQL作成に必要なテーブル名を引数から取得する
		' 空白を指定したい場合は、"文字列 文字列" のように指定する
		Dim arguments As String() = Environment.GetCommandLineArgs()
		' 引数は3つのみ許可
		if arguments.Length <> 4 then
			Console.WriteLine("引数を指定して下さい")
			Return
		end if

		' --------------------------------------------------
		' 認証処理
		' --------------------------------------------------
		' Picasa サービスにアプリケーション名を設定
		' companyName-applicationName-versionID で適当に設定
		Dim picasaService As PicasaService = New PicasaService("mymymy-photos-v1")

		' 認証情報を設定
		picasaService.setUserCredentials(arguments(1), arguments(2))

		' トークン文字列
		Dim authToken As String = Nothing

		' トークンの取得
		Try
			authToken = picasaService.QueryClientLoginToken()
		Catch ex As Exception
			Console.WriteLine( ex.Message )
			Exit Sub
		End Try

		' トークンの表示( ここでは使用しません )
		Console.WriteLine( "▼ トークン" )
		Console.WriteLine( authToken )

		' --------------------------------------------------
		' アルバムの処理
		' --------------------------------------------------
		' アルパム一覧を取得する為の要求オブジェクトを作成
		Dim query As AlbumQuery  = New AlbumQuery()

		' ユーザ名より、呼び出し先を設定
		query.Uri = New Uri(PicasaQuery.CreatePicasaUri(arguments(1)))

		' 一覧の取得
		Dim picasaFeed As PicasaFeed = picasaService.Query(query)
		Dim targetEntry As PicasaEntry = Nothing

		Console.WriteLine( "▼ 一覧の表示" )
		' 一覧の表示
		if (Not picasaFeed is Nothing) and (picasaFeed.Entries.Count > 0) then
			For Each entry As PicasaEntry In picasaFeed.Entries
				Console.Write(entry.Title.Text + " : ")
				Console.WriteLine(entry.GetPhotoExtensionValue(GPhotoNameTable.NumPhotos))

				' 目的のアルバムオブジェクトを保存
				if arguments(3) = entry.Title.Text then
					targetEntry = entry
				end if
			Next
		end if 

		Console.WriteLine( "▼ アルバムの内容" )
		' 保存されたアルバムの内容を再確認
		if Not targetEntry is Nothing then
			Console.WriteLine("アルバムタイトル : " + targetEntry.Title.Text)

			' --------------------------------------------------
			' 写真の処理
			' --------------------------------------------------
			Dim photoQuery As PhotoQuery = New PhotoQuery(targetEntry.FeedUri)
	
			' 写真一覧の取得
			Dim photoFeed As PicasaFeed = picasaService.Query(photoQuery)
	
			' 写真一覧の表示
			If (Not photoFeed Is Nothing) And (photoFeed.Entries.Count > 0) Then
				For Each entryPhoto As PicasaEntry In photoFeed.Entries
					' 通常はアップロードしたファイル名
					Console.WriteLine(entryPhoto.Title.Text)
					' Picasa の HTML ページ
					Console.WriteLine(entryPhoto.AlternateUri.Content )
					' 画像の URL
					Console.WriteLine(entryPhoto.Media.Content.Url)
					Console.WriteLine()
				Next
			End If

		end if

	End Sub

End Module

Protocol Reference

実行サンプル
vb.net>image_urllist.exe user password 画像
▼ トークン
DQAAABABAACUVSy0cLeHFszdiXR52VqipNzkwhG--jNYFdZsJiE-2tNWslwWDZ01PDFdGVSGEmo-54Es
rnC4plJ5dqWnb8ttvGwHR6_Hv7FfNcTV2Yvl0hK0DjVcCDKv4AGtcL5SXKz58NUAYFQpUU_xYuKSiH3Y
nipVGeJsnpKgLbJGJvBc0I7qYJFlqIy4ydAnpxjtd5jJEe6lVJPb08Dgszkzi4C_DAT-5Y1tLRWkX4iG
9LrwV72TAO7bYtGkE59E0GL6V96DmkQyhGD8e6QW6PYbtGq2zV3T49PqWXYCMyHuyu4oQ7zEVrCka51M
eVc--4wdsNEzn5-ORFfAQ5dDOkv1H2TWJZoUNtdjfx7QhqDIsSPeSg
▼ 一覧の表示
自動バックアップ : 2
Google DATA : 1
画像 : 5
2013/08/31 : 2
2013-08-15 : 1
2013-08-09 : 1
2013/08/09 : 1
書籍 : 1
2013-08-05 : 2
スクラップブック写真 : 1
プロフィール写真 : 1
2013-08-15 : 1
▼ アルバムの内容
アルバムタイトル : 画像
Koala.jpg
https://picasaweb.google.com/1062795259696282242/aBylLD02#6106631643771454306
https://lh.googleusercontent.com/-NAgA591vjCo/VL8dIC0oQ2I/AAAAAAAAAj8/auHvt-kPf
9M/Koala.jpg

Chrysanthemum.jpg
https://picasaweb.google.com/1062795259696282242/aBylLD02#6106632684030319666
https://lh.googleusercontent.com/-B_9ML605-us/VL8eEmFq3DI/AAAAAAAAAkk/XEdyJhv_R
is/Chrysanthemum.jpg

Desert.jpg
https://picasaweb.google.com/1062795259696282242/aBylLD02#6106632684185326466
https://lh.googleusercontent.com/-35nqu23mW98/VL8eEmqoE4I/AAAAAAAAAkY/g90EGpZOT
DM/Desert.jpg

Hydrangeas.jpg
https://picasaweb.google.com/1062795249696282242/aBylLD02#6106632687178019842
https://lh.googleusercontent.com/-S6Ip9iBwt00/VL8eEx0I9AI/AAAAAAAAAkc/VYd-YUeEC
w4/Hydrangeas.jpg

Jellyfish.jpg
https://picasaweb.google.com/1062795259696282242/aBylLD02#6106632704441986402
https://lh.googleusercontent.com/-og4Rsof929w/VL8eFyIMLWI/AAAAAAAAAkg/1kZH2SSCR
9U/Jellyfish.jpg
▼ C# ( Code Translation for .NET (C#<->VB.NET) でVBを変換 )
using System;
using Google.GData.Client;
using Google.GData.Photos;
class Module1 {
    
    static void Main() {
        string[] arguments = Environment.GetCommandLineArgs();
        if ((arguments.Length != 4)) {
            return;
        }
        PicasaService picasaService = new PicasaService("mymymy-photos-v1");
        picasaService.setUserCredentials(arguments[1], arguments[2]);
        string authToken = null;
        try {
            authToken = picasaService.QueryClientLoginToken();
        }
        catch (Exception ex) {
            Console.WriteLine(ex.Message);
            return;
        }
        Console.WriteLine("▼ token");
        Console.WriteLine(authToken);
        AlbumQuery query = new AlbumQuery();
        query.Uri = new Uri(PicasaQuery.CreatePicasaUri(arguments[1]));
        PicasaFeed picasaFeed = picasaService.Query(query);
        PicasaEntry targetEntry = null;
        Console.WriteLine("▼ list");
        if ((!(picasaFeed == null) 
                    && (picasaFeed.Entries.Count > 0))) {
            foreach (PicasaEntry entry in picasaFeed.Entries) {
                Console.Write((entry.Title.Text + " : "));
                Console.WriteLine(entry.GetPhotoExtensionValue(GPhotoNameTable.NumPhotos));
                if ((arguments[3] == entry.Title.Text)) {
                    targetEntry = entry;
                }
            }
        }
        Console.WriteLine("▼ albam");
        if (!(targetEntry == null)) {
            Console.WriteLine(("title : " + targetEntry.Title.Text));
            PhotoQuery photoQuery = new PhotoQuery(targetEntry.FeedUri);
            PicasaFeed photoFeed = picasaService.Query(photoQuery);
            if ((!(photoFeed == null) 
                        && (photoFeed.Entries.Count > 0))) {
                foreach (PicasaEntry entryPhoto in photoFeed.Entries) {
                    Console.WriteLine(entryPhoto.Title.Text);
                    Console.WriteLine(entryPhoto.AlternateUri.Content);
                    Console.WriteLine(entryPhoto.Media.Content.Url);
                    Console.WriteLine();
                }
            }
        }
    }
}



タグ:API google
posted by lightbox at 2015-01-21 14:04 | VB.NET : テクニカル | このブログの読者になる | 更新情報をチェックする

2013年08月09日


VB.net(VS2010) で COM へ公開して、WSH(VBScript) で利用する( C# でも同様 )

※ C# の場合、ルート名前空間では無く、ソースコード内の namespace で指定します

新規プロジェクト



コード自体は特別な事はしません。以下のようなコードを作成します
Imports System.Windows.Forms

Public Class Class1

	Public Sub Hello()

		MessageBox.Show("こんにちは")

	End Sub

	Public Function PcName() As String

		PcName = My.Computer.Name

	End Function

End Class

ここでは、MessageBox.Show を使う為に、System.Windows.Forms を Imports していますが、COM へ公開するのに必須ではありません。また、System.Windows.Forms を Imports するには、参照設定を行う必要があります。



COM へ公開する為の特別な設定(1)

まず、Release に設定して下さい。



COM へ公開する為の特別な設定(2)

COM としてビルドする為の設定は、プロジェクトのプロパティから、アセンブリ情報ボタンをクリックして開いたダイアログで、チェックボックスを ON にするだけです。



COM へ公開する為の特別な設定(3)

署名タブから、アセンブリの署名を行うようにチェックボックスを ON にして、『厳密な名前のキーファイル』を作成します。



▼ ファイル名は任意


COM へ公開する為の特別な設定(4)

ルート名前空間を決定します( CreateObject で使用するピリオドの前にある名前 )




ビルドしてから COM として登録する

以下のように登録用と削除用のファイルを配置します。



ショートカットは、『管理者権限で実行』できるように設定します





▼ build.bat の中身です
cd %~p0

C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm MyComClass.dll /tlb:MyComClass.tlb /codebase

pause

▼ remove.bat の中身です
cd %~p0

C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm MyComClass.dll /unregister

pause

▼ 管理者権限での実行可能なショートカットより実行


▼ レジストリエディタで登録された事を確認


実行用テストコード
Set obj = Wscript.CreateObject("winofsql.Class1")

Call obj.Hello()

Wscript.Echo obj.PcName()




posted by lightbox at 2013-08-09 00:45 | VB.NET : テクニカル | このブログの読者になる | 更新情報をチェックする

2011年09月27日


VB.net : Picasa にアクセスする為に、Google Data API にログインしてトークンを取得する

google-gdata - .NET library for the Google Data API

Google_Data_API_Setup_1.9.0.0.msi をダウンロードしてインストールすると、

C:\Program Files\Google\Google Data API SDK\Redist\Google.GData.Client.dll
C:\Program Files\Google\Google Data API SDK\Redist\Google.GData.Photos.dll

となるはずなので、カレントディレクトリにコピーして、

vbc.exe /r:Google.GData.Client.dll,Google.GData.Photos.dll ソースコード.vb

でビルドして実行します
Imports Google.GData.Client
Imports Google.GData.Photos

Module Module1

	Sub Main()

		Dim picasaService As PicasaService = New PicasaService("PhotoBrowser")

		picasaService.setUserCredentials("メールアドレス", "パスワード")

		Dim authToken As String = Nothing

		Try
			authToken = picasaService.QueryClientLoginToken()
		Catch ex As Exception
			Console.WriteLine( ex.Message )
			Exit Sub
		End Try

		Console.WriteLine( authToken )

	End Sub

End Module

"PhotoBrowser" は付属の C# のサンプルで使われていた文字列です 

以下は、英文でのガイドです

※ 3.Create a new PicasaService instance, setting your application's name
※ (in the form companyName-applicationName-versionID).



posted by lightbox at 2011-09-27 17:17 | VB.NET : テクニカル | このブログの読者になる | 更新情報をチェックする

2010年06月17日


VB.net : Win32API 呼び出し : GetWindowsDirectory

StringBuilder 側からメモリの拡張は容易ですが、GetWindowsDirectory に
引き渡す長さ以上の文字列が戻って来る場合は異常終了します
Imports System.Runtime.InteropServices	' DllImport

Module MyModule

' UINT GetWindowsDirectory(
'   LPTSTR lpBuffer,  // Windows ディレクトリが格納されるバッファ
'   UINT uSize        // ディレクトリバッファのサイズ
' );

<DllImport("Kernel32.dll", CharSet:=CharSet.Unicode)> _
Private Function GetWindowsDirectory( _
  ByVal lpBuffer As System.Text.StringBuilder, _
  ByVal uSize As System.UInt32 _
) As System.UInt32
End Function

Sub Main()

	' C:\WINDOWS を取得します

	Dim lpBuffer As System.Text.StringBuilder = New System.Text.StringBuilder(128)
	Dim uRet As System.UInt32

	uRet = GetWindowsDirectory( lpBuffer, 128 )

	' uRet は 10 です
	Console.WriteLine( uRet )
	Console.WriteLine( lpBuffer )

	' Length プロパティで切り捨てられて C:\WIN になります
	lpBuffer.Length = 6
	Console.WriteLine( lpBuffer )

End Sub

End Module

関連する Microsoft ドキュメント

文字列に対する既定のマーシャリング
値型に対する既定のマーシャリング


タグ:Win32API
posted by lightbox at 2010-06-17 20:22 | VB.NET : テクニカル | このブログの読者になる | 更新情報をチェックする

2010年06月05日


VB.net : 画像の上にテキストを半透明で出力する

単純出力( 半透明なし )

Winofsql_text1


半透明出力用の背景透明の画像

Text_on_img

半透明出力

Winofsql_text3
Imports System.Drawing
Imports System.Drawing.Imaging
Imports System.Drawing.Text

Module MyModule

' ********************************************************
' 画像の上にテキスト
' ********************************************************
Sub Main()

	' 文字列の配列
	Dim argv As String()

	' コマンドラインの取得
	argv = System.Environment.GetCommandLineArgs()

	' 引数がある場合
	if System.Environment.GetCommandLineArgs.Length > 1 then
		Console.WriteLine(argv(1))
	else
		Console.WriteLine("変換するビットマップファイルを指定して下さい")
		Return
	end if

	' ********************************************************
	' 単純書き出し
	' ********************************************************
	' Bitmap をファイルのパスから作成
	Dim bmp As New Bitmap(argv(1))
	' キャンバス
	Dim gra As Graphics = Graphics.FromImage(bmp)

	' 書き出すテキストのフォントを作成
	Dim myFont As Font = New Font(FontFamily.GenericSansSerif, _
		20, FontStyle.Bold)

	' 白色で書きだす
	Dim myBrush As New SolidBrush(Color.FromArgb(255,255,255))

	' アンチエイリアス設定
	gra.TextRenderingHint = TextRenderingHint.AntiAliasGridFit

	' 書き出し
	gra.DrawString( "lightbox", myFont, myBrush, 70, 28 )

	bmp.Save((argv(1).Split("."))(0) + "_text1.png", Imaging.ImageFormat.Png)

	bmp.Dispose()

	' ********************************************************
	' 半透明書き出し
	' ********************************************************
	' Bitmap をファイルのパスから作成
	bmp = New Bitmap(argv(1))
	' キャンバス
	gra = Graphics.FromImage(bmp)

	' 同一サイズの Bitmap
	Dim bmp4Text As New Bitmap(bmp.Width, bmp.Height)
	' キャンバス
	Dim gra4Text As Graphics = Graphics.FromImage(bmp4Text)

	' 透明ブラシ
	Dim myBaseBrush As New SolidBrush(Color.FromArgb(0,0,0,0))
	' 塗りつぶし位置
	Dim rects As Rectangle() = {New Rectangle(0, 0, bmp4Text.Width, bmp4Text.Height)}
	' 塗りつぶして、透明のキャンバスにする
	gra4Text.FillRectangles(myBaseBrush, rects)

	' アンチエイリアス設定
	gra4Text.TextRenderingHint = TextRenderingHint.AntiAliasGridFit

	' 書き出し
	gra4Text.DrawString( "lightbox", myFont, myBrush, 70, 28 )

	' 途中経過
	bmp4Text.Save((argv(1).Split("."))(0) + "_text2.png", Imaging.ImageFormat.Png)

	' 半透明出力用属性
	Dim att As New ImageAttributes
	Dim cm As New ColorMatrix
	' 半透明
	cm.Matrix00 = 1		' R
	cm.Matrix11 = 1		' G
	cm.Matrix22 = 1		' B
	cm.Matrix33 = 0.5F	' A
	cm.Matrix44 = 1
	att.SetColorMatrix(cm)

	' 半透明書き出し
	gra.DrawImage( _
		bmp4Text, _
		New Rectangle(0, 0, bmp.Width, bmp.Height), _
		0, _
		0, _
		bmp.Width, _
		bmp.Height, _
		GraphicsUnit.Pixel, _
		att _
	)

	' 半透明書き出し結果
	bmp.Save((argv(1).Split("."))(0) + "_text3.png", Imaging.ImageFormat.Png)

	' Bitmap の解放
	bmp.Dispose()

End Sub

End Module



posted by lightbox at 2010-06-05 01:36 | VB.NET : テクニカル | このブログの読者になる | 更新情報をチェックする

2010年05月28日


VB.net と C# における KeyPress イベントの受け取り方

いろいろやってみましたが、直感的でかつ短くなる書き方が違います。
ControlChars.Cr は、Microsoft.VisualBasic 名前空間で、Char 型(構造体)です。

Keys.Return は、System.Windows.Forms 名前空間で、列挙体で整数です
VB.net で、整数を Char 型にキャストできないので、比較するにはいろいろ
変換が必要です

C# でも、Microsoft.VisualBasic 名前空間を使用するのであれば、ControlChars.Cr
を使用できますが、Java や C++ から入った人の発想に無い内容になりがちです

VB.net
Public Class Form1

	Private Sub TextBox1_KeyPress( _
	  ByVal sender As System.Object, _
	  ByVal e As System.Windows.Forms.KeyPressEventArgs) _
	  Handles TextBox1.KeyPress

		' VB.net で推奨
		If e.KeyChar = ControlChars.Cr Then
			Console.WriteLine("VB.net用")
		End If

	End Sub
End Class

C#
public partial class Form1 : Form
{
	public Form1()
	{
		InitializeComponent();
	}

	private void textBox1_KeyPress(
		object sender, 
		KeyPressEventArgs e)
	{

		// C# で推奨
		if (e.KeyChar == (char)Keys.Return) {
			Console.WriteLine("C#用");
		}

	}
}



タグ:VB.NET C#
posted by lightbox at 2010-05-28 14:20 | VB.NET : テクニカル | このブログの読者になる | 更新情報をチェックする

2010年05月27日


VB.net : フォーカス イベントの発生順序と注意事項

キーボードとマウスでは、GotFocus と LostFocus のイベント順序が全体で変わってしまうので使用できますが、使用しないようにします。( Visual Studio のイベント選択一覧には表示されません )

各ハンドラーの中からフォーカスを設定しないでください。フォーカスを設定すると、アプリケーションやオペレーティングシステムが応答を停止することがあります

Microsoft へのリンク

Control.Enter イベント (System.Windows.Forms)


キーボードで発生

キーボード (Tab、Shift + Tab など) を使用するか、Select メソッドまたはSelectNextControl メソッドを呼び出すか、ActiveControl プロパティを現在のフォームに設定してフォーカスを変更するとき、次の順序でフォーカスイベントが発生します。
1.Enter 2.GotFocus 3.Leave 4.Validating 5.Validated 6.LostFocus
マウスで発生 マウスを使用するか Focus メソッドを呼び出してフォーカスを変更するとき、フォーカス イベントは次の順序で発生します。
1.Enter 2.GotFocus 3.LostFocus 4.Leave 5.Validating 6.Validated
タグ:VB.NET
posted by lightbox at 2010-05-27 15:47 | VB.NET : テクニカル | このブログの読者になる | 更新情報をチェックする

2009年12月03日


VB.net クリップボードの処理 ( C# は注意 )

VB.net ではデフォルトで問題は出ませんが、
▼ C# では同じではエラーが出ます
ハンドルされていない例外: System.Threading.ThreadStateException: 
OLE が呼び出される前に、現在のスレッドが Single Thread Apartment
 (STA) モードに設定されていなければなりません。Main 関数に
 STAThreadAttribute が設定されていることを確認してく
ださい。
( System.Windows.Forms.Clipboard でも同じです )

Main に [System.STAThreadAttribute()] を指定します
Module MyModule

' ********************************************************
' * 実行
' ********************************************************
Sub Main()

	Dim pc As Microsoft.VisualBasic.Devices.Computer = _
		New Microsoft.VisualBasic.Devices.Computer

	pc.Clipboard.SetText("あいうえお")

	Console.WriteLine(pc.Clipboard.GetText())

End Sub

End Module

class MyModule 
{ 

	// ******************************************************** 
	// * 実行 
	// ******************************************************** 
	[System.STAThreadAttribute()]
	public static void Main() 
	{

		Microsoft.VisualBasic.Devices.Computer pc = 
			new Microsoft.VisualBasic.Devices.Computer();

		pc.Clipboard.SetText("あいうえお");

		System.Console.WriteLine(pc.Clipboard.GetText());

	} 

}
// ビルド例 : csc /r:%windir%\Microsoft.NET\Framework\v2.0.50727\Microsoft.VisualBasic.dll info.cs


関連する記事


タグ:VB.NET
posted by lightbox at 2009-12-03 13:59 | VB.NET : テクニカル | このブログの読者になる | 更新情報をチェックする

2009年10月22日


VB.net : 自分自身(というか元々プロテクトメソッド)を呼び出す遅延処理用プライベートタイマークラス

Convert VB.NET to C#

概要

Windows APIというか、C++ なら PostMessage するような処理ですが、VB.NET でざっと見当たらないのでてっとり早いタイマーを使いました。

最初フォームにコントロールを貼り付けて作ってテストすると、記述が分散してしまってまとまり悪いのでサブクラスを作成しました。

Start メソッドを呼び出すことは、Enabled を true に設定することと同じです。 同様に、Stop メソッドを呼び出すことは、Enabled を false に設定することと同じです。
Private tm As myTimer = New myTimer()
' **************************************************
' 遅延フォーカス用プライベートクラス
' **************************************************
Private Class myTimer
	Inherits System.Windows.Forms.Timer

	Private _col As Integer
	Private _row As Integer

	' ******************************************
	' タイマーによって呼び出される
	' ※ ここでフォーカス処理を実行
	' ******************************************
	Protected Overrides Sub OnTick(ByVal e As System.EventArgs)
		MyBase.OnTick(e)

		' タイマーを止める
		Me.Enabled = False
		' フォーカス処理
		Form1.LboxGrid1.CurrentCell = Form1.LboxGrid1(_col, _row)
	End Sub

	' ******************************************
	' ここを呼び出して、タイマーを起動させる
	' ※ しかしここではフォーカス処理は実行なし
	' ******************************************
	Public Sub setCellFocus(ByVal row As Integer, ByVal col As Integer)

		_col = col : _row = row
		Me.Interval = 50
		Me.Enabled = True

	End Sub
End Class

元々の記事

伝票入力に最適化した DataGridView


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

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

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

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

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


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

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

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

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

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


Windows
container 終わり

フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

Android SDK ポケットリファレンス
改訂版 Webデザイナーのための jQuery入門
今すぐ使えるかんたん ホームページ HTML&CSS入門
CSS ドロップシャドウの参考デモ
Google Hosted Libraries
cdnjs
BUTTONS (CSS でボタン)
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり