Можно сделать как было в сортировке категорий. Использование префикса 01, 02, 03 и т.д.
01.Характеристика 1
02.Характеристика 2
03.Характеристика 3.
Тогда при отображении нужно будет просто удалить префикс и показывают только текст.
Добавить сортировку по имени в SQL запрос. В методе « getFrontFeaturesStatic » класса « Product.php« , примерно в строке 2700, найти следующий код:
self::$_frontFeaturesCache[$id_product.'-'.$id_lang] = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('
SELECT name, value, pf.id_feature
FROM '._DB_PREFIX_.'feature_product pf
LEFT JOIN '._DB_PREFIX_.'feature_lang fl ON (fl.id_feature = pf.id_feature AND fl.id_lang = '.(int)$id_lang.')
LEFT JOIN '._DB_PREFIX_.'feature_value_lang fvl ON (fvl.id_feature_value = pf.id_feature_value AND fvl.id_lang = '.(int)$id_lang.')
WHERE pf.id_product = '.(int)$id_product);
Добавить
ORDER BY fl.`name` ASC');
В шаблоне « product.tpl » заменить код:
{foreach from=$features item=feature}
<li><span>{$feature.name|escape:'htmlall':'UTF-8'}</span> {$feature.value|escape:'htmlall':'UTF-8'}</li>
{/foreach}
на
{foreach from=$features item=feature}
{if $feature.name|substr:2:1=='.'}
<li><span>{$feature.name|escape:'htmlall':'UTF-8'|substr:3}</span> {$feature.value|escape:'htmlall':'UTF-8'}</li>
{elseif $feature.name|substr:3:1=='.'}
<li><span>{$feature.name|escape:'htmlall':'UTF-8'|substr:4}</span> {$feature.value|escape:'htmlall':'UTF-8'}</li>
{elseif $feature.name|substr:4:1=='.'}
<li><span>{$feature.name|escape:'htmlall':'UTF-8'|substr:5}</span> {$feature.value|escape:'htmlall':'UTF-8'}</li>
{else}
<li><span>{$feature.name|escape:'htmlall':'UTF-8'}</span> {$feature.value|escape:'htmlall':'UTF-8'}</li>
{/if}
{/foreach}