メインコンテンツまでスキップ

Smartyプラグイン

カスタム処理やバッチ処理にてSmartyプラグイン利用できます。 利用可能なSmartyプラグインをまとめます。

add

変数に数値を加算します。

属性

ParamTypeDescription
varString加算対象の変数名、加算結果も同一変数名に格納されます (必須)
valueInt数値

記載例

{add var=i value=5}

api

外部APIをコールします。
APIを提供している外部サービスに対してリクエストを送信し、レスポンスを変数に格納します。

属性

項目用途記載例備考
endpointエンドポイント(必須)https://example.com/brah/
methodメソッドPOST/GET/PATCH/PURGE/PUT/DELETE
queryクエリ文字列param1=hoge&param2=foo
queriesクエリ配列$params
json_bodyリクエスト Json Body{param1:"hoge",param2:"foo"}
bodyリクエスト Body
filesファイル['path/to/hoge.jpg', 'path/to/foo.png']/
[{'path':'path/to/hoge.jpg'}, {'path':'path/to/foo.png'}]
Kuroco一時フォルダからの相対パスで指定します
headersリクエストヘッダー['Host: localhost','user-agent: hoge']配列で指定してください
cache_timeキャッシュ時間(分)20
varレスポンスの格納変数response
json_varレスポンスの格納変数responseレスポンスがJSON形式の場合、デコードされた値が格納されます
resp_header_varレスポンスヘッダーの格納変数headerレスポンスヘッダーが配列形式で格納されます
dl_flgダウンロードフラグtrue/falsetrueとした場合、レスポンスをKurocoの一次領域にファイルとして保存します
status_var0:失敗 1:成功statusリクエストが成功したか失敗したかが返ります
timeoutタイムアウト60タイムアウト(秒)を指定します。
sslcertmTLS クライアント証明書SSLCERT001mTLSクライアント証明書のシークレットのキー名を指定します
sslkeymTLS クライアント秘密鍵のシークレットのキー名SSLKEY001mTLSクライアント秘密鍵のシークレットのキー名を指定します
cainfomTLS サーバーCA証明書のシークレットのキー名CAINFO001mTLS CA証明書のシークレットのキー名を指定します

記載例
PUTでファイルを送信する

PUTメソッドで特定のURLにファイルを送信する場合は、files属性にファイルパスの配列を指定します。ただし一度に送信できるファイル数は1件のみです。したがって指定した配列の第2要素目以降は無視されます。

{write_file var=tmp_path value="This is test."}
{assign_array var=files values=""}
{append var=files value=$tmp_path}
{api
endpoint='https://www.example.com/brah/'
method="PUT"
var=response
files=$files
status_var=status
}

PUTでテキストを送信する

テキストをPUTで送信する場合は、json_body属性またはbody属性に送信したいテキストをセットします。
JSON形式の場合はjson_body属性に値をセットします。

{assign_array var=product values=""}
{append var=product index=name value='apple'}
{append var=product index=price value='160'}
{assign var=json value=$product|@json_encode}
{api
endpoint='https://www.example.com/brah/'
method='PUT'
json_body=$json
var=response
status_var=status
}

