Переменные в тексте Битрикс

Всем привет! Хочу сделать переменную для подмены в тексте Битрикс, вида #PHONE#, чтобы можно было бы вставить ее в текст и она автоматически подставляла нужные данные в тексте.

Как такое можно реализовать или куда копать? Неудалось найти информацию по данному вопросу. Спасибо


Ответы (3 шт):

Автор решения: megamosk

Если вопрос про шаблон, то используется метод Loc::getMessage https://dev.1c-bitrix.ru/api_d7/bitrix/main/localization/loc/getmessage.php

→ Ссылка
Автор решения: deestylov

Есть решение на JS

        var city = $('.city_sel').text()
                                var word = '#CITY#'
                                var queue = [document.body]
                                var curr
                            ;
                            while (curr = queue.pop()) {
                                if (!curr.textContent.match(word)) continue;
                                for (var i = 0; i < curr.childNodes.length; ++i) {
                                    switch (curr.childNodes[i].nodeType) {
                                        case Node.TEXT_NODE : // 3
                                            if (curr.childNodes[i].textContent.match(word)) {
                                                console.log("Found!");
                                                console.log(curr);
                                                let text = curr.innerText.replace(word, city);
                                                curr.innerText = text
                                                // you might want to end your search here.
                                            }
                                            break;
                                        case Node.ELEMENT_NODE : // 1
                                            queue.push(curr.childNodes[i]);
                                            break;
                                    }
                                }
                            }

→ Ссылка
Автор решения: maxkuku

Можно вставить функцию php в тело статьи, заполняемое в текстовом редакторе в админке. Функция должна быть вставлена в какой-то обязательно подгружаемый на каждую страницу файл, например обычно вставляют в /bitrix/php_interface/init.php. В конкретном примере в init.php должны быть еще и функции author() и author_alina()

В текст статьи здесь ставится код, например #author_snippet# Символ # можно заменить, если почему-то не получается его идентифицировать

/** обратотка вставки снипета Автор в статью */
/**
*
*/
AddEventHandler("main", "OnEndBufferContent", "ShowDoctorInsideArticle");
function ShowDoctorInsideArticle(&$content)
{
    if (CModule::IncludeModule("iblock"))
    {
        preg_match('/#(.*)_snippet#/', $content, $matches);
        if ($matches[1] !== false)
        {
            $func = '';
            switch($matches[1]){
                case "author":
                    $func = author();
                    break;
                case "author_alina":
                    $func = author_alina();
                    break;
                default:
                    break;
            }
            $content = str_replace('#' . $matches[1] . '_snippet#', $func, $content);
        }
    }
}
→ Ссылка