Dobrý den.
Modul na to není a jak jsem zjistil, v mojí instalaci dokonce nejsou vlastnosti na stránce produktu řazeny vůbec - prosté přidání pořadových čísel nemělo efekt. Seřazení dle libosti lze ale dosáhnout následující úpravou:
- Doplňte si před názvy vlastností čísla, určující pořadí, např. "01 Výška", "02 Šířka", "05 Hloubka" atd. Pro tuto verzi úpravy je třeba použít 2 číslice, případně jednu číslici a mezeru.
- Vytvořte zcela nový soubor tools/smarty/plugins/modifier.sortby.php a vložte do něj tento obsah:
Kód:
<?php
# sorts an array of named arrays by the supplied fields
# code by dholmes at jccc d0t net
# taken from http://au.php.net/function.uasort
# modified by cablehead, messju and pscs at http://www.phpinsider.com/smarty-forum
function array_sort_by_fields(&$data, $sortby){
static $sort_funcs = array();
if (empty($sort_funcs[$sortby]))
{
$code = "\$c=0;";
foreach (split(',', $sortby) as $key)
{
$d = '1';
if (substr($key, 0, 1) == '-')
{
$d = '-1';
$key = substr($key, 1);
}
if (substr($key, 0, 1) == '#')
{
$key = substr($key, 1);
$code .= "if ( ( \$c = (\$a['$key'] - \$b['$key'])) != 0 ) return $d * \$c;\n";
}
else
{
$code .= "if ( (\$c = strcasecmp(\$a['$key'],\$b['$key'])) != 0 ) return $d * \$c;\n";
}
}
$code .= 'return $c;';
$sort_func = $sort_funcs[$sortby] = create_function('$a, $b', $code);
}
else
{
$sort_func = $sort_funcs[$sortby];
}
uasort($data, $sort_func);
}
# Modifier: sortby - allows arrays of named arrays to be sorted by a given field
function smarty_modifier_sortby($arrData,$sortfields) {
array_sort_by_fields($arrData,$sortfields);
return $arrData;
}
?>
- Dále v souboru themes/prestashop/product.tpl nalezněte řádek
Kód:
{foreach from=$features item=feature}
a změňte jej na Kód:
{foreach from=$features|@sortby:name item=feature}
- V témže souboru o řádek níže změňte úsek kódu
Kód:
{$feature.name|escape:'htmlall':'UTF-8'}
na Kód:
{$feature.name|substr:2|escape:'htmlall':'UTF-8'}
- Poté je ještě nutno v Administrace > Preferences > Performance změnit Nucená kompilace na ANO a Cache na NE, uložit, úpravu vyzkoušet a tyto 2 volby zase nastavit zpět.
Úprava v zobrazení produktu přeskočí první 2 znaky názvu vlastnosti a zobrazuje ho až od znaku třetího. Rovněž jsou přeskočeny úvodní mezery - je tedy jen na Vás, jestli v názvu vlastnosti za dvojicí číslic pro určení pořadí vložíte či nevložíte jednu nebo více mezer.
Pro Phenixe: nastavení pro každý produkt zvlášť nelze takto vyřešit. Leda byste vytvořil vícero různých vlastností se stejným viditelným názvem - například "01 výška", "02 šířka" a "03 výška" - pak si můžete vybrat, které pořadí vlastnosti výška bude produkt mít. Potíže ale budou v případě použití filtrace a možná i dalších funkcí s vlastnostmi spojených, protože jde technicky o 2 různé nezávislé vlastnosti.