如何在SugarCRM的电子邮件模板中使用条件

7
我该如何在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::}} -->

有任何成功吗?

??????

谢谢

3个回答

4
似乎官方SugarCRM文档没有提供任何关于在电子邮件模板中使用if/else条件的信息。我不相信他们,所以我深入挖掘了SugarCRM代码。
研究:
发送电子邮件是在EmailMan类的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或其他模板引擎。您可以尝试修改他们的代码来实现它,但我不建议这样做,因为它有点像意大利面条 ;)


1
尝试一下,看看你能做到什么:

{if $fieldname!="value"}sometext {$fieldname} {/if}

1

周一我会尝试您的解决方案 :) - ErasmoOliveira
@mg33dev - 我在代码中查找了一下,恐怕那也不是 Handlebars。这只是一个“让我们匹配所有内容”的尝试 :( - Paweł Tomkiel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接