JSON以外のテキストの場合はbody属性に値をセットします。
このときリクエストヘッダの Content-Type に text/*** の形式のものを指定しなければなりません。また、bodyに指定する文字列は、たとえJSON形式ではなくても、json_bodyの場合と同様にjson_encode修飾子をつける必要がありますのでご注意ください(これはマルチバイト文字部分をUnicodeにエスケープする必要があるためです)。

{assign_array var=headers values=""}
{append var=headers value='Content-Type: text/csv'}
{assign var=csv value="ID,NAME,PRICE\n1,apple,150\n2,orange,200"}
{api
endpoint='https://www.example.com/brah/'
method='PUT'
headers=$headers
body=$csv|@json_encode
var=response
status_var=status
}

mTLS認証によるサーバ間認証を行い通信する
外部システムとの連携にmTLS認証を行う必要がある場合、KurocoをmTLSクライアントとして通信することが出来ます。 まず、サーバーCA証明書、クライアント証明書、クライアント秘密鍵の内容をシークレットに保存してください。保存する際にシークレットキー名を指定する必要があります。このシークレットキー名を以下のように指定してください。

{api 
endpoint='https://xxx.xxx.xxx/xxxx/'
method='GET'
var='response'
status_var='status'
sslcert='SSLCERT001'
sslkey='SSLKEY001'
cainfo='CAINFO001'
}

クライアント証明書、クライアント秘密鍵を作成する際に使用したクライアントCA証明書は、mTLSサーバ側に許可する接続元の証明書として登録する必要があります。登録の仕方はシステムによって異なりますので各サービスの提供元へお問い合わせください。 ここで設定するサーバーCA証明書は接続先サーバーから提供を受けてください。 接続結果はAPIログに出力されますので、設定時にご参照ください。

関連ドキュメント
Kuroco 内部のAPIをコールする方法については、カスタム処理からKurocoのAPIを呼び出せますか? をご確認ください。

api_internal

内部的にAPIをリクエストして、応答をassignします。

属性

ParamTypeDescription
endpointStringエンドポイント (必須)
methodStringメソッド (POST/GET)
queryStringクエリ文字列
queriesArrayクエリ配列
headersArrayリクエストヘッダー
cache_timeIntegerキャッシュ時間 (分)
varStringレスポンスの格納変数
status_varString0:失敗 1:成功
member_idInteger指定したログインメンバーとして実行
※directのパラメータとの併用はできません。
use_current_sessionBoolean現在のセッションを引き継いでAPIリクエストを実行
directBooleanネットワーク(curl)を経由せず直接APIリクエストを実行
※direct=trueをパラメータに指定できるのは、対象エンドポイントのHTTPメソッドがGETの場合に限ります。また、member_idとの併用はできません。

記載例

{api_internal
endpoint='/rcms_api/1/sample'
method='GET'
query='ex=1&ex2=2'
cache_time=20
var='response'
status_var='status'}

api_method

エンドポイントを作成せずに、各モデルのオペレーションをします。 利用できるオペレーションはGETメソッドのもののみになります。POSTメソッドのオペレーションは利用できません。

属性

ParamTypeDescription
varString結果を格納する変数名 (必須)
modelStringモデル
methodStringメソッド(オペレーション)
versionIntegerバージョン
request_paramsArrayリクエスト変数
method_paramsArrayメソッドの設定値。エンドポイントの設定画面に掲載されている「基本設定」「詳細設定」と同様になります。

記載例

{*  エンドポイント設定パラメータ *}
{assign_array var='method_params' values=''}
{assign_array var='method_params.topics_group_id' values='1'}
{* クエリパラメータ *}
{assign_array var='request_params' values=''}
{assign var='request_params.cnt' value=20}
{assign var='request_params.pageID' value=1}
{api_method
var='topics_list'
model='Topics'
method='list'
version='1'
method_params=$method_params
request_params=$request_params}

test:{$topics_list|@debug_print_var}

api_mng

内部的に管理APIをリクエストして、応答をassignします。

属性

ParamTypeDescription
endpointStringエンドポイント(必須)
methodStringメソッド(POST/GET)
queryStringクエリ文字列
queriesArrayクエリ配列
headersArrayリクエストヘッダー
filesArrayアップロードファイル
varStringレスポンスの格納変数
status_varString0:失敗 1:成功
member_idInteger指定したログインメンバーとして実行
use_current_sessionBoolean現在のセッションを引き継いでAPIリクエストを実行

記載例

{api_mng
endpoint='/management/<module>/sample'
method='GET'
query='ex=1&ex2=2'
var='response'
status_var='status'}

append

テンプレートから, 新しい要素をarrayに追加します。

属性

ParamTypeDescription
varString配列名 (必須)
valueString追加するオブジェクトまたは配列の名前 (必須)
indexInteger追加が始まる場所の配列のインデックス (optional)

記載例

{append var=options value='Option N' index='N'}

assign_api_credential

新しいAPIリクエストを生成して、'val'にアクセスキーを取得します。

属性

ParamTypeDescription
dg_keyStringDG_CODEを生成するためのキー
dg_idStringDG_CODEを生成するためのid
api_keyStringsidリクエストの生成するためのキー (必須)
varArray戻りの配列の名前。
jwt_dataArrayJWTデータ
member_idIntegerメンバーID
expireInteger有効期限(秒)

記載例

{assign_api_credential
api_key=$api_key
dg_key="topics_edit_api"
dg_id="0"
var=val}

assign_array

配列をテンプレート変数としてassignします。

属性

ParamTypeDescription
varStringassignする配列の変数名 (必須)
valuesString配列に格納する値。delimiterで区切られた文字列
delimiterStringvaluesで指定された値を分割するための区切り文字。デフォルトはカンマ
keysString連想配列とする場合、キーを指定します。デフォルトはnull

記載例

{assign_array var="foo" values="bar1,bar2"}
{assign_array var="foo" values="bar1;bar2;bar3" delimiter=";"}
{assign_array var="foo" keys="key1,key2,key3" values="bar1,bar2,bar3"}

assign_array_diff

array1, array2の間にdiffの配列を割り当てます。

属性

ParamTypeDescription
varStringassign差分配列の名前
array1Array配列1
array2Array配列2
diff_modeStringnormal, key

記載例

{assign_array_diff
var="foo"
array1=$array1
array2=$array2
diff_mode='normal'}

assign_array_intersect

array1, array2の交差の配列を割り当てます。

属性

ParamTypeDescription
varString交差配列の名前
array1String配列1
array2String配列2
intersect_modeStringnormal, assoc, key (default=normal)

記載例

{assign_array_intersect
var="foo"
array1=$array1
array2=$array2
intersect_mode='normal'}

assign_array_set

配列に要素を追加します。
この関数は{append}に似ていますが、もととなる配列を変更せずに 新しい配列を作成する点が{append}とは異なります。

属性

ParamTypeDescription
varStringassignする配列の変数名 (必須)
fromStringもととなる配列
keyStringキー
valueString

記載例

{assign_array var="person" values=""}
{append var="person" index="name" value="Katoh"}
{append var="person" index="job" value="Sales"}
{assign_array_set var="person_ex" key="age" value="28" from=$person}

{$person_ex|@debug_print_var}

{$person|@debug_print_var}

出力結果

Array (4)
name => "Katoh"
job => "Sales"
age => "28"

Array (2)
name => "Katoh"
job => "Sales"

assign_csv_table

csvtable_idで示されるマスタを取得します。

属性

ParamTypeDescription
csvtable_idIntegerマスタのID (必須)
varString戻り変数の名前 (必須)
get_key_valBooleanオプションのパラメータの使用を有効にします。 (optional)
key_idxInteger/Array返されるディメンションまたはディメンションを返します。 (optional)
value_idxInteger返されるディメンションまたはディメンションを返します。 (optional)
multipleBoolean次元数で場合分け (optional)
langString多言語対応している場合、言語を指定します。"ja", "en" など。
table_nameString戻り変数の名前 (後方互換)

記載例

{assign_csv_table csvtable_id=X var="sample_table1"}
{$sample_table1|@debug_print_var}
{assign_csv_table
csvtable_id=X
var="sample_table2"
get_key_val=true}
{$sample_table2|@debug_print_var}

assign_favorite_cnt

お気に入り数を取得します。

属性

ParamTypeDescription
module_typeStringモジュール名。"topics","comment","member","tag","csvtable","ec_product" のいずれかを指定します。デフォルトは "topics" です。
module_idInteger指定したモジュールにおけるID
varString結果を格納する変数名 (必須)
timeStringstrtotime フォーマット
formatStringフォーマット

記載例

{assign_favorite_cnt
module_type="topics"
module_id=1000
var="favorite_cnt"}

assign_globals

同一リクエスト中に呼び出されるカスタム処理間で共有可能なグローバル変数をアサインします。

属性

ParamTypeDescription
varStringグローバル変数を格納する変数名
keyStringグローバル変数のキー
valueMixedグローバル変数の値
unsetBool変数の値をクリアする場合、trueを指定します。

記載例

{assign_globals key='prev_content' value=$content}
{assign_globals var='prev_content' key='prev_content'}

assign_group_nm

グループ名を取得します。

属性

ParamTypeDescription
group_idIntegerグループID (必須)
varString結果を格納する変数名 (必須)
langString言語コード("ja", "en"など)

記載例

{assign_group_nm group_id=100 var='group_nm'}

assign_my_favorite_cnt

自分がお気に入りをつけたコンテンツの数を取得します。

属性

ParamTypeDescription
module_typeStringモジュール名。"topics","comment","member","tag","csvtable","ec_product" のいずれかを指定します。デフォルトは "topics" です。
module_idInteger指定したモジュールにおけるID
varString結果を格納する変数名 (必須)
cookie_flgIntegerクッキー管理のお気に入り取得フラグ
action_typeString対象アクション(デフォルト 0 (like))

記載例

{assign_my_favorite_cnt
module_type="topics"
var="favorite_cnt"
cookie_flg=1}

assign_member_detail

メンバの詳細を返します。

属性

ParamTypeDescription
varString結果を格納する変数名 (必須)
member_idInt値のメンバID (必須)
open_by_groupBooleanfalseのとき、閲覧権限を無視します。デフォルトは true です。
open_flgInt(非推奨) -1のとき、閲覧可能なメンバーの情報しか取得できなくなります。
assign_group_flgBooleanグループ情報も取得するかどうか

記載例

{assign_member_detail var='varname' member_id=7}

assign_new_comment_list

指定したコンテンツにつけられたコメントを、新しいものから順に取得します。

属性

ParamTypeDescription
module_idString指定したモジュールにおけるID
module_typeStringモジュール名。"topics","comment","member","tag","csvtable","ec_product" のいずれかを指定します。デフォルトは "topics" です。
varBoolean結果を格納する変数名 (必須)
new_order_flgStringfalse の場合、結果は昇順で返されます。
cntString結果の数を制限します。デフォルトは 5 です。

記載例

{assign_new_comment_list
module_id=1
module_type='topics'
cnt=5
var='new_comment_list'
}

assign_relation_tag_list

指定したコンテンツに紐づいているタグの一覧を取得します。

属性

ParamTypeDescription
moduleStringモジュール名
module_idInteger指定したモジュールにおけるID(必須)
varString結果を格納する変数名 (必須)
tag_category_idIntegerタグカテゴリで絞り込みたい場合、タグカテゴリIDを指定する (オプション)
tag_relation_listArrayタグの配列。id を持っている配列の配列である必要があります。
指定するとmodulemodule_idは無視され、tag_relation_listで指定したタグの詳細がvarに格納されます。 (オプション)

記載例

{assign_relation_tag_list
module="topics"
module_id=123
var="rel_tag_list"}
{assign_array var=tag1 values=""}
{append var=tag1 index=id value=101}
{append var=tag1 index=tag_nm value="WeaklyRecommended"}

{assign_array var=tag2 values=""}
{append var=tag2 index=id value=102}
{append var=tag2 index=tag_nm value="重要なお知らせ"}

{assign_array var=tag_list values=""}
{append var=tag_list value=$tag1}
{append var=tag_list value=$tag2}

{assign_relation_tag_list
module="topics"
module_id=123
tag_relation_list=$tag_list
var="rel_tag_list"}

assign_tag_category_list

カテゴリータグをリスト化して返します。

属性

ParamTypeDescription
varString結果を格納する変数名 (必須)
langString言語の設定
tree_flgBooleanタグの階層構造 (親タグや子タグなど) の出力に関するフラグ (1でreturnする)

記載例

{assign_tag_category_list [tree_flg=true] var=tag_category_list}

assign_tag_list

タグカテゴリーに紐づくタグを取得します。

属性

ParamTypeDescription
varString結果を格納する変数名 (必須)
category_idIntegerカテゴリータグのIDを指定する (必須)
orderArrayタグの出力順序を指示する配列

記載例

{assign_tag_list category_id='02' var='tag_list'}
{assign_tag_list category_id='02' order='open_contents_cnt:desc' var='tag_list'}
{assign_tag_list category_id='02' order=$tag_order var='tag_list'}

assign_topics_category_list

指定されたカテゴリに紐づくコンテンツの一覧を取得します。

属性

ParamTypeDescription
varString結果を格納する変数名 (必須)
topics_group_idIntegerカテゴリ群のtopics_group_idを指定する (必須)
langString言語設定

記載例

{assign_topics_category_list
topics_group_id=1
var='topics_category_list'}

assign_topics_detail

指定されたコンテンツの詳細情報を取得します。

属性

ParamTypeDescription
varString結果を格納する変数名 (必須)
topics_idIntegerコンテンツのID (必須)
idIntegerコンテンツのID (topics_idまたはidのいずれか1つを指定する. 両方あった場合はtopics_idの値が優先される)
langString言語設定
chk_open_flgBoolean取得するコンテンツを公開中のもののみに限定するかどうか。デフォルトは true です。

記載例

{assign_topics_detail topics_id=100 var='topics_data'}

backup

バックアップを実行します。

属性

ParamTypeDescription
typeString"full" を指定
memoStringバックアップの理由などのメモ
result_varString結果を格納する変数名

記載例

{backup type='full' memo='smarty' result_var='res'}

backup_delete

バックアップを削除します。

バックアップIDを指定するか、バックアップ期間(開始日および終了日)を指定する必要があります。バックアップIDを指定した場合はバックアップ期間(開始日および終了日)は無視されます。

属性

ParamTypeDescription
backup_idStringバックアップIDを指定
start_dateString削除する対象バックアップ期間の開始日を指定
end_dateString削除する対象バックアップ期間の終了日を指定
result_varString結果を格納する変数名。削除に成功した場合はtrue、失敗した場合はfalseを返します。

記載例

{backup_delete backup_id='1234' result_var='res'}
{backup_delete start_date='2020-01-01 00:00:00' end_date='2020-01-01 23:59:59' result_var='res'}

break

foreachやsectionなどのループ内部で利用します。 breakが実行されると、プログラムはただちにループを抜けます。

属性
なし。

記載例

{break}

site_sync

サイト間の同期をします。このプラグインで実行する場合は前回実施から6時間の間隔が必要です。

属性

ParamTypeDescription
from_site_keyString同期元のサイトキー
to_site_keyString同期先のサイトキー
指定が無い場合は自身のサイトに同期します。
sync_typeInteger1:アプリ同期 2:全同期

記載例

{site_sync from_site_key='from_example_key' to_site_key='to_example_key'  sync_type='1'}

batch

バッチ処理を登録する。

属性

ParamTypeDescription
batch_idIntegerバッチID(slugといずれかは必須)
nameStringslug(バッチIDといずれかは必須)
moduleString対象モジュール名(デフォルトバッチを登録する際に利用)
ext_dataArray登録したバッチに渡すデータ
varString登録されたバッチのIDを格納する変数名

記載例

{batch batch_id='1234' ext_data=$ext_data}

child_site

子サイトのデータを取得します。

属性

ParamTypeDescription
site_keyStringサイトキー (必須)
varString結果を格納する変数名 (必須)

記載例

{child_site var='site' site_key='1234'}

continue

foreachやsectionなどのループ内部で利用します。 continueが実行されると、ループ処理の残りの処理をスキップして次のループ処理に移ります。

属性
なし。

記載例

{continue}

Cookieを取得/セットします。

属性

ParamTypeDescription
varString変数名
keyStringキー
valueString文字列
expiresIntegerクッキーの有効期限日数
overwriteInteger上書き

記載例

{cookie key="foo" value="test"}

date

日付に関する変数をassignします。

属性

ParamTypeDescription
varString結果を格納する変数名 (必須)
timeStringstrtotime フォーマット
formatStringフォーマット

記載例

{date var='yesterday' time='Yesterday' format='Y-m-d'}
{date var='today' format='Y-m-d H:i:s'}

function

カスタム関数をコールします。

属性

ParamTypeDescription
varString結果を格納する変数名 (必須)
idIntegerカスタム関数ID
nameStringカスタム関数の識別子

記載例

以下のように、カスタム処理「sub_funtion」に記述しfunctionプラグインで呼び出した場合、変数 $result には "Hello World" が代入されます。

{* 呼び出し元 *}
{function name="sub_function" var="result" param1="Hello" param2="World"}
{* 呼び出し先のカスタム処理。識別子:sub_function *}
{assign var="message" value=$param1|cat:" "|cat:$param2}
{return value=$message}

gcloud_functions_token

Google Cloud Functionsの認証用bearerトークンを取得します。

属性

ParamTypeDescription
varString結果を格納する変数名 (必須)
urlString関数のURL (必須)
sa_secret_nameStringsecret_edit画面で設定したサービスアカウントのシークレット名

記載例

{gcloud_functions_token
var="id_token"
url="https://us-central1-**.cloudfunctions.net/functionName"
sa_secret_key='GCP_MY_CREDENTIAL'}

gcloud_pubsub_publish

Google Cloud Pub/Subのメッセージを配信します。

属性

ParamTypeDescription
varString結果を格納する変数名 (必須)
topicString配信先のTopic名 (必須)
messageAny配信するメッセージ (必須)
projectStringGCPのプロジェクト名
sa_secret_nameStringsecret_edit画面で設定したサービスアカウントのシークレット名

記載例

{gcloud_pubsub_publish
var='result'
project='projectName'
topic='topicName'
message=$message
sa_secret_name='MY_GCP_CREDENTIAL'}

get_file

S3,GCS,外部URLなどからファイルを取得します。

属性

ParamTypeDescription
varString結果を格納する変数名
pathString取得したいファイルのS3/GCS上でのパス
urlString取得したいファイルのURL
bucketString取得したいファイルが置かれているS3/GCSのバケット名
saveBoolean取得したファイルをKurocoの一時領域に保存するかどうか。falseとした場合は保存せずに、varで指定した変数にファイルの内容を保存します。
save_pathString取得したファイルを保存するファイル名

記載例

{get_file path=$path}

generate_pdf

指定されたURLをもとに、PDFや画像を生成します。生成されたファイルはGCS上に保存されます。

なお、generate_pdfでは、ヘッドレスブラウザのPuppeteerを使用しています。ヘッドレスブラウザの幅や高さ下記の各種オプションによって挙動を制御できます。

前提条件
generate_pdfを利用するためには、Firebaseと連携が必要になります。 Firebaseと連携して、Storageにファイルを保存するを参考に連携してください。

属性

項目用途記載例
urlPDF化するページURLを記載します。https://www.diverta.co.jp
path生成したPDFのファイル格納場所を記載します。
files/g/private/ または files/g/public/ 配下となります。
files/g/private/sample.pdf
optionPDF化のオプションを記載します。
browser_widthブラウザ幅を指定します。browser_width=1280
browser_heightブラウザの高さを指定します。browser_height=2560
sleep指定したページをキャプチャするまでの待機時間(ミリ秒)を指定します。sleep=1000
uaユーザーエージェントを指定します。
urlで指定した対象ページが、アクセスしてきたブラウザのユーザーエージェントによって表示が切り替わるようなページの場合にこのオプションを使うと便利です。
注意:正しい文字列を送信しないと意図した通りに切り替わらない可能性があります。対象のWEBサイトの仕様をお確かめの上ご利用ください。
ua="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.88 Safari/537.36"
format保存するファイルのフォーマットを指定します。
pdfpngjpegjpgwebp が指定可能です。
format="png"
cookieログインが必要なURLをPDF化するに指定します。
$smarty.cookies の形式を想定してます。
注意:バッチ処理にてこのプラグインを利用する場合、$smarty.cookies は空になりますので利用できません。pre-process や post-process からカスタム処理をコールする場面でご利用ください。
cookie=$smarty.cookies
domainクッキーのドメインを指定します。domain="www.diverta.co.jp"
overwriteファイルが既に存在する場合に、上書きするかどうかを指定します。overwrite=1
callback_batchPDFが生成された後にKurocoのバッチ処理を実行したい場合に、バッチ処理のスラッグ名を指定します。callback_batch="my_callback_batch"
dataその他のパラメータを指定できます。このパラメータは上述のバッチ処理に引き渡されます。data=$smarty.request.data

記載例

{generate_pdf
url="https://www.diverta.co.jp"
path="files/g/private/sample.pdf"
cookie=$smarty.cookies
domain="www.diverta.co.jp"
}

関連ドキュメント
generate_pdfの具体的な利用方法については、定期的に外部サイトのキャプチャをPDF化する をご確認ください。

github_deploy

GitHub連携し、フロントソースのビルド・デプロイを行います。

属性

ParamTypeDescription
result_varStringtrue: success false: failure

記載例

{github_deploy result_var='res'}

googleanalytics

GoogleAnalyticsからデータを取得し、カウンター用のテーブルに値をセットします。
batchのSmartyプラグインでsync_counterのバッチ処理にコンテンツIDを渡すと、セットした値をコンテンツに反映できます。

属性

ParamTypeDescription
varStringGoogleAnalyticsから取得したデータをアサインする変数名
updated_topics_idsArrayカウンターの値がセットされたコンテンツIDの配列
update_column_slugStringアップデートするカラムのSlug
update_column_indexIntegerアップデートするカラムのindex
update_target_metricString利用するメトリック
update_target_dimensionStringアップデートするカスタムディメンション
topics_group_idIntegerコンテンツ定義ID
startDateString集計開始日。PHPのstrtotime()で解釈できる文字列。デフォルトは7日前。
endDateString集計終了日。PHPのstrtotime()で解釈できる文字列。デフォルトは本日。
queriesStringクエリの直接指定

記載例

{googleanalytics
var="result"
update_column_slug="pv"
update_target_dimension="customEvent:slug"
updated_topics_ids='updated_topics_ids'
topics_group_id=1}

{assign_array var=ext_data values=''}
{assign var=ext_data.topics_ids value=$updated_topics_ids}
{batch module='topics' name='sync_counter' ext_data=$ext_data}

logger

info.logに記録します。 [オペレーション]->[ログイ管理]->[カスタムログ]で確認できます。

属性

ParamTypeDescription
msg1String文字列1(1KB以内)
msg2String文字列2(1KB以内)
msg3String文字列3(1KB以内)
msg4String文字列4(1KB以内)

記載例

{logger msg1=$log1 msg2=$log2}

login

ログインします。

属性

ParamTypeDescription
member_idIntegerメンバーID
overwriteBoolean既にログイン中の場合、現在のセッションを上書きするか(ログインし直すか)。

記載例

{login member_id=2 overwrite=false}

logout

ログアウトします。

属性
なし。

記載例

{logout}

lottery

抽選関数。

属性

ParamTypeDescription
varString結果を格納する変数名 (必須)
cntInteger抜きだすID数
duplicateInteger重複数
idsArray対象のID (必須)
exclude_idsArray除くID

記載例

{lottery
var='foo'
cnt=3
duplicate=0
ids=$ids
exclude_ids=$exclude_ids}

pg_dateformat

日付と時間をフォーマットに基づいて整形します。 フォーマットはDateTimeInterface::format() が受け入れるフォーマットを指定してください。 曜日や月の3文字表記は、現在のロケールによって各言語での表現に変換されます。

属性

PositionTypeDescription
1Stringフォーマット

記載例

{"2024-06-01 12:34:56"|pg_dateformat}
{"2024-06-01 12:34:56"|pg_dateformat:"Y-m-d(D) [H:i:s]"}
{"2024-05-01 12:34:56"|pg_dateformat:'M'}
{"-2 days"|pg_dateformat}
{"-1 hour"|pg_dateformat}

出力結果

2024/06/01(土) 12:34
2024-06-01(土) [12:34:56]
5月
2024/06/19(水) 15:31
2024/06/21(金) 14:31

pg_dateformat2

日付と時間をフォーマットに基づいて整形します。 フォーマットはDateTimeInterface::format() が受け入れるフォーマットを指定してください。 曜日や月の3文字表記は、現在のロケールによって各言語での表現に変換されます。 また、対象の日時が24時間以内の場合には、HTML形式で H:i:s(s秒前に更新) という文字に変換されます。この変換が不要な場合はpg_dateformatをご利用ください。

属性

PositionTypeDescription
1Stringフォーマット

記載例

{"2024-06-01 12:34:56"|pg_dateformat2}
{"2024-06-01 12:34:56"|pg_dateformat2:"Y-m-d(D) [H:i:s]"}
{"2023-05-01 12:34:56"|pg_dateformat2:'M'}
{"-2 days"|pg_dateformat2}
{"-1 hour"|pg_dateformat2}

出力結果

2024/06/01(土) 12:34
2024-06-01(土) [12:34:56]
5月
2024/06/19(水) 15:31
<span style="color:#5FAF23;font-weight:bold;">14:31:42(1時間前に更新)</span>

purge_cdn_cache

CDNキャッシュをパージ(削除)します。

属性

ParamTypeDescription
api_endpointStringエンドポイントのURLを指定します。
moduleStringモジュール名を指定します。現状、topicscsvtableall に対応しています(必須)。
topics_group_idintモジュール名にtopics を指定した場合、コンテンツ定義IDを指定します。
csvtable_idintモジュール名にcsvtable を指定した場合、マスタのIDを指定します。

記載例

{purge_cdn_cache api_endpoint='/rcms-api/1/list'}
{purge_cdn_cache module='all'}
{purge_cdn_cache module='topics' topics_group_id=123}
{purge_cdn_cache module='csvtable' csvtable_id=123}

put_file

ファイルをKurocoFilesまたはS3/GCS領域にアップロードします。

属性

ParamTypeDescription
tmp_pathStringアップロードするファイル。一時フォルダにあるファイルを指定します。
pathStringアップロード先パス
valueStringファイルに出力する内容
files_pathStringKurocoFiles上 のパス /files/(user|ltd)/◯◯◯。tmp_path か files_path のどちらかを指定する必要があります。
bucketStringアップロードする S3/GCSのバケット名

記載例

{put_file tmp_path=$tmp_path path=$upload_path}

read_dir

KurocoFilesに存在するファイルの一覧を取得し、繰り返します。

属性

ParamTypeDescription
nameStringread_dirブロックを識別する名前
file_varObject取得した以下のファイル情報を格納するSmarty変数名
・path:ファイルパス
・size:ファイルサイズ (byte)
・ctime:ファイル内容の変更日時 (タイムスタンプ)
・mtime:ファイル属性(ファイル名など)の変更日時 (タイムスタンプ)
・is_dir:ディレクトリかどうか
pathString取得対象ディレクトリのパス。/files/userまたは/files/ltd 配下を指定
patternStringファイルパスでフィルタをかけたい場合、正規表現で指定
recursiveBooleantrue を指定すると、サブディレクトリの中身も再帰的に取得します。
name_onlyBooleantrue を指定すると、file_varの変数がString形式でファイルパスのみ返すようになります。
typeString'file' か 'dir' を指定すると、それぞれファイルのみ、ディレクトリのみを対象として繰り返します。指定しなかった場合、両方が対象となります。

記載例

{read_dir name="hoge" file_var='file' path='/files/user'}
{$file|@debug_print_var}
{/read_dir}

read_file

ファイルを1行ずつ読み込み、繰り返します。

属性

ParamTypeDescription
nameStringread_fileブロックを識別する名前
pathStringファイルパスを相対パスで/files/から指定。
参照できるディレクトリは以下になります。
  • /files/user/
  • /files/ltd/
  • /files/topics/提供版: β
  • /files/member/提供版: β
rowString読み込んだ1行分の文字列を保存するSmarty変数名
typeStringファイル形式。'txt' か 'csv' か 'jsonl'を指定してください。指定しなかった場合、デフォルトは 'txt' です。
ignore_permission提供版: βBoolean/files/topics/, /files/member/のディレクトリを指定した場合に、true を指定するとファイルが保存されたコンテンツの公開状態や権限設定を無視します。

記載例

{read_file name="hoge" path='foo.txt' row="row"}
{$row|escape}
{/read_file}

rcms_match

preg_match関数を呼び出す。

属性

ParamTypeDescription
varString結果を格納する変数名 (必須)
patternString検索するパターンを表す文字列
subjectString入力文字列
flagsInteger以下のフラグの組み合わせを指定できます。
256 - PREG_OFFSET_CAPTURE : このフラグを設定した場合、各マッチに対応する文字列のオフセットも(バイト単位で)返されます。 var の値を配列に変更することに注意してください。 その配列のすべての要素は、 オフセット 0 で一致した文字列、 およびその文字列のオフセット 1 での subject へのオフセットからなります。
512 - PREG_UNMATCHED_AS_NULL : このフラグが渡されると、マッチしなかったサブパターンは null として通知されます。 渡されなかった場合、空の string として通知されます。
offsetInteger検索の開始位置。デフォルトは先頭から。

記載例

{rcms_match
var='foo'
pattern='/^ex+/'
subject='example'
flags=256}
{rcms_match
var='foo'
pattern='/^ex+/'
subject='example'
flags=512
offset=2}

rcms_match_all

preg_match_all関数を呼び出す。

属性

ParamTypeDescription
varArray結果を格納する変数名 (必須)
patternString検索するパターンを表す文字列
subjectString入力文字列
flagsInteger以下のフラグの組み合わせを指定できます。
1 - PREG_PATTERN_ORDER : varで指定された変数名を仮に$matchesとすると、$matches[0] はパターン全体にマッチした文字列の配列、 $matches[1] は第 1 のキャプチャ用サブパターンにマッチした文字列の配列、 といった順番となります。
2 - PREG_SET_ORDER : $matches[0] は 1 回目のマッチングでキャプチャした値の配列、 $matches[1] は 2 回目のマッチングでキャプチャした値の配列、 といった順序となります。
256 - PREG_OFFSET_CAPTURE : このフラグを設定した場合、各マッチに対応する文字列のオフセットも(バイト単位で)返されます。 これは、matches の値を配列の配列に変更することに注意してください。 その配列のすべての要素は、 オフセット 0 で一致した文字列 およびその文字列のオフセット 1 での subject へのオフセットからなります。
512 - PREG_UNMATCHED_AS_NULL : このフラグが渡されると、 マッチしなかったサブパターンがあった場合 null として通知されます。 このフラグが渡されない場合、 空の string として通知されます。
offsetInteger検索の開始位置。デフォルトは先頭から。

記載例

{rcms_match_all
var='matches'
pattern='|<[^>]+>(.*)</[^>]+>|U'
subject='<b>example: </b><div align=\"left\">this is a test</div>'
flags=2}

{$matches|@debug_print_var}

出力結果

Array (2)
0 => Array (2)
0 => "<b>example: </b>"
1 => "example:"
1 => Array (2)
0 => "<div align=\"left\">this is a test</div>"
1 => "this is a test"

rcms_sort_by_key

連想配列を指定したキーの値でソートします。

記載例

{assign var="product_list" value=$product_list|@rcms_sort_by_key:'price':'asc'}

rcms_strip_tags

文字列から HTML および PHP タグを取り除きます。

記載例

{assign var="output" value=$input|rcms_strip_tags:'<br>'}

rcms_hash

ハッシュ関数を呼び出す。

属性

ParamTypeDescription
varString結果を格納する変数名 (必須)
algoStringアルゴリズム (default=sha256)
dataString対象文字列 (必須)
keyStringHMAC方式の場合は秘密鍵
binaryBooleantrue を指定すると、結果をバイナリで格納します。

記載例

{rcms_hash var='foo' data='hoge' key='salt'}

refresh_cs

MemberCustomSearchを再設定します。

属性

ParamTypeDescription
addArray追加するメンバーカスタムサーチIDの配列

記載例

{refresh_cs}
{assign_array var="custom_search_ids" values="1,2,3"}
{refresh_cs add=$custom_search_ids}

remove_dir

ディレクトリを削除します。

属性

ParamTypeDescription
pathString削除するディレクトリのパス
status_varString削除の結果を格納するSmarty変数名

記載例

{remove_dir path='/files/user/hoge' status_var='status'}

remove_file

ファイルを削除します。

属性

ParamTypeDescription
pathString削除するファイルのパス
bucketString削除するファイルが置かれているS3/GCSのバケット名
status_varString削除の結果を格納するSmarty変数名

記載例

{remove_file path='/files/user/hoge.jpg' status_var='status'}

rename_file

ファイルを移動します。

属性

ParamTypeDescription
src_pathString移動元パス
dest_pathString移動先パス

記載例

{rename_file src_path=$src_path dest_path=$dest_path}

return

カスタム関数を実行した結果とともに、カスタム関数を終了します。

属性

ParamTypeDescription
valueMixedコール元のカスタム関数に値を返します。

記載例
カスタム関数「sub_funtion」に以下のように記述した場合、

{return value="Hello"}

別のカスタム関数で以下のように「sub_function」をコールすると、

{function name="sub_function" var="result"}

変数 $result には "Hello" が代入されます。

save_file

ファイルで保存します。

属性

ParamTypeDescription
valueString保存内容
varString結果を格納する変数名

記載例

{save_file var='path' value=$value}

secret

シークレットを呼び出す。

属性

ParamTypeDescription
varString結果を格納する変数名 (必須)
keyStringシークレットのキー名 (必須)

記載例

{secret var='foo' key='hoge'}

sendmail

メールを送信します。
また、sendmailの引数に与えた変数はメッセージひな形のテンプレート内で利用できます。

属性

ParamTypeDescription
varString結果を格納する変数名。成功したらtrue、失敗したら falseが格納されます。
toString宛先
subjectString件名
contentsString本文
fromStringFROMアドレス
from_nmStringFROMの送信者名
mail_templateStringメッセージひな形の識別子
任意の変数名Stringメッセージひな形のテンプレートに渡す変数を指定します。

記載例1

{sendmail
var='result'
to=$mail_to
subject='testmail'
contents="This is test."
from="test@example.com"
from_nm="test"}

記載例2
以下のようにすると、メッセージひな形で$member_detailの変数が使用できます。

{sendmail
var=result
to=$mail_to
subject='testmail'
mail_template='update_test'
member_detail=$member_detail
from="noreply@kuroco-mail.app"
from_nm="test"}

set_memory

メモリ割り当てを増やします。

属性

ParamTypeDescription
varString指定するメモリ容量。256M,512M,768M のいずれかでなければなりません。

記載例

{set_memory memory_limit='256M'}

slack_get_message

Slackのメッセージを取得します。

属性

ParamTypeDescription
varString結果を格納する変数名
channelStringチャンネルID
tsStringメッセージのタイムスタンプ値

記載例

{slack_get_message
var='message'
channel='XXXXXXXXX'
ts='1675411163.005300'}

slack_post_message

Slackにメッセージ送信します。

属性

ParamTypeDescription
varString結果を格納する変数名。成功したらtrue、失敗したら falseが格納されます。
channelStringチャンネルID
usersArrayユーザーIDの配列
textStringメッセージ本文
thread_tsStringスレッドの親メッセージのタイムスタンプ値

記載例

{slack_post_message
channel='XXXXXXXXX'
users=$users
text='test'}

slack_team_info

Slackのチーム情報を取得します。

属性

ParamTypeDescription
varArray結果を格納する変数名。失敗したら falseが格納されます。
teamString検索条件

記載例

{slack_team_info var='team' team=$team}

sleep

実行を遅延させます。 最短 100ms から最長 1000msまで遅延可能です。

属性

ParamTypeDescription
msIngeterミリ秒単位の停止時間。100以上、100以下の値でなければなりません
範囲外の数値を指定した場合は、100ms または1000msとなります。

記載例

{sleep ms=300}

storage_url

S3/GSC上のファイルを読み込む署名付きURLを取得します。

属性

ParamTypeDescription
varString結果を格納する変数名
pathStringS3/GCS上のパス
expireStringURLの有効期限。デフォルトは '+167 hour'

記載例

{storage_url path=$path var='url' expire="+1 hour" }

strip

囲まれた領域の改行削除と各行にtrimを掛けます。

属性
なし。

記載例

{* 次の例は全て1行に出力されます  *}
{strip}
{foreach from=$contents item=content name='loop1'}
{if $content.topics_group_id == 1}
{$content.subject}
{/if}
{if !$smarty.foreach.loop1.last}
,
{/if}
{/foreach}
{/strip}

strtodate

日付を取得します。

属性

ParamTypeDescription
varString結果を格納する変数名 (必須)
timestampInt|Stringタイムスタンプ
formatStringフォーマット

記載例

{strtodate var='today' timestamp='today' format='Ymd'}

subtract

変数に数値を引き算します。

属性

ParamTypeDescription
varString結果を格納する変数名 (必須)
valueInt数値

記載例

{subtract var='i' value=5}

unzip

Zipファイルを展開します。

属性

PositionTypeDescription
srcString展開するzipファイルパス。https:// から始まるURLか、クラウドストレージ上でのパスである必要があります。
destString展開したファイルを格納するフォルダのパス。KurocoFilesのパス(/files/user/, /files/temp/, /files/ltd/ のいずれかから始まるパス)か、GCS/S3 のパス( /files/g/, /files/a/ のいずれかから始まるパス)である必要があります。
bucketStringバケット名。省略した場合は [外部システム連携] - [Firebase] で設定したStorageが利用されます。
callback_batchStringZip展開処理完了後にコールバックするバッチ処理名
dataMixed任意のデータ。コールバックバッチに引き渡されます。
overwriteInteger展開先フォルダに同名のファイルが存在した場合に上書きするかどうか。0または1。
detect_orderArray展開したファイルのファイル名の文字コードを判別する際の優先順位を指定します。デフォルトでは ["utf8", "cp932", "EUC-JP"] となります。

記載例

{unzip
src='/files/g/private/temp/zip/hoge.zip'
dest='/files/g/private/temp/unzip/'
overwrite=1
callback_batch='batch1'
}

uuid

uuidを取得します。

属性

ParamTypeDescription
varString格納する変数名

記載例

{uuid var='foo'}

rcms_arsort

連想キーと要素との関係を維持しつつ配列を降順にソートします。

注意:配列に対する修飾子になるので、@をつける必要があります。

属性
なし。

記載例

{assign var="result_arr" value=$input_arr|@rcms_arsort}

rcms_asort

連想キーと要素との関係を維持しつつ配列を昇順にソートします。

注意:配列に対する修飾子になるので、@をつける必要があります。

属性
なし。

記載例

{assign var="result_arr" value=$input_arr|@rcms_asort}

rcms_file_size

指定されたファイルサイズを戻します。

属性

PositionTypeDescription
1Integer結果の書式タイプ (default=1)
2Integer小数での結果の精度 (default=2)

記載例

{$row.path|rcms_file_size}

rcms_in_array

in_arrayを使う際に、smarty上でのis_arrayの記述を省くためのプラグイン。

属性

PositionTypeDescription
1Arraylist

記載例

{assign_array var=fruits values="apple,banana,orange"}
{if 'beef'|rcms_in_array:$fruits}
{assign var=message value='beef is fruits.'}
{else}
{assign var=message value='beef is not fruits.'}
{/if}

rcms_krsort

配列をキーで逆順にソートします。

注意:配列に対する修飾子になるので、@をつける必要があります。

属性
なし。

記載例

{assign var="result_arr" value=$input_arr|@rcms_krsort}

rcms_ksort

配列をキーでソートします。

注意:配列に対する修飾子になるので、@をつける必要があります。

属性
なし。

記載例

{assign var="result_arr" value=$input_arr|@rcms_ksort}

rcms_rsort

配列を降順にソートします。

注意:配列に対する修飾子になるので、@をつける必要があります。

属性
なし。

記載例

{assign var="result_arr" value=$input_arr|@rcms_rsort}

rcms_sort

配列を昇順にソートします。

注意:配列に対する修飾子になるので、@をつける必要があります。

属性
なし。

記載例

{assign var="result_arr" value=$input_arr|@rcms_sort}

regex_replace

変数に対して正規表現による検索・置換を行います。

属性

PositionTypeDescription
1String置換するための正規表現
2Stringこの文字列に置換する

記載例

{assign var="string" value="This is KUROCO."}
{$string|regex_replace:"/kuroco/i":"Kuroco"}

{assign var="string" value="12,31,2023"}
{$string|regex_replace:'/(\d+),(\d+),(\d+)/':'$3-$1-$2'}

{assign var="string" value="本日は晴天なり"}
{$string|regex_replace:"/晴天/":"雨天"}

出力結果

This is Kuroco.

2023-12-31

本日は雨天なり

sort_name

言語設定が 英語('en')の場合に姓と名を入れ替えて表示します。

記載例

{'Yamada'|sort_name:'Taro'}
// 言語設定が enの場合は Taro Yamada と表示される。
// 言語設定が en以外の場合は Yamada Taro と表示される。

to_form_options

連想配列を、[['key'=>$key, 'value'=>$value], ...] のような形式に変換します。

属性

PositionTypeDescription
targetArray変換する配列 (必須)

記載例

{assign var='form_options' value=$options_array|@to_form_options}
{assign var='form_options' value=$options_array|@to_form_options:'key':'label'}

to_object

配列を、stdClassオブジェクトに変換します。

属性

PositionTypeDescription
targetArray変換する配列 (必須)

記載例

{assign var='foo' value=$bar|@to_object}

twitter_post_message

Twitterにメッセージを送信します。

属性

PositionTypeDescription
varString結果を格納する変数名
textStringメッセージ

関連ドキュメント
このプラグインを使用するには、[外部システム連携] - [Twitter]の各種項目を設定する必要があります。
Twitterとの連携設定の具体的な手順については、Twitterと連携し、コンテンツ投稿時にTwitterへ自動投稿する をご確認ください。

update_counter

コンテンツのカウンター型の拡張項目の値を更新します。

属性

ParamTypeDescription
varString結果をassignする変数名
valueIntegerセットする数値 (必須)
topics_group_idIntegerコンテンツ定義ID (必須)
slugString対象のコンテンツのID/Slug (必須)
ext_slugString対象の項目のID/Slug (必須)
indexInteger0から始まる繰り返しの順番

記載例

{update_counter
var='result'
value=3
topics_group_id=10
slug='a-content'
ext_slug='a_col_slug'
index=0
}

write_file

ファイルにデータ書き込みます。

属性

PositionTypeDescription
pathStringファイルパス。省略した場合は自動的にユニークなファイル名で一時領域にファイルを書き込みます。
varString書き込んだ一時ファイルパスを格納する変数名(必須)
valueString | Array書き込む内容。配列を指定した場合、CSV形式で書き込みます
is_appendInteger追記モード。0または1。追記モードの場合は、path を指定する必要があります。

記載例

{write_file var="path" value="hoge"}
{write_file path=$path value="foo" is_append=1}
{write_file path=$path value="var" is_append=1}

xmltojson

XMLからJSONに変換します。

属性

ParamTypeDescription
varString結果を格納する変数名 (必須)
xmlStringXML
convert_namespaceInteger1を指定すると名前空間(namespace)を含む要素もJSONにエクスポートします。

記載例

{xmltojson var='json' xml='input'}

zip

クラウドファイルをZip圧縮します。

属性

PositionTypeDescription
entriesArray圧縮するファイルリスト
destStringzipファイルパス。KurocoFilesのパス(/files/user/, /files/temp/, /files/ltd/ のいずれかから始まるパス)か、GCS/S3 のパス( /files/g/, /files/a のいずれかから始まるパス)である必要があります。
bucketStringバケット名。省略した場合は [外部システム連携] - [Firebase] で設定したStorageが利用されます。
callback_batchStringZip圧縮処理完了後にコールバックするバッチ処理名
dataMixed任意のデータ。コールバックバッチに引き渡されます。

記載例

{assign_array var='entries' values=''}

{assign_array var='entry1' values=''}
{append var='entry1' index='name' value='name1'}
{append var='entry1' index='url' value='https://xxxx/xxxx.jpg'}
{append var='entries' value=$entry1}

{assign_array var='entry2' values=''}
{append var='entry2' index='name' value='name2'}
{append var='entry2' index='url' value='https://xxxx/yyyy.jpg'}
{append var='entries' value=$entry2}

{zip entries=$entries dest='/files/user/a.zip' bucket=$bucket}

サポート

お探しのページは見つかりましたか?解決しない場合は、問い合わせフォームからお問い合わせいただくか、Slackコミュニティにご参加ください。