私はDrupal Commerceを持っており、商品の販売後に確認メールを送信します。これらのメールにはトークンがあります。トークンがあります[commerce-order:created]
そして、その日付のフォーマットを変更する便利な方法があるかどうか興味があります。
_[commerce-order:created]
_が日付トークンの場合、_[commerce-order:created:custom:<the format you want to apply>]
_を使用できます。ここで、_<the format you want to apply>
_は date()
が受け入れる文字列形式です。
それ以外の場合、他のモジュールによって実装されたトークンを変更するより一般的な方法は、実装 hook_tokens_alter()
です。
_function mymodule_tokens_alter(&$replacements, $context) {
$options = $context['options'];
$sanitize = !empty($options['sanitize']);
$langcode = !empty($options['language']->language) ? $options['language']->language : NULL;
if ($context['type'] == 'commerce-order') {
foreach ($context['tokens'] as $name => $original) {
switch ($name) {
case 'created':
// Set a value for $sanitized and $new_value.
$replacements[$original] = $sanitize ? $sanitized : $new_value;
}
}
}
}
_
私のコードで:
$sanitized
_は、トークンに割り当てるサニタイズされた値で、_$sanitize
_がTRUE
の場合にのみ使用されます$new_value
_はトークンの新しい値で、_$sanitized
_の値を取得するために使用されますhook_tokens_alter でこれを行うことができます
プレースホルダートークンの置換値を変更します。
例えば:
/**
* Implements hook_tokens_alter().
*/
function mymodule_tokens_alter(&$replacements, $context){
// May be you can do some more ifs to reduce the load :)
if(isset($replacements['[commerce-order:created]'])){
$replacements['[commerce-order:created]'] = check_plain('YOUR-CUSTOM-REPLACEMENT');
}
}