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

Smartyプラグイン

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

KurocoのSmartyエンジンはSmarty 2をベースに、いくつかの言語レベルの拡張を加えたものです。下記の Kuroco独自のSmarty拡張 で説明する挙動は、本ページに掲載されている個別プラグインの話ではなく、Kuroco上で動くすべてのテンプレートに常時適用される仕様です。

Smarty構文の注意:バッククォートを使った変数の埋め込み

Smartyタグの属性値をダブルクォート文字列で書くとき、その中の変数に .[]-> など Smartyが識別子として扱わない文字が含まれている場合は、変数全体をバッククォート(`)で囲む必要があります。囲まないと、ドット記法・ブラケット・アロー演算子の式が文字列中で解析できず、コンパイルエラーになります。

{* OK:単純な $ 変数をダブルクォート属性に入れる *}
{assign var="aa" value="$arg"}

{* OK:バッククォートで囲むと文字列中でも完全な式として展開される *}
{assign var="aa" value="`$arg.name`"}
{assign var="aa" value="`$item[0].title`"}
{assign var="aa" value="`$obj->prop`"}

{* OK:クォートを使わず、式を直接値として渡す *}
{assign var="aa" value=$arg.name}

{* NG:ダブルクォート文字列内の .付き変数をバッククォートで囲んでいない
— Smartyが構文エラーを出してテンプレートのコンパイルに失敗する *}
{assign var="aa" value="$arg.name"}

これはSmarty標準の「埋め込み変数(embedded variables)」の構文です(Smartyマニュアル 参照)。見落とされやすく、AIやエディタの構文ハイライトでも誤読されやすいので、ダブルクォートの属性値の中で .[]-> を含む変数式を書くときは、必ずバッククォート形式を使ってください。

Kuroco独自のSmarty拡張

未定義キーに対する安全な配列アクセス

テンプレート中の配列要素アクセスは、存在しないキーを参照しても警告を出さずに null を返すように扱われます。ブラケット記法・ドット記法のどちらでも同じ挙動です。

{* どちらも、キーが無い場合は警告ではなく null が返る *}
{$arr[key]}
{$config.site.title}

ポイント:

  • 未定義キーを参照しても警告は出ず、null として扱われます。
  • ただし、参照を取るタイプのモディファイア(|@sort|@rsort|@asort|@arsort|@ksort|@krsort|@array_push|@array_pop|@array_shift|@shuffle)がチェーンの先頭に来る場合、この安全装置は適用されません。これらを使うときは、変数が定義済みであることを呼び出し側で保証してください。

|smarty:nodefaults|raw — デフォルトモディファイアの抑止

グローバルにデフォルトモディファイアが設定されている環境では、|smarty:nodefaults(またはエイリアスの |raw)を付けるとその変数だけデフォルト処理を回避できます。

{$html_content|raw}              {* デフォルトのエスケープ等を回避 *}
{$untrusted|smarty:nodefaults} {* 同じ意味 *}

$smarty.* のKuroco固有挙動

参照Kurocoでの挙動
$smarty.cookies無効化。常に null。Cookieはサーバー側で読み取ってください。
$smarty.env無効化。常に null
$smarty.server参照可能ですが、DOCUMENT_ROOTSCRIPT_FILENAMESERVER_SOFTWARESERVER_ADDRSERVER_PORTREMOTE_PORTREDIRECT_STATUS などの機密性の高いキーはテンプレートに渡される前に除外されます。それ以外のキーは通常通り参照できます。
$smarty.rcms_validateKuroco独自。テンプレートがバリデーションモードで実行されているときに真値となります。ドライラン実行時に副作用のある処理をスキップする用途で利用します。
{if !$smarty.rcms_validate}
{* バリデーション実行中はスキップ *}
{api endpoint="..." method="POST" var=resp}
{/if}

{php} ブロックは使用不可

Smarty 2標準の {php}...{/php} ブロックや、テンプレート中の生の <?php ?> タグは Kuroco では使えません。Kuroco は Smarty をセキュリティモードで動作させており、テンプレートから生のPHPを実行することを許可していません。代わりに、プラグインタグ({assign}{assign_array}{append}{api} など)と、後述の許可リストにある関数呼び出しを利用してください。

{if} 条件で利用できるPHP関数

{if} / {elseif} の条件式で呼び出せるPHP関数は、Kurocoの IF_FUNCS 許可リストに含まれるものに限定されます。リストにない関数を条件式で呼ぶと、コンパイル時にエラーとなります。

{if isset($user) && is_array($user) && count($user) > 0}
...
{/if}
種類利用可能な名前
関数is_nullcountis_arrayin_arrayissetis_object
裸の語として書ける擬似定数null / NULLtrue / TRUEfalse / FALSE

これ以外の判定が必要な場合は、事前に {assign} やモディファイアで真偽値を計算し、その結果を {if} で評価するパターンを使ってください。

モディファイア ― プラグインと PHP 関数の通過呼び出し

Kuroco テンプレートで利用できるモディファイアには2つの系統があり、どちらに属しているかを意識しておく必要があります。

  1. モディファイアプラグインmodifier.count.phpmodifier.empty.phpmodifier.in_array.phpmodifier.split.phpmodifier.to_object.php などのファイル単位で実装されたモディファイアです。後述の PHP 関数の許可リストとは無関係に動作します。例: {$arr|@count}{$user|empty}{$item|to_object}。利用可能なプラグインの一覧は本ページ下部の個別プラグイン解説を参照してください。
  2. PHP 関数の通過呼び出し — Kuroco の MODIFIER_FUNCS 許可リストに含まれる PHP 関数は、専用のプラグインファイルが存在しなくても、そのままモディファイアとして呼び出せます。呼び出しは型検証ラッパーを経由するため、引数の型が関数シグネチャと合わない場合は null が返り(バリデーション以外のモードでは Kuroco のエラーパイプライン経由でエラーが通知されます)、PHPのfatalエラーにはなりません。
{$text|strlen}              {* PHP 関数の通過呼び出し *}
{$arr|@count} {* modifier.count.php プラグインで処理される *}
{$value|intval} {* PHP 関数の通過呼び出し *}

挙動に関する注意:

  • @ プレフィックスはあくまでSmarty標準の意味です(「配列要素ごとに適用」ではなく「配列全体を1つの値として渡す」)。Kuroco独自のマーカーではありません。
  • 参照を取る関数(sort、push 等)は前述の 未定義キーに対する安全な配列アクセス の例外リストと連動します。

MODIFIER_FUNCS 許可リスト(PHP 関数の通過呼び出し)

ここに挙げる PHP 関数は、専用プラグインを書かなくてもモディファイアとして呼び出せます。おおよその用途別に分類しています。count / empty / in_array のようにモディファイアプラグイン側で実装されている関数はこのリストには含まれず、本ページ下部の個別プラグイン解説で扱われます。

グループ関数
文字列・テキストstrlensubstrstrstrstrposstriposstrtolowerstrtoupperstr_padtrimnl2brstrip_tagshtmlspecialchars_decodehtml_entity_decodeescapeescapeCSVurlencoderawurldecodemd5password_hashpassword_verify
マルチバイト文字列mb_strlenmb_substrmb_strposmb_striposmb_strwidthmb_strimwidthmb_convert_kanamb_convert_encoding
配列 — 読み取りis_arrayarray_key_existsarray_keysarray_valuesarray_columnarray_searcharray_slicearray_filterarray_uniquearray_diffrangekeyproperty_exists
配列 — 書き込み・ソートarray_pusharray_poparray_shiftarray_mergearray_reversesortrsortksortkrsortasortarsortshuffleimplodeexplodejoinunset
数値・型変換minmaxfloorroundintvalfloatvalstrvalis_numericmt_randnumber_format
日付・時刻strtotimercms_strtotime
URL・エンコードparse_urlhttp_build_querybase64_encodebase64_decodejson_encodefilter_varpathinfo
その他・Kurocoヘルパーhtml_convertcheck_inner_urigetCountryFromIPdefined

拡張された assign() シグネチャ(サーバ側/プラグイン向け)

PHPからテンプレート変数を割り当てる場合、Kurocoの assign() はカスタムプラグインや assign_array 系のタグ実装で利用される追加引数を受け付けます。

$smarty->assign(string|array $var, mixed $value = null, string $type = 'auto', bool $nullable = false);
パラメータ効果
typeauto(既定)、str / stringint / integerbool / booleanfloatarray割り当て前に $value を指定の型へキャストします。
nullablefalse(既定)/ truetrue の場合、明示的なゼロ以外のfalsy値(空文字列等)は型キャストではなく null として保存されます。type=int でも実数の 0 はそのまま 0 として保存されます。

変数名にドットを含めると、ネストした配列構造が自動生成されます(4階層まで対応):

$smarty->assign('user.profile.age', 30);  // -> $user['profile']['age'] = 30
$smarty->assign('items.', $value); // -> $items[] = $value (末尾の空キーはpush扱い)

配列を作るときのベストプラクティス

Smarty 2には配列リテラルの構文がないため、Kurocoテンプレートでは少数のヘルパープラグインを組み合わせて配列を構築します。データ形状に応じて以下のパターンから選んでください。

1. 初期化してからpush(最も一般的)

定番パターン:assign_array で空配列を宣言してから、append で1要素ずつ追加します。Kuroco内のテンプレートで最もよく見られる形です。

{assign_array var=items values=""}
{append var=items value="first"}
{append var=items value="second"}
{append var=items value=$dynamic_value}

連想配列にしたい場合は {append}index を渡します:

{assign_array var=person values=""}
{append var=person index="name" value="Katoh"}
{append var=person index="age" value=28}

2. 区切り文字列から一発で生成

静的な値であれば、1つのタグで配列を生成できます:

{* リスト *}
{assign_array var=colors values="red,green,blue"}

{* 区切り文字を変更(値にカンマが含まれるとき) *}
{assign_array var=paths values="/a;/b;/c" delimiter=";"}

{* 連想配列(keysとvaluesの個数を一致させる) *}
{assign_array var=opts keys="host,port,ssl" values="example.com,443,true"}

3. ドット記法でネスト構造を作る

標準の {assign} タグと、拡張された assign() シグネチャ は、変数名にドットを含めることでネスト構造を1ステップで生成できます(4階層まで):

{assign var="user.profile.name" value="Katoh"}
{assign var="user.profile.age" value=28}
{assign var="user.roles." value="admin"} {* 末尾ドットは $user.roles へのpush *}
{assign var="user.roles." value="editor"}

結果:

user => Array
profile => Array (name=Katoh, age=28)
roles => Array ("admin", "editor")

4. イミュータブル版 — 元の配列を変更しない

{append}var を破壊的に更新します。元の配列をそのまま残して別の配列を派生させたい場合は assign_array_set を使用します:

{assign_array_set var=updated from=$original key="status" value="done"}
{* $original は変更されず、$updated にだけキーが追加される *}

パターンの選び方

形状推奨パターン
インデックス配列、要素が静的に決まる{assign_array values="a,b,c"}
インデックス配列、ループ中に追加する{assign_array values=""} + {append}
1階層の連想配列{assign_array keys=... values=...} または {append index=...}
ネストした構造(オブジェクト風){assign var="a.b.c" value=...} のドット記法
元の配列を保持したまま派生させる{assign_array_set}

配列に関する注意点

  • 配列以外の値に対するインデックスアクセスを当てにしない。 未定義キーに対する安全な配列アクセス の挙動により、{$x[0]} のアクセスは配列でなくても警告を出さずに null を返します。意図しない値を「値あり」と誤読しやすいので、要素アクセスする前に {assign_array} で配列として明示的に初期化してください。
  • {append} を呼ぶ前に必ず配列として初期化する。 リストを作るときはまず {assign_array var=foo values=""} で受け側を配列として確定させてから {append} を呼んでください。未初期化の変数やスカラー値が入った変数に {append} を行うと、特に {include} をまたいだ場合に想定通りの配列にならないことがあります。

add

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

属性

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

記載例

{add var=i value=5}

api

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

属性

項目用途記載例備考
endpointエンドポイント(必須)https://example.com/brah/
methodメソッドPOST/GET/PATCH/PURGE/PUT/DELETE/HEAD
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ログに出力されますので、設定時にご参照ください。

VercelにDeploy Hookを送信する
外部のホスティングサービスにビルドトリガーを送るWebhookとして利用できます。

{api
endpoint='https://api.vercel.com/v1/integrations/deploy/prj_******************'
method="POST"
var=response
status_var=status
}

関連ドキュメント
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}
{*  detailsのエンドポイントの場合はmethod_paramsでidを指定する *}
{assign_array var='method_params' values=''}
{assign var='method_params.ext_group' value=true}
{assign var='method_params.topics_id' value=1234}
{api_method
var='topics_details'
model='Topics'
method='details'
version='1'
method_params=$method_params}

test:{$topics_details|@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'}

api_token

APIトークン(静的アクセストークンまたは動的アクセストークン)を取得します。

属性

ParamTypeDescription
varStringトークンを代入する変数名 (必須)
typeStringトークンタイプ: static(静的アクセストークン)または dynamic(動的アクセストークン)(必須)。対象APIのセキュリティ設定に対応するタイプを指定してください。
api_idIntegerAPI ID (必須)。管理画面の「API」一覧画面で確認できます。
expiresInteger有効期限(秒)。staticトークンの新規生成時、およびdynamicトークンで使用
memoStringメモ(staticトークンで使用)。デフォルト: Generated by Smarty api_token plugin
expires_varStringトークンの有効期限(Unixタイムスタンプ)を代入する変数名 提供版: β

記載例

{* 静的トークンを取得 *}
{api_token var="static_token" type="static" api_id=1}

{* 動的トークンを取得(有効期限1時間) *}
{api_token var="dynamic_token" type="dynamic" api_id=1 expires=3600}

{* staticトークンを新規生成する場合にメモを付与 *}
{api_token var="token" type="static" api_id=1 memo="Batch process token"}

{* トークンと有効期限を同時に取得 *}
{api_token var="token" type="dynamic" api_id=1 expires=3600 expires_var="token_expires"}
Token: {$token}
Expires at: {$token_expires|date_format:"%Y-%m-%d %H:%M:%S"}
注記
  • static トークンの場合、既存の有効なトークンがあればそれを返し、なければ新しいトークンを生成します。既存の有効なトークンが存在する場合、expires は無視されます。
  • dynamic トークンの場合、常に新しいトークンを生成します。現在のセッションのログインメンバーとしてトークンが発行されます(セッションがない場合は、特定のメンバーに紐づかないトークンとして発行されます)。

append

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

属性

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

記載例

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

array_key_exists

配列にキーが存在するかどうかを確認します。PHP5互換のSmartyモディファイアです。

属性

パラメータ説明
arrayArrayチェック対象の配列(必須)

戻り値

キーが配列に存在する場合は true、存在しない場合は false を返します。第二引数が配列でない場合も false を返します。

記載例

{if $key|array_key_exists:$array}Key exists{/if}

{* 数値キーのチェック *}
{if 0|array_key_exists:$array}First element exists{/if}

補足:

  • 値ではなくキーの存在を確認します。値が null の場合でも true を返します。
  • 第二引数が配列でない場合は安全に false を返します。

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" など。
filterStringfilterの条件を指定します。(optional)
allow_listStringfilterするkey名を指定します(filterを利用する場合は必須)

記載例

{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_csv_table csvtable_id=X var="sample_table3" filter="key=\"test\"" allow_list="key"}
{$sample_table3|@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_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_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_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 (必須)
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'}

batch

バッチ処理を登録する。

属性

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

記載例

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

break

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

属性
なし。

記載例

{break}

capitalize

各単語の先頭文字を大文字に変換します。

属性

パラメータ説明
uc_digitsBoolean数字で始まる単語も大文字化するかどうか(任意、デフォルト false

戻り値

先頭文字が大文字化された文字列。

記載例

{$title|capitalize}
{"hello world"|capitalize} {* Hello World *}
{"test 123abc hello"|capitalize} {* Test 123abc Hello *}
{"test 123abc hello"|capitalize:true} {* Test 123Abc Hello *}
{"it's a test"|capitalize} {* It's A Test *}

補足:

  • 単語の先頭がアポストロフィ ' で始まる場合は大文字化されません。
  • デフォルトでは数字で始まる単語は変換されませんが、uc_digits=true を指定すると数字始まりの単語も大文字化されます。
  • 単語境界(\b)で判定するため句読点を含む文字列も正しく扱われ、it's のようなアポストロフィを含む語もひとつの単語として扱われます。

cat

変数に値を連結します。

属性

パラメータ説明
catMixed連結する値(任意、デフォルト ""

戻り値

連結された文字列。

記載例

{$name|cat:" Smith"}
{"Hello"|cat:" World"}
{$path|cat:".txt"}
{$count|cat:" items"}

補足:

  • 両オペランドは is_scalar() で判定され、配列・オブジェクト・null などの非スカラー値はエラーにならず空文字列として扱われます。
  • 真偽値は PHP 標準に従い true"1"false"" に変換されます。

child_site

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

属性

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

記載例

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

continue

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

属性
なし。

記載例

{continue}

conv_bool

内部関数 convBool() を使用して値を真偽値に変換します。フォーム入力や API レスポンス内の文字列など、さまざまな真偽相当の値を厳密な真偽値に正規化したいときに便利です。

記載例

{$value|conv_bool}

{* 条件分岐での利用 *}
{if $string_value|conv_bool}
Value is truthy
{/if}

Cookieを取得/セットします。
値は rcms_api_local という単一のCookieにJSON形式で保存されます。

属性

ParamTypeDescription
varString取得した値を格納する変数名
keyStringCookie内のキー名
valueStringセットする値(指定するとセット、省略すると取得)
expiresIntegerクッキーの有効期限日数
overwriteInteger上書きフラグ(1: 既存の値を上書き / 0: 既存の値がある場合はスキップ)

記載例

セット:

{* key="foo" に値 "test" をセットする(有効期限30日、上書きあり) *}
{cookie key="foo" value="test" expires=30 overwrite=1}

取得:

{* key="foo" の値を取得して変数 $myVar に格納する *}
{cookie key="foo" var="myVar"}
{$myVar} {*"test" *}

count

配列の要素数をカウントします。PHP7互換のSmarty countモディファイアです。

戻り値

配列の要素数を表す整数を返します。入力が配列でない場合は 0 を返します。

記載例

{$array|count}

補足:

  • インデックス配列と連想配列のどちらでも動作し、空配列に対しては 0 を返します。
  • PHP ネイティブの count() とは異なり、非配列値に対して 1 ではなく 0 を返します。

count_characters

テキストに含まれる文字数をカウントします。

属性

パラメータ説明
include_spacesBoolean空白文字をカウントに含めるか(任意、デフォルト false

戻り値

文字数を表す整数。

記載例

{"Hello World"|count_characters}       {* 10 *}
{"Hello World"|count_characters:true} {* 11 *}
{"Tab\there"|count_characters} {* 7 - excludes tab *}

補足:

  • include_spaces=false(デフォルト)の場合、空白・タブ・改行・キャリッジリターン・改ページ・垂直タブはカウントから除外されます。
  • マルチバイト非対応 — バイト単位でカウントするため、ASCII やシングルバイトエンコーディングでの利用を想定しています。

count_paragraphs

テキストの段落数をカウントします。

戻り値

段落数を表す整数。

記載例

{$article|count_paragraphs}
{"First paragraph\n\nSecond paragraph"|count_paragraphs} {* 2 *}
{"Line1\nLine2\nLine3"|count_paragraphs} {* 3 *}
{"Single line"|count_paragraphs} {* 1 *}

補足:

  • 1 文字以上の改行コード(\r\n\r\n)でテキストを分割し、得られた要素数を返します。
  • 連続する改行はひとつの区切りとして扱われ、空文字列は 1 を返します。

count_sentences

テキストに含まれる文の数をカウントします。

戻り値

文の数を表す整数。

記載例

{$text|count_sentences}
{"Hello. How are you? I'm fine."|count_sentences} {* 3 *}
{"Mr. Smith went home."|count_sentences} {* 1 - "Mr." not counted *}
{"End of line."|count_sentences} {* 1 *}

補足:

  • 直前が非空白で直後が単語文字でないピリオドのみをカウントします。そのため Dr.Mr. のような略語の後に文字列が続く場合はカウントされません。
  • カウント対象はピリオドのみで、?! はカウントされません。

count_words

テキストの単語数をカウントします。

戻り値

単語数を表す整数。

記載例

{$text|count_words}
{"Hello world 123"|count_words} {* 3 *}
{" spaces only "|count_words} {* 2 *}
{"!!!"|count_words} {* 0 - no alphanumerics *}

補足:

  • 空白でトークンに分割した後、英数字(ASCII の a-z/A-Z/0-9、および拡張・マルチバイト領域 0x800xff)を 1 文字以上含むトークンだけをカウントします。
  • 句読点だけからなるトークンは単語としてカウントされません。

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'}

date_format

PHP の date() フォーマットを使ってタイムスタンプを整形します。

属性

パラメータ説明
formatString日付フォーマット文字列(任意、デフォルト 'Y-m-d'
default_dateString入力が空のときに使用するデフォルト日付(任意、デフォルト ''

戻り値

整形された日付文字列。入力と default_date の両方が空の場合は何も返しません。

記載例

{$timestamp|date_format}
{$date|date_format:"%Y-%m-%d"}
{$datetime|date_format:"Y-m-d H:i:s"}
{"2024-01-15"|date_format:"F j, Y"}
{$maybe_empty|date_format:"Y-m-d":"2024-01-01"}

補足:

  • 入力のパースには smarty_make_timestamp() を使用し、Unix タイムスタンプ・日付文字列・MySQL 形式の値などをサポートします。
  • フォーマット文字列に % が含まれている場合、strftime 形式のコード(%YY%mm%dd%HH%Mi%Ss など)を PHP date() 用の書式に変換してから整形します。

debug_print_var

デバッグコンソールで表示する用に変数の内容を整形します。

属性

パラメータ説明
depthInteger現在の再帰深度(内部利用、任意、デフォルト 0
lengthInteger切り詰めまでの最大文字数(任意、デフォルト 300

戻り値

HTML 形式に整形された変数表現。

記載例

{$var|debug_print_var}
{$array|debug_print_var:0:100}

補足:

  • 配列は Array (件数)、オブジェクトは ClassName Object (件数)、真偽値は <i>true</i>/<i>false</i>null<i>null</i> として表示します。
  • 特殊文字は HTML のイタリック(<i>\n</i><i>\r</i><i>\t</i>)として描画され、文字列は rcms_mbtruncate()... を付けて切り詰められます。出力は htmlspecialchars() でエスケープされます。

default

空の変数に対するデフォルト値を提供します。

属性

パラメータ説明
defaultMixed空の場合に返すデフォルト値(任意、デフォルト ''

戻り値

入力が未設定または空文字列のときは default、そうでなければ元の値を返します。

記載例

{$name|default:"Anonymous"}
{$count|default:0}
{$message|default:"No message"}

補足:

  • 未設定の値、または空文字列 ''(厳密比較)だけを「空」とみなします。
  • 0false などの falsy な値は「空」として扱いません。この点が PHP の empty() とは異なります。

detect_document_text

PDF/TIFFファイルからGoogle Cloud Vision APIを使用してテキストを検出(OCR)します。

備考

このプラグインはバッチ処理、または管理画面のテストモードでのみ実行可能です。

属性

ParamTypeDescription
varString結果を代入する変数名 (必須)
dirStringファイルディレクトリ(例: /files/topics)(必須)
file_nmStringファイル名(module_id未使用時に必須)
module_idIntegerモジュールID(file_nm未使用時に必須)
ext_idInteger拡張項目ID
noIntegerファイル番号(デフォルト: /files/topics の場合は 0、それ以外は null
langString言語コード
slugStringスラッグ
typeString出力形式: "text"(デフォルト)または "array"
no_cacheBooleanキャッシュを無効にする(デフォルト: false

対象ファイルの指定方法は2つあります。

  1. ファイル名で指定: dirfile_nm を指定します。
  2. モジュールパラメータで指定: dirmodule_id を指定し、必要に応じて ext_idnolangslug などのオプションパラメータを指定します。

出力形式

  • type="text"(デフォルト)の場合: 全ページの検出テキストが改行2つ(\n\n)で結合された文字列として返されます。
  • type="array"の場合: page(ページ番号)とvalue(検出テキスト)を含むオブジェクトの配列として返されます。

エラーが発生した場合(対応していないファイル形式、ファイルが見つからない等)は、空配列[]が変数に代入されます。

対応ファイル形式

  • PDF (.pdf)
  • TIFF (.tiff)
注意

S3にホスティングされているファイルは対応していません。

利用可能なファイルディレクトリ

このプラグインを利用可能なファイルは以下になります。

  • /files/topics (GCS/KurocoFiles)
  • /files/inquiry (GCS/KurocoFiles)
  • /files/member/ext (GCS/KurocoFiles)
  • /files/d (KurocoFiles)

キャッシュ

抽出されたテキストはデータベースにキャッシュされます。同一ファイルに対する次回以降の呼び出しでは、ファイルが更新されていなければキャッシュされた結果が返されます。no_cache=trueを指定するとキャッシュを無効化できます。

記載例

{* ファイル名で指定 *}
{detect_document_text var="text" dir="/files/d" file_nm="document.pdf"}

{* モジュールIDで指定 *}
{detect_document_text var="text" dir="/files/topics" module_id=123 ext_id=1}

{* 配列形式で取得 *}
{detect_document_text var="pages" dir="/files/d" file_nm="document.pdf" type="array"}

{* キャッシュ無効化 *}
{detect_document_text var="text" dir="/files/topics" module_id=123 ext_id=1 no_cache=true}

empty

値が空かどうかを判定します。stdClass オブジェクトについては拡張された処理を行います。

戻り値

空の場合は true、それ以外は false を返します。

記載例

{if $value|empty}Value is empty{/if}

{* オブジェクトに対しても動作 *}
{if $object|empty}Object has no properties{/if}

補足:

  • 空とみなされる値: 空文字列 ""0nullfalse、空配列 []
  • プロパティを持たない stdClass オブジェクトについても true を返します。API レスポンスが空オブジェクトを返すケースなどで便利で、PHP ネイティブの empty() とは挙動が異なります。

escape

指定したタイプに従って文字列をエスケープします。

属性

パラメータ説明
esc_typeStringエスケープタイプ: htmlhtmlallurlurlpathinfoquoteshexhexentitydecentityjavascriptmailnonstd(任意、デフォルト 'html'
char_setString文字セット(任意、デフォルト 'UTF-8'

戻り値

エスケープされた文字列。

記載例

{$html|escape}
{$html|escape:"html"}
{$url|escape:"url"}
{$js_string|escape:"javascript"}
{$email|escape:"mail"}

補足:

  • 主なエスケープタイプ: htmlENT_QUOTES 付きの htmlspecialchars)、htmlallENT_QUOTES 付きの htmlentities)、urlrawurlencode)、urlpathinfourl と同様だが / を保持)、quotes(未エスケープのシングルクォートをエスケープ)、hex/hexentity/decentity(1 文字単位のエンコード)、javascript(バックスラッシュ・クォート・改行のエスケープと </<\/)、mail@.[AT][DOT] に置換)、nonstd(文字コード 126 以上の文字をエスケープ)。
  • null や非スカラー値は空文字列を返します。未知のエスケープタイプを指定した場合は入力をそのまま返します。

explode

区切り文字で文字列を配列に分割します。PHP8 互換で型安全に処理します。

属性

パラメータ説明
stringString/Number分割対象の文字列(必須)

戻り値

区切り文字で分割した文字列の配列。空文字列または文字列・数値以外の型が渡された場合は空配列 [] を返します。

記載例

{* 基本的な分割 *}
{','|explode:$csv_string}

{* パスの分割 *}
{'/'|explode:$file_path}

{* 数値入力も使用可 *}
{'-'|explode:12345}

補足:

  • 区切り文字を修飾子入力として渡し、分割対象の文字列はコロンの後に指定します。
  • 数値(int/float/double)は自動的に文字列に変換されてから分割されます。
  • 正規表現はサポートされず、リテラル区切り文字のみを扱います。正規表現が必要な場合は split モディファイアを使用してください。

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_name='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'}

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化する をご確認ください。

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}
{get_file url="https://www.diverta.co.jp/RSS.rdf" save_path="/files/user/rss/RSS.rdf" var="temp"}
{get_file url="https://www.diverta.co.jp/RSS.rdf" var="temp_file" save=false}
{if $temp_file|strlen>0}
ファイルが見つかりました
{else}
ファイルが見つかりません
{/if}

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}

gzip

ファイルをgzip圧縮してクラウドストレージにアップロードします。

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

備考

保存先(dest)はGCSパス(/files/g/)である必要があります。KurocoFilesのパス(/files/user//files/temp//files/ltd/)は保存先としてサポートされていません。

属性

ParamTypeDescription
file_urlString圧縮するファイルのパス。GCSパス(/files/g/)、またはhttps://から始まるURLを指定できます。KurocoFilesのパス(/files/user//files/temp//files/ltd/)は直接サポートされていませんが、KurocoFiles(公開)のファイルについては公開URL(例: https://[site].g.kuroco-img.app/files/user/...)を使用することで指定可能です。(必須)
destStringgzipファイルを保存するパス。GCSパス(/files/g/)である必要があります。
bucketStringバケット名。省略した場合は [外部システム連携] - [Firebase] で設定したStorageが利用されます。
callback_batchStringgzip圧縮処理完了後にコールバックするバッチ処理の識別子
dataMixed任意のデータ。コールバックバッチに引き渡されます。

出力変数

変数名説明
gzip_destgzipファイルが保存されるパス。実行後に自動的にassignされます。

記載例

{gzip
file_url='https://[site].g.kuroco-img.app/files/user/data.csv'
dest='/files/g/public/data.csv.gz'
}
{gzip
file_url='/files/g/private/test/image.png'
dest='/files/g/public/test/image.gz'
callback_batch='gzip_complete_handler'
data=$callback_data
}

html5_check

HTML5の構文検証を行います。指定されたHTMLコンテンツに対してHTML5の構文チェックを実行し、エラーがあった場合は詳細な情報を変数に格納します。

属性

ParamTypeDescription
htmlString検証するHTMLコンテンツ (必須)
varStringエラー結果を格納する変数名 (デフォルト: 'html5_errors')

記載例

{html5_check html=$html_content var="myErrors"}
{if $myErrors|@count > 0}
{foreach from=$myErrors item=error}
<p>{$error}</p>
{/foreach}
{/if}

implode

区切り文字を使って配列要素を文字列に連結します。PHP7 互換で引数順序を柔軟に扱えます。

属性

パラメータ説明
value1String or Array区切り文字、または連結する配列(必須)
value2String or Array連結する配列、または区切り文字(任意、デフォルト null

戻り値

すべての配列要素を区切り文字で連結した文字列を返します。配列が null または空の場合は空文字列 '' を返します。引数の組み合わせが該当しない場合は null を返します。

記載例

{* 標準的な引数順: separator|implode:array *}
{assign var='arr' value='["1","2","3"]'|json_decode}
{','|implode:$arr} {* 出力: '1,2,3' *}

{* 区切り文字を省略(空文字列で連結) *}
{$arr|@implode} {* 出力: '123' *}

{* PHP7 互換のレガシー順: array|@implode:separator *}
{$arr|@implode:','} {* 出力: '1,2,3' *}

{* 区切り文字 + null 配列(空文字列を返す) *}
{','|implode:null} {* 出力: '' *}

補足:

  • 標準形式(separator|implode:array)とレガシー形式(array|@implode:separator)の両方の引数順に対応しています。
  • 配列を第一引数に渡す場合は、Smarty が要素ごとに反復処理しないよう @ を付けて使用してください。

in_array

配列内に値が存在するかをチェックします。PHP7 互換で型を安全に扱います。

属性

パラメータ説明
haystackArray検索対象の配列(必須)
strictBooleantrue の場合は厳密な型比較(===)を行う(任意、デフォルト false

戻り値

値が配列内に見つかった場合は true、それ以外は false を返します。haystack が配列でない場合も false を返します。

記載例

{* 基本的な使用例 *}
{if $value|in_array:$array}Value exists{/if}

{* 厳密な型比較 *}
{if $value|in_array:$array:true}Value exists (strict){/if}

{* $array が配列でなくても安全に動作 *}
{if "apple"|in_array:$fruits}Apple is in the list{/if}

補足:

  • haystack が配列でない場合もエラーにはならず、安全に false を返します。
  • デフォルトは緩やかな比較で、第三引数に true を渡すと厳密比較に切り替わります。

increment_counter

コンテンツのカウンター型の拡張項目の値に指定した数値を加算します。

属性

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

記載例

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

indent

テキストの各行をインデントします。

属性

パラメータ説明
charsIntegerインデント文字数(任意、デフォルト 4
charStringインデントに使う文字(任意、デフォルト " "

戻り値

インデント済みの文字列。

記載例

{$code|indent}
{$text|indent:8}
{$html|indent:2:"\t"}

補足:

  • マルチライン正規表現を使ってすべての行頭(先頭行を含む)にインデントを挿入します。
  • スペース以外の任意の文字(タブなど)も指定でき、コード整形や入れ子のコンテンツに便利です。

join

区切り文字を使って配列要素を文字列に連結します。implode モディファイアのエイリアスで、機能は同一です。

属性

パラメータ説明
value1String or Array区切り文字、または連結する配列(必須)
value2String or Array連結する配列、または区切り文字(任意、デフォルト null

戻り値

すべての配列要素を区切り文字で連結した文字列を返します。配列が null または空の場合は空文字列 '' を返します。引数の組み合わせが該当しない場合は null を返します。

記載例

{* 標準的な引数順: separator|join:array *}
{assign var='arr' value='["1","2","3"]'|json_decode}
{','|join:$arr} {* 出力: '1,2,3' *}

{* 区切り文字を省略(空文字列で連結) *}
{$arr|@join} {* 出力: '123' *}

{* PHP7 互換のレガシー順: array|@join:separator *}
{$arr|@join:','} {* 出力: '1,2,3' *}

{* 文字列入力(そのまま返される) *}
{assign var='str' value='foo'}
{$str|join} {* 出力: 'foo' *}

補足:

  • joinimplode に処理を委譲します。標準・レガシーの両方の引数順をサポートし、配列を第一引数に渡す場合は @ を付けてください。

json_decode

JSON 文字列をデコードして PHP の値に変換します。

属性

パラメータ説明
assocBooleantrue のときはオブジェクトではなく連想配列として返す(任意、デフォルト true

戻り値

デコードされた値。デフォルトでは JSON オブジェクトを連想配列として返します。入力が文字列でない場合や JSON が無効な場合は null を返します。

記載例

{* 基本的な使用例 - デフォルトで連想配列を返す *}
{assign var='data' value='{"name":"John","age":30}'|json_decode}
{$data.name} {* 出力: John *}

{* JSON 配列のデコード *}
{assign var='items' value='["apple","banana","orange"]'|json_decode}
{$items[0]} {* 出力: apple *}

{* 配列ではなくオブジェクトとして返す *}
{assign var='obj' value='{"name":"John"}'|json_decode:false}
{$obj->name} {* 出力: John *}

補足:

  • PHP ネイティブの json_decode() と異なり、assoc のデフォルトは true で、連想配列として返します。
  • 入力が文字列でない場合や JSON が不正な場合は null を返します。API レスポンスや DB に格納された JSON データを解析するのに便利です。

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}

lower

文字列を小文字に変換します。

記載例

{"HELLO"|lower}        {* hello *}
{$name|lower}
{"ABC123"|lower} {* abc123 *}

補足:

  • PHP の strtolower() をそのまま使用するためマルチバイト非対応です。UTF-8 を扱う場合は型ガード付きの strtolower モディファイアか、PHP の mb_strtolower() を利用してください。

mb_truncate

指定された長さに文字列を切り詰めます(マルチバイト対応)。

属性

パラメータ説明
lengthInteger最大長(任意、デフォルト 80
etcString切り詰めたときに末尾に付与する文字列(任意、デフォルト '...'
break_wordsBoolean単語の途中で切るかどうか(任意、デフォルト false
middleBoolean真ん中で切り詰めるかどうか(任意、デフォルト false

戻り値

切り詰めた文字列。

記載例

{$long_text|mb_truncate:50}
{$text|mb_truncate:30:"...":true}
{$string|mb_truncate:100:"[more]":false:true}

補足:

  • mb_strlen/mb_substr を使用しており、UTF-8 などマルチバイトエンコーディングでも安全に動作します。
  • etc の長さは出力全体の長さに含まれます。middle=true の場合は先頭半分と末尾半分を残し、その間を etc でつなぎます。
  • 文字列が length 以下の場合はそのまま返されます。length=0 のときは即座に空文字列を返します。

mbtruncate

マルチバイト文字対応で文字列を切り詰めます。内部的に rcms_mbtruncate() 関数に委譲します。

属性

パラメータ説明
lengthInteger結果の最大文字数(任意、デフォルト 80
etcString切り詰め時に追加される接尾辞(任意、デフォルト '...'

戻り値

切り詰められた文字列を返します。切り詰めが発生した場合はオプションの接尾辞が付きます。

記載例

{* 基本的な使用例(デフォルト80文字、'...'接尾辞) *}
{$long_text|mbtruncate}

{* カスタム長さ *}
{$text|mbtruncate:50}

{* カスタム長さと接尾辞 *}
{$text|mbtruncate:100:'...more'}

{* 接尾辞なし *}
{$text|mbtruncate:50:''}

マルチバイト文字(日本語、中国語、韓国語など)を適切に処理し、マルチバイト文字の途中で切断することはありません。

msgpack_pack

データをMessagePackバイナリ形式に変換します。

注意:配列に対する修飾子になるので、@をつける必要があります。スカラー値(文字列、数値など)もpackできますが、msgpack_unpackはデコード結果が配列またはオブジェクトの場合のみデータを返すため、unpcackできない点にご注意ください。

属性

PositionTypeDescription
targetMixed変換するデータ (必須)。null、スカラー値(int、float、bool、string)、配列、またはstdClassオブジェクトのみで構成されている必要があります。

記載例

{assign_array var='data' values="test,1234"}
{assign var='packed' value=$data|@msgpack_pack}

戻り値

成功した場合はMessagePackバイナリデータを返します。入力データに無効な型(リソースやカスタムオブジェクトなど)が含まれている場合、またはエンコードに失敗した場合はfalseを返します。

msgpack_unpack

MessagePackバイナリデータを配列またはオブジェクトにデコードします。

注意:この修飾子はデコード結果が配列またはオブジェクトの場合のみデータを返します。元のpackされたデータがスカラー値(文字列、数値など)の場合はfalseが返されます。

属性

PositionTypeDescription
targetStringデコードするMessagePackバイナリ (必須)

記載例

{assign_array var='data' values="test,1234"}
{assign var='packed' value=$data|@msgpack_pack}
{assign var='unpacked' value=$packed|msgpack_unpack}

{$data|@debug_print_var}
{$unpacked|@debug_print_var}

戻り値

成功した場合はデコードされたデータ(配列またはオブジェクト)を返します。入力が有効な文字列でない場合、デコードに失敗した場合、またはデコード結果が配列やオブジェクトでない場合はfalseを返します。

nl2br

改行を HTML の <br> タグに変換します。

戻り値

各改行の前に <br /> タグが挿入された文字列。

記載例

{$text|nl2br}
{"Line 1\nLine 2"|nl2br}
{* 出力: Line 1<br />
Line 2 *}

補足:

  • PHP の nl2br() をそのまま使用しており、\r\n\r\n の前に <br /> を挿入しますが、もとの改行文字はそのまま残します。
  • 連続する改行はそれぞれが個別に <br /> タグに変換されます。

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>

property_exists

オブジェクトまたはクラスにプロパティが存在するかどうかをチェックします。

属性

パラメータ説明
propertyStringチェックするプロパティ名(必須)

戻り値

プロパティが存在する場合は true、存在しない場合は false。プロパティ名が文字列でない場合や、第一引数がオブジェクトでも文字列(クラス名)でもない場合は false を返します。

記載例

{* オブジェクトにプロパティがあるかチェック *}
{if $object|property_exists:'name'}Object has name property{/if}

{* クラス名でチェック *}
{if 'MyClass'|property_exists:'staticProperty'}Class has static property{/if}

オブジェクトまたはクラス名を修飾子入力として渡し、プロパティ名はコロンの後に指定します。プロパティの値が null であっても存在チェックは true を返します。

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}

rcms_arsort

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

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

属性
なし。

記載例

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

rcms_asort

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

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

属性
なし。

記載例

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

rcms_encrypt

指定の文字列を暗号化キーを利用して暗号化/復号化できます。
サイトキーの異なるサイトでencryptしたデータは、decryptすることができません。

属性

ParamTypeDescription
varString結果を格納する変数名 (任意)
actionString'encrypt' または 'decrypt' (必須)
dataString暗号化/復号化するデータ文字列 (必須)
keyString暗号化キー (必須) - 基本的にはシークレットの値を利用してください。
sanitizeBoolean復号化されたデータをサニタイズするかどうか (デフォルト: true)

記載例

{secret var='secret_key' key='secret_key'}
{rcms_encrypt var='encrypted_value' action='encrypt' data=$plaintext key=$secret_key}
{rcms_encrypt var='decrypted_value' action='decrypt' data=$encrypted_value key=$secret_key}

rcms_file_size

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

属性

PositionTypeDescription
1Integer結果の書式タイプ (default=1)
  • 0: 値のみ表示
  • 1: 適切な単位を付与して表示
2Integer小数での結果の精度 (default=2)

記載例

{$row.path|rcms_file_size}

rcms_hash

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

属性

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

記載例

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

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_json_encode

値を Unicode サポート付きで JSON 形式にエンコードし、RCMS のコンテンツ境界マーカーに対する特別な処理を行います。

戻り値

エスケープされていない Unicode 文字を含む JSON エンコード文字列。

記載例

{* 基本的な使用例 *}
{$array|rcms_json_encode}

{* JavaScript で使用 *}
<script>
var data = {$data|rcms_json_encode};
</script>

{* オブジェクトのエンコード *}
{$user_data|rcms_json_encode}

JSON_UNESCAPED_UNICODE フラグを使い、日本語などのマルチバイト文字をそのまま保持します。文字列に __RCMS_CONTENT_BOUNDARY__ マーカーが含まれている場合は、エンコード前に explode2() で自動的に配列へ分解されます。

rcms_krsort

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

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

属性
なし。

記載例

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

rcms_ksort

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

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

属性
なし。

記載例

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

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_rsort

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

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

属性
なし。

記載例

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

rcms_sort

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

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

属性
なし。

記載例

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

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>'}

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_permissionBoolean/files/topics/, /files/member/のディレクトリを指定した場合に、true を指定するとファイルが保存されたコンテンツの公開状態や権限設定を無視します。

記載例

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

refresh_cs

MemberCustomSearchを再設定します。

属性

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

記載例

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

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

本日は雨天なり

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}

replace

シンプルな文字列の検索・置換を行います。

属性

パラメータ説明
searchString/Array検索する文字列(必須)
replaceString/Array置換後の文字列(必須)

戻り値

置換を適用した文字列。

記載例

{$text|replace:"old":"new"}
{$path|replace:"\\":"/"}
{"Hello World"|replace:"World":"Everyone"}

補足:

  • PHP の str_replace() を使用しており、正規表現ではない大文字小文字を区別した置換を、出現箇所すべてに対して行います。大文字小文字を区別したくない場合は regex_replace を使用してください。
  • search/replace に配列を渡すと、複数の置換を一度に行えます。

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宛先
カンマ区切りで複数指定ができます。
例:to="test1@example.com, test2@example.com
to_member_idInteger宛先にするメンバーID
カンマ区切りで複数指定ができます。
例:to_member_id="1,2"
subjectString件名
contentsString本文
fromStringFROMアドレス
from_nmStringFROMの送信者名
ccStringCCに指定するメールアドレス。複数指定する場合はカンマ区切りで指定します。
cc_member_idIntegerCCに指定するメンバーID。複数指定する場合はカンマ区切りで指定します。
bccStringBCCに指定するメールアドレス。複数指定する場合はカンマ区切りで指定します。
bcc_member_idIntegerBCCに指定するメンバーID。複数指定する場合はカンマ区切りで指定します。
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'}

site_sync

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

属性

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

記載例

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

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}

sort_name

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

記載例

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

spacify

各文字の間にセパレータ(デフォルトはスペース)を挿入します。

属性

パラメータ説明
spacify_charString文字間に挿入する文字列(任意、デフォルト ' '

戻り値

文字間にセパレータを挿入した文字列。

記載例

{"Hello"|spacify}      {* H e l l o *}
{$text|spacify:"-"} {* H-e-l-l-o *}
{"Test"|spacify:"_"} {* T_e_s_t *}
{"ABC"|spacify:" - "} {* A - B - C *}

補足:

  • セパレータには 1 文字だけでなく複数文字の文字列を指定できます。
  • マルチバイト非対応 — バイト単位で分割するため、マルチバイト文字を途中で分断する可能性があります。

split

区切り文字を使って文字列を配列に分割します。正規表現とリテラル区切り文字の両方をサポートします。

属性

パラメータ説明
stringString/Number分割する文字列(必須)

戻り値

文字列の配列を返します。文字列が空 "" または有効な型でない場合は空配列 [] を返します。

記載例

{* リテラル区切り文字での基本的な分割 *}
{','|split:$csv_string}

{* 正規表現パターンで分割(/で始まる必要あり) *}
{'/\s+/'|split:$text} {* 空白で分割 *}

{* 数値の分割(自動的に文字列に変換) *}
{'-'|split:12345}

区切り文字を修飾子入力、文字列をコロンの後に指定します。区切り文字が / で始まり 3 文字以上ある場合は正規表現として preg_split() で処理し、それ以外は explode2() で分割します。

storage_url

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

属性

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

記載例

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

string_format

sprintf() を使って文字列を整形します。

属性

パラメータ説明
formatStringsprintf のフォーマット文字列(必須)

戻り値

整形済みの文字列。

記載例

{$number|string_format:"%02d"}        {* 05 *}
{$price|string_format:"$%.2f"} {* $19.99 *}
{$name|string_format:"Hello, %s!"} {* Hello, John! *}
{$hex|string_format:"%08X"} {* 0000FF00 *}

%s%d%f%e%x/%X%o%b%% などの一般的な sprintf フォーマット指定子に対応しており、%08d%.2f%-10s のような幅・精度・パディング指定も使用できます。

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}

strip_tags

テキストから HTML タグを取り除きます。

属性

パラメータ説明
replace_with_spaceBooleanタグを除去する代わりに空白に置換するかどうか(任意、デフォルト true

戻り値

HTML タグを取り除いた文字列。

記載例

{$html|strip_tags}
{$html|strip_tags:false}
{"<p>Hello</p>"|strip_tags} {* " Hello " with spaces *}
{"<p>Hello</p>"|strip_tags:false} {* "Hello" no spaces *}
{"<b>A</b><i>B</i>"|strip_tags} {* "A B" *}
{"<b>A</b><i>B</i>"|strip_tags:false} {* "AB" *}

補足:

  • replace_with_space=true(デフォルト)の場合はすべてのタグを 1 つの空白に置換するため、隣接する語が連結されません(例: <b>Hello</b><i>World</i>HelloWorld ではなく Hello World になります)。
  • replace_with_space=false の場合は PHP の strip_tags() を使用し、タグを完全に削除します。いずれの場合もタグ間のコンテンツは保持されます。

strtodate

日付を取得します。

属性

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

記載例

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

strtolower

型チェック付きで文字列を小文字に変換します。

戻り値

小文字化された文字列。入力がスカラーでない場合は空文字列を返します。

記載例

{"HELLO WORLD"|strtolower}   {* hello world *}
{$name|strtolower}
{$array|strtolower} {* returns empty string *}

補足:

  • 配列・オブジェクト・null などの非スカラー値は空文字列になります。処理前に明示的に文字列へキャストされます。
  • マルチバイト非対応 — UTF-8 を扱う場合は PHP の mb_strtolower() を利用してください。lower とほぼ同等ですが、非スカラー値を明示的にハンドリングする点が異なります。

strtoupper

型チェック付きで文字列を大文字に変換します。

戻り値

大文字化された文字列。入力がスカラーでない場合は空文字列を返します。

記載例

{"hello world"|strtoupper}   {* HELLO WORLD *}
{$name|strtoupper}
{$array|strtoupper} {* returns empty string *}

補足:

  • 配列・オブジェクト・null などの非スカラー値は空文字列になります。処理前に明示的に文字列へキャストされます。
  • マルチバイト非対応 — UTF-8 を扱う場合は PHP の mb_strtoupper() を利用してください。upper とほぼ同等ですが、非スカラー値を明示的にハンドリングする点が異なります。

substr

型チェック付きで入力文字列から部分文字列を返します。

属性

パラメータ説明
startInteger開始位置(0 始まり、負の値も可)(必須)
lengthInteger取り出す長さ(負の値も可、任意、デフォルト null

戻り値

部分文字列。入力がスカラーでない場合は空文字列を返します。

記載例

{"Hello World"|substr:0:5}  {* Hello *}
{$text|substr:6} {* from position 6 to end *}
{$string|substr:-5:5} {* last 5 characters *}
{$text|substr:0:-3} {* all except last 3 characters *}
{$array|substr:0:5} {* returns empty string *}

補足:

  • 負の start は末尾からの位置を表し、負の length は末尾からその文字数を取り除きます。
  • マルチバイト非対応 — バイト単位でカウントします。

subtract

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

属性

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

記載例

{subtract var='i' value=5}

sync_counter

コンテンツのカウンター拡張項目の値を同期します。

カウンター項目は、頻繁に更新される値をコンテンツ自体から分離して、更新を非同期的に行うことで高速化をしています。
このプラグインを使用することで、非同期に更新されたカウンターの値をコンテンツの値に同期します。

属性

ParamTypeDescription
idsArray/String対象のコンテンツのID配列 (必須)。カンマ区切りの文字列でも指定可能です。

記載例

{sync_counter ids=1078}
{sync_counter ids="1,2,3"}

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}

truncate

指定した長さで文字列を切り詰めます(バイト単位)。

属性

パラメータ説明
lengthInteger最大長(任意、デフォルト 80
etcString切り詰めたときに末尾に付ける文字列(任意、デフォルト '...'
break_wordsBoolean単語の途中で切るかどうか(任意、デフォルト false
middleBoolean真ん中で切り詰めるかどうか(任意、デフォルト false

戻り値

切り詰められた文字列。

記載例

{$text|truncate:50}
{$long_string|truncate:30:"...":true}
{$text|truncate:100:"[more]":false:true}

補足:

  • バイト単位の strlen/substr を使用するためマルチバイト非対応です。UTF-8 などマルチバイトエンコーディングを扱う場合は mb_truncate を使用してください。
  • break_words=false(デフォルト)の場合は単語境界で切り詰めます。middle=true の場合は先頭と末尾の半分を残し、その間を etc で繋ぎます。

twitter_post_message

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

属性

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

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

unzip

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

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

備考

保存先(dest)はGCSパス(/files/g/)である必要があります。KurocoFilesのパス(/files/user//files/temp//files/ltd/)は保存先としてサポートされていません。 入力元(src)はhttps://から始まるURLか、GCSパス(/files/g/)である必要があります。KurocoFilesのパスは直接サポートされていませんが、KurocoFiles(公開)のファイルについては公開URLを使用することで指定可能です。

属性

PositionTypeDescription
srcString展開するzipファイルパス。https:// から始まるURLか、GCSパス(/files/g/)である必要があります。KurocoFilesのパス(/files/user//files/temp//files/ltd/)は直接サポートされていませんが、KurocoFiles(公開)のファイルについては公開URL(例: https://[site].g.kuroco-img.app/files/user/...)を使用することで指定可能です。
destString展開したファイルを格納するフォルダのパス。GCSパス(/files/g/)である必要があります。KurocoFilesのパス(/files/user//files/temp//files/ltd/)は保存先としてサポートされていません。
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'
}

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
}

upper

文字列を大文字に変換します。

記載例

{"hello"|upper}        {* HELLO *}
{$name|upper}
{"abc123"|upper} {* ABC123 *}

補足:

  • PHP の strtoupper() をそのまま使用するためマルチバイト非対応です。UTF-8 を扱う場合は型ガード付きの strtoupper モディファイアか、PHP の mb_strtoupper() を利用してください。

usage_price_format

RCMS_Usage のフォーマットシステムを使って使用量・価格を表示用に整形します。

属性

パラメータ説明
edge_flgBooleanエッジフォーマットフラグ(小数点の扱いに影響)(任意、デフォルト false

戻り値

整形された価格文字列。入力が空文字列の場合は空文字列 "" を返します。

記載例

{* 基本的な価格フォーマット *}
{$price|usage_price_format}

{* エッジフラグ有効 *}
{$price|usage_price_format:true}

{* 使用量コストの表示 *}
{$monthly_cost|usage_price_format}

実際のフォーマットは RCMS_Usage::format_price() に委譲されます。通貨記号、桁区切り、小数点桁数は RCMS_Usage の設定に依存します。

uuid

uuidを取得します。

属性

ParamTypeDescription
varString格納する変数名

記載例

{uuid var='foo'}

wordwrap

テキストを指定した行幅で折り返します。

属性

パラメータ説明
lengthInteger1 行の文字数(任意、デフォルト 80
breakString改行として挿入する文字列(任意、デフォルト "\n"
cutBoolean長い単語を強制的に折り返すかどうか(任意、デフォルト false

戻り値

改行が挿入された折り返し済みの文字列。

記載例

{$text|wordwrap:40}
{$long_text|wordwrap:60:"<br>"}
{$url|wordwrap:50:"\n":true}
{$code|wordwrap:120:"<br />":true}

補足:

  • cut=false(デフォルト)では長い単語を分断せず、行幅を超える場合があります。cut=true では行幅ちょうどで強制的に折り返し、単語の途中でも改行します。
  • 改行文字列は任意で、HTML の <br> などにも利用できます。入力にもとから含まれている改行は保持されます。

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圧縮します。

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

備考

保存先(dest)はGCSパス(/files/g/)である必要があります。KurocoFilesのパス(/files/user//files/temp//files/ltd/)は保存先としてサポートされていません。 各エントリのurlはGCSパス(/files/g/)かhttps://から始まるURLである必要があります。KurocoFilesのパスは直接サポートされていませんが、KurocoFiles(公開)のファイルについては公開URLを使用することで指定可能です。

属性

PositionTypeDescription
entriesArray圧縮するファイルリスト。各エントリはurl(ファイルのURLまたはGCSパス)とname(zip内のファイル名)を含む配列です。urlはGCSパス(/files/g/)かhttps://から始まるURLである必要があります。KurocoFilesのパス(/files/user//files/temp//files/ltd/)は直接サポートされていませんが、KurocoFiles(公開)のファイルについては公開URL(例: https://[site].g.kuroco-img.app/files/user/...)を使用することで指定可能です。
destStringzipファイルパス。GCSパス(/files/g/)である必要があります。KurocoFilesのパス(/files/user//files/temp//files/ltd/)は保存先としてサポートされていません。
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/g/public/a.zip' bucket=$bucket}

サポート

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