Вы можете использовать подход @ dev и захватить свои данные и запустить их через модификатор полосы :
{capture name="spaces"}
<div
class="x"
> ... </div>
{/capture}
{$smarty.capture.spaces|strip:" "}
или запустить захваченный контент через модификатор regex_replace (по сути, делает то же самое, что и split, но с дополнительными издержками):
{$smarty.capture.spaces|regex_replace:"#\s+#":" "}
или добавление нового плагина пользовательского блока под названием trimwhitespace, который делаетиспользование outputfilter trimwhitespace :
<?php
function smarty_block_trimwhitespace($params, $content, Smarty_Internal_Template $template, &$repeat)
{
require_once SMARTY_PLUGINS_DIR . 'outputfilter.trimwhitespace.php';
return smarty_outputfilter_trimwhitespace($content, $template->smarty);
}
вызовите этот файл block.trimwhitespace.php и поместите его в plugins_dir.используйте его в своем шаблоне:
{trimwhitespace}
<div
class="x"
> ... </div>
{/trimwhitespace}
Хотя оба подхода-модификатора отлично подойдут для простых вещей HTML, они будут разбиты на контент, включающий теги <script>
или <pre>
.Если вам это нужно, вы можете использовать упакованный выходной фильтр.
Если вы хотите, чтобы весь ваш вывод проходил через этот фильтр, не забудьте изменить ваши шаблоны и добавьте $smarty->loadFilter('output', 'trimwhitespace');
в ваши настройки.