@bit24yes
CEO

Вывести языковой файл в поле Описание товара. Как сделать туда вставку php?

Суть вопроса, казалась бы проста, но мозг уже взорван.

Есть в битриксе папка в шаблоне bitrix:catalog
/lang/ru/ там, в файл template.php я заполнил новые фразы

Если эти фразы я вывожу потом через правку в шаблоне /catalog.element/.default/template.php, то всё отображается хорошо. Я просто вставляю например

<?=GetMessage('MOY_TEST')?>

Но, мне нужно вывести это в описание товара. Иными словами, чтобы мой контент менеджер просто вставлял такие переменные в описание товара.

В итоге, в html режиме, вставка php кода приводит к тому, что на месте потом отображается пустой абзац.

8d2f14095fef4a67b7d3f22f9c0c8a38.pnga68ca112e41441bdb151fcd1f9b4ca32.png

Как можно это исправить? Нужно преобразовать как-то код или может есть плагины, которые разрешают php код вставлять в описание товаров, а не только html?
  • Вопрос задан
  • 325 просмотров
Решения вопроса 1
no_one_safe
@no_one_safe
Файл result_modifier.php
файл /bitrix/templates/elektro_flat/components/bitrix/catalog/.default/bitrix/catalog.element/.default/result_modifier.php [если нет нужно создать, если есть добавить в конец]
<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true)
    die();
//если файл result_modifier.php есть, код выше добавлять не надо

if(strlen($arResult['DETAIL_TEXT']) > 0){
    $re = "/#(\\w+)#/"; 
    preg_match_all($re, $arResult['DETAIL_TEXT'], $matches);
    if(count($matches) > 0){
        foreach($matches[0] as $match){
            $TEXT_VALUE = GetMessage($match);
            $arResult['DETAIL_TEXT'] = str_replace($match, $TEXT_VALUE, $arResult['DETAIL_TEXT']);
        }
        
    }    
}

файл /bitrix/templates/elektro_flat/components/bitrix/catalog/.default/bitrix/catalog.element/.default/lang/ru/template.php [если нет нужно создать, если есть добавить в конец]
<?
$MESS["#TEXT_1#"] = "Первый текст";
$MESS["#TEXT_2#"] = "Второй текст";
$MESS["#TEXT_3#"] = "Третий текст";
?>


во вкладке "Изменить товар -> Подробно" пишешь что то типа

Текст бла бла бла #TEXT_1#, тут продолжение бла бла бла #TEXT_2#. И наконец #TEXT_3#.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@SharuPoNemnogu
не язык плохой, программисты такие...
сделайте теги типа {{MY_TEST}} и при сохранении на сервере парсите их из контента и заменяйте на GetMessage('MY_TEST');
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы