Как использовать условия внутри шаблона электронной почты в SugarCRM

Как я могу использовать условия if/else внутри шаблона электронной почты в SugarCRM? Я пытаюсь использовать условия, равные шаблону 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 ответа

Решение

Похоже, что официальные документы 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);

Он использует метод parse_email_template из класса EmailTemplate. Это не так хорошо написано, как я думал. И это только обеспечивает базовую замену переменных. Давайте посмотрим на это немного ближе:

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 на данный момент не предоставляет никаких условий, ни умных, ни других шаблонных движков. Вы можете попытаться изменить их код, чтобы реализовать его, но я бы не рекомендовал это, так как это немного спагетти;)

handlebarsjs может помочь?
http://handlebarsjs.com/builtin_helpers.html

{{#if yourcondition}} action {{else}} action{{/if}}

Попробуйте это и посмотрите, как вы идете:

{if $fieldname!="value"}sometext {$fieldname} {/if}
Другие вопросы по тегам