HTMLLabelというのは、cms:id="***"(標準設定ではsoy:id="***"になる)を作る為に設けられたクラスで、PHPモジュール内でも使用可能です。
https://github.com/inunosinsi/SOY2/blob/master/SOY2HTML/SOY2HTMLComponents/HTMLLabel.class.php
詳しい説明の前にPHPモジュールを自作する - SOY CMSを使ってみようで作成した<!-- cms:module="parts.test" -->を書き換えて、HTMLLabelを介して文字列を出力してみます。
上記URLで作成したモジュールのパスは
/ドキュメントルート/サイトID/.module/parts/test.php
になります。
早速、HTMLLabelを使って、soy:id="test"というタグを使用できるようにコードを作成します。
<?php function soycms_test(string $html, HTMLPage $htmlObj){ $obj = $htmlObj->create("soycms_test", "HTMLTemplatePage", array( "arguments" => array("soycms_test", $html) )); // 下記のコードで soy:id="test"タグが使用できるようになる $obj->createAdd("test", "HTMLLabel", array( "text" => date("Y-m-d H:i:s") )); // createAddを使う場合は最後に下記のコードを加えておく $obj->display(); } ?>
HTMLLabelを使用する為に、$page変数に格納されたオブジェクトのcreateメソッドで、HTMLTemplatePageクラスを呼び出します。
この時、createメソッドの最初のパラメータにモジュールで決めた関数名(今回はsoycms_test)を指定します。
https://github.com/inunosinsi/SOY2/blob/master/SOY2HTML/SOY2HTMLComponents/HTMLPage.class.php
$objにはHTMLTemplatePageが格納され、その親クラスであるHTMLPageの持つcreateAddメソッドでsoy:idタグを追加します。
createAddでは、一番目の値でsoy:id="***"の***の箇所を指定し、二番目にSOY2HTMLと呼ばれる仕組みの何のクラスを使用するのかを指定し、三番目の値で実際に出力する内容を指定します。
今回は三番目の値として指定した配列内で、array("text" => date("Y-m-d H:is"))と指定していますが、これはページに出力する際にhtmlspecialcharsの処理を介した後の値を出力します。
※文字列出力の際にHTMLタグの使用を禁止する事で、XSS攻撃の危険を回避します。
PHP: htmlspecialchars - Manual
作成したモジュールを公開側のページで使用してみます。
今回のモジュールを作成したいページのテンプレートに下記のコードを挿入します。
<!-- cms:module="parts.test" --> <!-- soy:id="test" -->ここにHTMLLabelで指定した内容を出力する<!-- /soy:id="test" --> <!-- /cms:module="parts.test" -->
公開側ページを開き、
記述した内容が出力されることを確認しましょう。
HTMLLabelでsoy:id以外のタグを生成したい。
例えば、cms:id="test"
<?php function soycms_test(string $html, HTMLPage $htmlObj){ $obj = $htmlObj->create("soycms_test", "HTMLTemplatePage", array( "arguments" => array("soycms_test", $html) )); $obj->createAdd("test", "HTMLLabel", array( "soy2prefix" => "cms", "text" => date("Y-m-d H:i:s") )); $obj->display(); } ?>
createAddの三番目の配列内で、"soy2prefix" => "cms"にすると、cms:id="test"が使用できるようになります。
HTMLLabelで生成したsoy:idタグでHTMLタグを出力できるようにしたい。
<?php function soycms_test(string $html, HTMLPage $htmlObj){ $obj = $htmlObj->create("soycms_test", "HTMLTemplatePage", array( "arguments" => array("soycms_test", $html) )); $obj->createAdd("test", "HTMLLabel", array( "html" => "<strong>".date("Y-m-d H:i:s")."</strong>" )); $obj->display(); } ?>
createAddの三番目の配列内で、「"text" => 文字列」の箇所を「"html" => 文字列」に変更すると、HTMLタグの使用が許可されます。
HTMLLabelに関する詳しい記述はSOY2HTMLのHTMLLabelを詳しく見るにあります。