При обновлении движка может измениться любой файл ядра, поэтому незатираемые исправления рекомендуется делать со стороны шаблона.
Следуя мотиву вашего примера с текстом корзины, таким исправлением могла быть if-вариация вывода переменой $error:
{if !empty($error)}
<div class="msg error">
{if $error == 'Нужно обязательно ввести е-мейл или номер телефона.'} Ошибка!
{elseif $error == '...'} ...
{else} {$error}
{/if}
</div>
{/if}
Но это неудобно, когда $error выводится в разных местах шаблона, и везде хотелось бы применить аналогичные замены. Тогда в шаблоне следовало бы применить некую функцию, например myError:
{if !empty($error)}
<div class="msg error">
{myError}
</div>
{/if}
А тело этой функции прописать в файле helper.php шаблона:
<?php
class TemplateEmulator {
protected $cms;
private function getVar ( $name, & $smarty, $def = null ) {
$value = $smarty->getTemplateVars($name);
if (is_null($value)) $value = $this->cms->smarty->getTemplateVars($name);
return is_null($value) ? $def : $value;
}
public function __construct ( & $cms ) {
$this->cms = & $cms;
$cms->smarty->registerPlugin('function', 'myError', array($this, 'myError'));
}
public function myError ( $params = null, & $smarty = null ) {
$value = $this->getVar('error', $smarty, '');
switch ($value) {
case 'Нужно обязательно ввести е-мейл или номер телефона.': return 'Ошибка!';
case '...': return '...';
}
return $value;
}
}
?>