formatting - smarty processes strong (text) format over php -> put out modified php only
Have prepared a string modification with php in the classes file. Now in the smarty template (tpl) file when outputting the string I get a wrong text format. The project uses smarty 3.1-DEV and php 5.6.
I have this php code and assigned the variable in php class file:
$pattern = '/' . implode('|', $allergens_searchnames) . '/iu';
echo preg_replace_callback($pattern, function ($m) {
return mb_strtoupper($m[0]); }, $prodIngredients);
}
$this->assign("articleIngredients", $prodIngredients);
Outputting directly with "echo" over classes file I get on front end the desired format: "Zutaten: MARILLEn (75%), Zucker, Zitronensaft, Geliermittel: PEKTINe (aus Apfel)"
Implementation over smarty output is wrong: "Zutaten: Marillen (75%), Zucker, Zitronensaft, Geliermittel: Pektine (aus Apfel)"
Here like I implemented to the tpl-file:
<span class="pull-right">
{if isset($articleIngredients)}
<p>{$articleIngredients|unescape:'html'}</p>
{/if}
</span>
Due to the fact that I don't know much of the project and of smarty it is nearly impossible to fix this for me. Any help is appreciated.
Answer
Solution:
I think one of these 2 might help you. Try using unescape:'htmlall' or Try printing the text as literal text
<span class="pull-right">
{if isset($articleIngredients)}
<p>{$articleIngredients}|unescape:'htmlall'}</p>
{/if}
source: https://www.smarty.net/docs/en/language.modifier.unescape.tpl
Anything within {literal}{/literal} tags is not interpreted, but displayed as-is.
<span class="pull-right">
{if isset($articleIngredients)}
<p>{literal}{$articleIngredients}{/literal}</p>
{/if}
</span>
Source: https://www.smarty.net/docs/en/language.function.literal.tpl
Answer
Solution:
I found a solution to implement it directly on the template: smarty replace multiple values
problem is to hardcode all diffrent possibilities to replace into two arrays. Maybe I can find another solution for this.
Source