「アフィリエイト商品のHTML」の「フッターのHTMLに関する情報」を作成する
「アフィリエイト商品のHTML」の「フッターのHTMLに関する情報」を作成する処理について、PHPソースコードを解説しています。
「フッターのHTMLに関する情報」には、以下のものがあります。
- 「アフィリエイト商品のHTML」の「フッタータグを特定するID(識別名)」
- 「アフィリエイト商品のHTML」の「フッタータグ」
「フッタータグを特定するID(識別名)」は、価格の「詳細はこちら」aタグで、リンク先として使用されます。
このIDによって、一意の「フッタータグ」をリンク先として特定できます。
「フッタータグ」は、「価格の詳細」に関する説明文が記述されているタグです。
「フッターのHTMLに関する情報」は、「アフィリエイト商品のHTML」のフッター部分を作成する際に、必要な情報を保持しています。
「アフィリエイト商品のHTML」の「フッターのHTMLに関する情報」を作成する
public static function makeFooterHTMLInfo(ItemHTMLOption $itemHTMLOption): FooterHTMLInfo {
$footerID;
$footerDiv; // 今の所、価格詳細専用のフッターとなっている。
$priceItemHTMLOption = $itemHTMLOption->getPriceItemHTMLOption ();
$priceFooterText = $priceItemHTMLOption->getPriceFooterText ();
if ($priceFooterText) {
$idPrefix = $itemHTMLOption->getIdPrefix ();
$footerDisplayTime = DateTextMaking::getUnixTimeMillSecond (); // フッターが表示された時間
$footerTimeText = DateTextMaking::makeUnixTimeIDText (
DateTextMaking::UNIX_TIME_ID_FORMAT, $footerDisplayTime );
$footerID = GOODS_MEMO_PREFIX . "-" . $idPrefix . "-items-footer-" . $footerTimeText; // 念のため、ページ内にフッターが2個以上ある場合に対応
$footerDiv = <<< EOD
<div id="{$footerID}" class="footer">{$priceFooterText}</div>
EOD;
$showState = $priceItemHTMLOption->getPriceTimeLinkVisible ();
if ($showState === false) {
$footerID = ""; // 価格時刻の「詳細はこちら」リンクを非表示にする。
}
} else {
$footerID = "";
$footerDiv = "";
}
$footerHTMLInfo = new FooterHTMLInfo ();
$footerHTMLInfo->setFooterID ( $footerID );
$footerHTMLInfo->setFooterDiv ( $footerDiv );
return $footerHTMLInfo;
}
「アフィリエイト商品のHTML」の「フッタータグを特定するID(識別名)」を保持する$footerID変数の例。
goodsmemo-amazon-items-footer-2023-04-15-16-58-58-87
「アフィリエイト商品のHTML」の「フッタータグ」を保持する$footerDiv変数の例。
<div id="goodsmemo-amazon-items-footer-2023-04-15-16-58-58-87" class="footer">
価格の詳細:価格および発送可能時期は表示された日付/時刻の時点のものであり、変更される場合があります。
本商品の購入においては、購入の時点でAmazon.co.jpに表示されている価格および発送可能時期の情報が適用されます。
</div>
makeFooterHTMLInfo()関数は、
「アフィリエイト商品のHTML」の「フッターのHTMLに関する情報」を作成します。
「フッターのHTMLに関する情報」には、以下のものがあります。
- 「アフィリエイト商品のHTML」の「フッタータグを特定するID(識別名)」
- 「アフィリエイト商品のHTML」の「フッタータグ」
$priceFooterText変数は、「価格詳細のフッター文字列」を保持します。
「価格詳細のフッター文字列」が存在する場合、
「フッターのHTMLに関する情報」を作成します。
「フッタータグ」を特定するIDを作成して、$footerID変数に代入します。
「フッタータグ」を作成して、$footerDiv変数に代入します。
「価格詳細のフッター文字列」が無い場合、
「フッターのHTMLに関する情報」を作成しません。
この場合、情報が無いことを示す空文字を、以下の変数に代入します。
空文字を、$footerID変数に代入します。
空文字を、$footerDiv変数に代入します。
$footerHTMLInfo変数は、「フッターのHTMLに関する情報」を保持する変数です。
作成した「フッターのHTMLに関する情報」を、$footerHTMLInfo変数に設定します。
$footerID変数を、$footerHTMLInfo変数に設定します。
$footerDiv変数を、$footerHTMLInfo変数に設定します。
その$footerHTMLInfo変数は、return文で返されます。
「価格詳細のフッター文字列」が存在する場合、「フッターのHTMLに関する情報」を作成する
$priceItemHTMLOption = $itemHTMLOption->getPriceItemHTMLOption ();
$priceFooterText = $priceItemHTMLOption->getPriceFooterText ();
if ($priceFooterText) {
$idPrefix = $itemHTMLOption->getIdPrefix ();
$footerDisplayTime = DateTextMaking::getUnixTimeMillSecond (); // フッターが表示された時間
$footerTimeText = DateTextMaking::makeUnixTimeIDText (
DateTextMaking::UNIX_TIME_ID_FORMAT, $footerDisplayTime );
$footerID = GOODS_MEMO_PREFIX . "-" . $idPrefix . "-items-footer-" . $footerTimeText; // 念のため、ページ内にフッターが2個以上ある場合に対応
$footerDiv = <<< EOD
<div id="{$footerID}" class="footer">{$priceFooterText}</div>
EOD;
$showState = $priceItemHTMLOption->getPriceTimeLinkVisible ();
if ($showState === false) {
$footerID = ""; // 価格時刻の「詳細はこちら」リンクを非表示にする。
}
}
「価格詳細のフッター文字列」が存在する場合、「フッターのHTMLに関する情報」を作成します。
「フッターのHTMLに関する情報」には、以下のものがあります。
- 「アフィリエイト商品のHTML」の「フッタータグを特定するID(識別名)」
- 「アフィリエイト商品のHTML」の「フッタータグ」
「価格詳細のフッター文字列」を取得する
$priceItemHTMLOption = $itemHTMLOption->getPriceItemHTMLOption ();
$priceFooterText = $priceItemHTMLOption->getPriceFooterText ();
「価格詳細のフッター文字列」を保持する$priceFooterText変数の例。
価格の詳細:価格および発送可能時期は表示された日付/時刻の時点のものであり、変更される場合があります。
本商品の購入においては、購入の時点でAmazon.co.jpに表示されている価格および発送可能時期の情報が適用されます。
$itemHTMLOption変数は、ItemHTMLOptionクラスの変数です。
ItemHTMLOptionクラスは、「商品のHTML作成に関する設定値」を管理するクラスです。
以下の設定値を管理します。
- 当プラグインの「ショートコードの属性値」で、「商品のHTML作成に関する設定値」。
- 当プラグインの「アフィリエイトの設定」で、「商品のHTML作成に関する設定値」。
$itemHTMLOption->getPriceItemHTMLOption()メソッドを用いて、
$priceItemHTMLOption変数に、「商品価格のHTML作成に関する設定値」を代入します。
$priceItemHTMLOption変数は、PriceItemHTMLOptionクラスの変数です。
PriceItemHTMLOptionクラスは、「商品価格のHTML作成に関する設定値」を管理するクラスです。
以下の設定値を管理します。
- 価格詳細のフッター文字列
- 価格の「詳細はこちら」リンクの「表示の有効性」
$priceItemHTMLOption->getPriceFooterText()メソッドを用いて、
$priceFooterText変数に、「価格詳細のフッター文字列」を代入します。
「フッタータグを特定するID(識別名)」と「フッタータグ」を、作成する
if ($priceFooterText) {
$idPrefix = $itemHTMLOption->getIdPrefix ();
$footerDisplayTime = DateTextMaking::getUnixTimeMillSecond (); // フッターが表示された時間
$footerTimeText = DateTextMaking::makeUnixTimeIDText (
DateTextMaking::UNIX_TIME_ID_FORMAT, $footerDisplayTime );
$footerID = GOODS_MEMO_PREFIX . "-" . $idPrefix . "-items-footer-" . $footerTimeText; // 念のため、ページ内にフッターが2個以上ある場合に対応
$footerDiv = <<< EOD
<div id="{$footerID}" class="footer">{$priceFooterText}</div>
EOD;
以下省略
「アフィリエイト商品のHTML」の「フッタータグを特定するID(識別名)」を保持する$footerID変数の例。
goodsmemo-amazon-items-footer-2023-04-15-16-58-58-87
「アフィリエイト商品のHTML」の「フッタータグ」を保持する$footerDiv変数の例。
<div id="goodsmemo-amazon-items-footer-2023-04-15-16-58-58-87" class="footer">
価格の詳細:価格および発送可能時期は表示された日付/時刻の時点のものであり、変更される場合があります。
本商品の購入においては、購入の時点でAmazon.co.jpに表示されている価格および発送可能時期の情報が適用されます。
</div>
$priceFooterText変数が「価格詳細のフッター文字列」を保持する場合、
以下の情報を作成します。
- 「フッタータグを特定するID(識別名)」
- 「フッタータグ」
$idPrefix = $itemHTMLOption->getIdPrefix ();
$itemHTMLOption->getIdPrefix()メソッドを用いて、
$idPrefix変数に、識別名を代入します。
この識別名は、例えばアマゾンを意味する場合、amazonという文字列になります。
$footerDisplayTime = DateTextMaking::getUnixTimeMillSecond (); // フッターが表示された時間
$footerTimeText = DateTextMaking::makeUnixTimeIDText (
DateTextMaking::UNIX_TIME_ID_FORMAT, $footerDisplayTime );
DateTextMaking::getUnixTimeMillSecond()関数を用いて、
$footerDisplayTime変数に、Unixタイムスタンプ(マイクロ秒)の値を代入します。
Unixタイムスタンプ(マイクロ秒)の値を保持する$footerDisplayTime変数の例。
1681545538.87
このUnixタイムスタンプの値は、「フッタータグの表示日時」として使用する日時です。
実際には、上記のPHPプログラムコードが実行された時の日時です。
ブラウザ上に、「フッタータグ」が表示された日時ではありません。
DateTextMaking::makeUnixTimeIDText()関数を用いて、
$footerTimeText変数に、「フッタータグの表示日時」の文字列を代入します。
「フッタータグの表示日時」の文字列を保持する$footerTimeText変数の例。
2023-04-15-16-58-58-87
この値は、おおよそ
2023年4月15日 16時58分58秒、87マイクロ秒
を示します。
※マイクロ秒は、1秒を1000000等分した単位であり、1マイクロは0.000001秒です。
「フッタータグを特定するID(識別名)」を作成する
$footerID = GOODS_MEMO_PREFIX . "-" . $idPrefix . "-items-footer-" . $footerTimeText; // 念のため、ページ内にフッターが2個以上ある場合に対応
GOODS_MEMO_PREFIX定数の定義。
define ( "GOODS_MEMO_PREFIX", "goodsmemo" );
「フッタータグを特定するID(識別名)」を保持する$footerID変数の例。
goodsmemo-amazon-items-footer-2023-04-15-16-58-58-87
- GOODS_MEMO_PREFIX定数
- $idPrefix変数
- $footerTimeText変数
上記の定数や変数を用いて、文字列を結合して、
$footerID変数に、「フッタータグを特定するID(識別名)」を代入します。
「フッタータグを特定するID(識別名)」を作成する理由は、このIDが「aタグのリンク先」になっているためです。
※関連記事:「価格の詳細」に移動する、価格の「詳細はこちら」aタグ。
例えば、同じウェブページ上の2か所で、当プラグインのショートコードを使用した場合、
同じウェブページ上で、2個の「フッタータグ」が存在することになります。
その場合、「aタグのリンク先」は、2個の「フッタータグ」を区別してリンクする必要があります。
「フッタータグを特定するID(識別名)」にマイクロ秒の情報を入れることより、このIDは一意の「フッタータグ」を特定できる、と考えています。
「フッタータグ」を作成する
$footerDiv = <<< EOD
<div id="{$footerID}" class="footer">{$priceFooterText}</div>
EOD;
「フッタータグを特定するID(識別名)」を保持する$footerID変数の例。
goodsmemo-amazon-items-footer-2023-04-15-16-58-58-87
「価格詳細のフッター文字列」を保持する$priceFooterText変数の例。
価格の詳細:価格および発送可能時期は表示された日付/時刻の時点のものであり、変更される場合があります。
本商品の購入においては、購入の時点でAmazon.co.jpに表示されている価格および発送可能時期の情報が適用されます。
「フッタータグ」を保持する$footerDiv変数の例。
<div id="goodsmemo-amazon-items-footer-2023-04-15-16-58-58-87" class="footer">
価格の詳細:価格および発送可能時期は表示された日付/時刻の時点のものであり、変更される場合があります。
本商品の購入においては、購入の時点でAmazon.co.jpに表示されている価格および発送可能時期の情報が適用されます。
</div>
ヒアドキュメント内のHTMLに「フッターに関する項目」を埋め込み、「フッタータグ」のHTMLを作成します。
作成した「フッタータグ」のHTMLを、$footerDiv変数に代入します。
ヒアドキュメント内に記述されている、「フッタータグ」のHTMLにおいて、
- $footerID変数
- $priceFooterText変数
これらの変数を展開します。
以上より、「アフィリエイト商品のHTML」のフッター部分を表示するdivタグを、作成します。
価格の「詳細はこちら」リンクを非表示にする場合、$footerID変数に空文字を代入する
$showState = $priceItemHTMLOption->getPriceTimeLinkVisible ();
if ($showState === false) {
$footerID = ""; // 価格時刻の「詳細はこちら」リンクを非表示にする。
}
価格の「詳細はこちら」リンクの「表示の有効性」が非表示の場合、
$footerID変数に空文字を代入します。
当プラグインのPHPプログラムでは、$footerID変数が空文字の場合、
価格の「詳細はこちら」aタグを非表示にするようになっています。
$footerID変数が空文字の場合、
価格の「詳細はこちら」aタグに対して「style=”display: none;”」を適用するように、
当プラグインにおいてプログラムされています。
$priceItemHTMLOption->getPriceTimeLinkVisible()メソッドを用いて、
$showState変数に、価格の「詳細はこちら」リンクの「表示の有効性」を、代入します。
$showState変数がfalseの場合、
価格の「詳細はこちら」リンクを非表示にします。
当プラグインのPHPプログラムにて、
価格の「詳細はこちら」aタグを非表示にするため、$footerID変数に空文字を代入します。
「価格詳細のフッター文字列」が無い場合、「フッターのHTMLに関する情報」を作成しない
$priceItemHTMLOption = $itemHTMLOption->getPriceItemHTMLOption ();
$priceFooterText = $priceItemHTMLOption->getPriceFooterText ();
if ($priceFooterText) {
中略
} else {
$footerID = "";
$footerDiv = "";
}
「価格詳細のフッター文字列」が無い場合、
「フッターのHTMLに関する情報」を作成しません。
「フッターのHTMLに関する情報」には、以下のものがあります。
- 「アフィリエイト商品のHTML」の「フッタータグを特定するID(識別名)」
- 「アフィリエイト商品のHTML」の「フッタータグ」
「フッターのHTMLに関する情報」を作成しないために、上記の情報を空文字にします。
「価格詳細のフッター文字列」が無い場合、
$priceFooterText変数は空文字を保持します。
この場合、if文のelse文が実行されて、空文字を変数に代入します。
空文字を、$footerID変数に代入します。
空文字を、$footerDiv変数に代入します。
以上より、「フッターのHTMLに関する情報」が無いことを示します。
FooterHTMLUtils.phpのソースコード
<?php
namespace goodsmemo\item\html;
use goodsmemo\date\DateTextMaking;
use goodsmemo\item\html\FooterHTMLInfo;
use goodsmemo\item\html\ItemHTMLOption;
use goodsmemo\item\html\PriceItemHTMLOption;
require_once GOODS_MEMO_DIR . "date/DateTextMaking.php";
require_once GOODS_MEMO_DIR . "item/html/FooterHTMLInfo.php";
require_once GOODS_MEMO_DIR . "item/html/ItemHTMLOption.php";
require_once GOODS_MEMO_DIR . "item/html/PriceItemHTMLOption.php";
class FooterHTMLUtils {
public static function makeFooterHTMLInfo(ItemHTMLOption $itemHTMLOption): FooterHTMLInfo {
$footerID;
$footerDiv; // 今の所、価格詳細専用のフッターとなっている。
$priceItemHTMLOption = $itemHTMLOption->getPriceItemHTMLOption ();
$priceFooterText = $priceItemHTMLOption->getPriceFooterText ();
if ($priceFooterText) {
$idPrefix = $itemHTMLOption->getIdPrefix ();
$footerDisplayTime = DateTextMaking::getUnixTimeMillSecond (); // フッターが表示された時間
$footerTimeText = DateTextMaking::makeUnixTimeIDText (
DateTextMaking::UNIX_TIME_ID_FORMAT, $footerDisplayTime );
$footerID = GOODS_MEMO_PREFIX . "-" . $idPrefix . "-items-footer-" . $footerTimeText; // 念のため、ページ内にフッターが2個以上ある場合に対応
$footerDiv = <<< EOD
<div id="{$footerID}" class="footer">{$priceFooterText}</div>
EOD;
$showState = $priceItemHTMLOption->getPriceTimeLinkVisible ();
if ($showState === false) {
$footerID = ""; // 価格時刻の「詳細はこちら」リンクを非表示にする。
}
} else {
$footerID = "";
$footerDiv = "";
}
$footerHTMLInfo = new FooterHTMLInfo ();
$footerHTMLInfo->setFooterID ( $footerID );
$footerHTMLInfo->setFooterDiv ( $footerDiv );
return $footerHTMLInfo;
}
}