如何在 SugarCRM 的电子邮件模板中使用条件
How to use conditions inside Email template in SugarCRM
如何在 SugarCRM 的电子邮件模板中使用 if/else 条件?
我正在尝试使用条件等于 pdf 模板和 smarty 模板,但我没有成功。
没有成功
<?php if ({::past::Opportunities::name::} != {::future::Opportunities::name::}){ ?>
没有成功
{if {::past::Opportunities::name::} neq {::future::Opportunities::name::}}
没有成功
<!-- {if {::past::Opportunities::name::} neq {::future::Opportunities::name::}} -->
是否成功 (?)
??????
谢谢
handlebarsjs 可能有帮助?
http://handlebarsjs.com/builtin_helpers.html
{{#if yourcondition}} action {{else}} action{{/if}}
看来,那个official SugarCRM docs don't provide any information about using if/else conditions in email templates. I didn't believed them, so i dug into SugarCRM代码。
研究:
发送电子邮件在 EmailMan class 方法 sendEmail:
中完成
$template_data = $this->current_emailtemplate
->parse_email_template(
array(
'subject' => $this->current_emailtemplate->subject,
'body_html' => $this->current_emailtemplate->body_html,
'body' => $this->current_emailtemplate->body,
)
, $focus_name, $module
, $macro_nv);
它使用 class EmailTemplate 中的 parse_email_template 方法。不像我想的那样写得很好。而且它只提供基本的变量替换。让我们仔细看看:
function parse_email_template($template_text_array, $focus_name, $focus, &$macro_nv)
{
[...] //variable initiation
//preparing prefixes to search for variables (all variables are in "$some_name" format
$pattern_prefix = '$' . strtolower($beanList[$focus_name]) . '_';
$pattern_prefix_length = strlen($pattern_prefix);
$pattern = '/\' . $pattern_prefix . '[A-Za-z_0-9]*/';
foreach ($template_text_array as $key => $template_text) {
[...] //searching for variables matching $pattern and replacing them with proper values
$return_array[$key] = $template_text;
}
return $return_array;
}
结论:
我能说的更多 - SugarCRM 在这一点上不提供任何条件,也不提供 smarty 或其他模板引擎。您可以尝试修改他们的代码来实现它,但我不建议这样做,因为它有点小 spaghetti ;)
试试这个,看看效果如何:
{if $fieldname!="value"}sometext {$fieldname} {/if}
如何在 SugarCRM 的电子邮件模板中使用 if/else 条件? 我正在尝试使用条件等于 pdf 模板和 smarty 模板,但我没有成功。
没有成功
<?php if ({::past::Opportunities::name::} != {::future::Opportunities::name::}){ ?>
没有成功
{if {::past::Opportunities::name::} neq {::future::Opportunities::name::}}
没有成功
<!-- {if {::past::Opportunities::name::} neq {::future::Opportunities::name::}} -->
是否成功 (?)
??????
谢谢
handlebarsjs 可能有帮助?
http://handlebarsjs.com/builtin_helpers.html
{{#if yourcondition}} action {{else}} action{{/if}}
看来,那个official SugarCRM docs don't provide any information about using if/else conditions in email templates. I didn't believed them, so i dug into SugarCRM代码。
研究:
发送电子邮件在 EmailMan class 方法 sendEmail:
中完成$template_data = $this->current_emailtemplate
->parse_email_template(
array(
'subject' => $this->current_emailtemplate->subject,
'body_html' => $this->current_emailtemplate->body_html,
'body' => $this->current_emailtemplate->body,
)
, $focus_name, $module
, $macro_nv);
它使用 class EmailTemplate 中的 parse_email_template 方法。不像我想的那样写得很好。而且它只提供基本的变量替换。让我们仔细看看:
function parse_email_template($template_text_array, $focus_name, $focus, &$macro_nv)
{
[...] //variable initiation
//preparing prefixes to search for variables (all variables are in "$some_name" format
$pattern_prefix = '$' . strtolower($beanList[$focus_name]) . '_';
$pattern_prefix_length = strlen($pattern_prefix);
$pattern = '/\' . $pattern_prefix . '[A-Za-z_0-9]*/';
foreach ($template_text_array as $key => $template_text) {
[...] //searching for variables matching $pattern and replacing them with proper values
$return_array[$key] = $template_text;
}
return $return_array;
}
结论:
我能说的更多 - SugarCRM 在这一点上不提供任何条件,也不提供 smarty 或其他模板引擎。您可以尝试修改他们的代码来实现它,但我不建议这样做,因为它有点小 spaghetti ;)
试试这个,看看效果如何:
{if $fieldname!="value"}sometext {$fieldname} {/if}