Minap a VirtueMart komponenssel készült webshopba töltögettünk adatokat és előjött az igény, hogy a kategóriák elején legyen a legújabb termék, hogy szem elé kerüljön.
A megoldás egyértelműnek tűnt:
"VirtueMart -> Admin -> Beállítások -> A termékek alapértelmezett rendezési módja" résznél válasszuk a "legújabb termékek" lehetőséget.
Meg is volnánk? Csak majdnem.
Ugyanis ez a beállítás azt mondja meg, hogy az adattáblánk melyik mezője szerint történjen a rendezés alapból, a legújabb termékeknél nyilván ez a felvitel dátuma. Nade ha felvitel dátuma szerint rendezzük a termékeinket, akkor a legrégebben felvitt lesz az első. A csavar logikai, az eredménye kézzel fogható.
Mi a megoldás? Meg kéne mondanunk, hogy az időpont szerinti rendezésnél a csökkenő rendezés legyen az alapértelmezés szerinti.
A megoldás a virtuemart.net fórumaiban is megvan, de akkor lássuk itt is.
ftp-n vagy eXtplorer-rel keressük meg a /administrator/components/com_virtuemart/html könyvtárban a shop_browse_queries.php fájlt, ami a megjelenítés és az adatbázis közti kapcsolatért felel és kukkantsunk bele. (Biztonsági mentés azért nem árt)
Keressük meg a következő részt:
case 'product_cdate':
$orderbyField = '`#__{vm}_product`.`cdate`'; break;
Cseréljük ki a következőre:
case 'product_cdate':
$orderbyField = '`#__{vm}_product`.`cdate`';
$DescOrderBy = 'DESC';
break;
Mentsük el és lássuk az eredményt.
A dolog nem csak az időpont esetében működik, hanem a többi rendezési lehetőségnél is beállítható. Ekkor a fent látható analógia alapján szúrjuk be a $DescOrderBy = 'DESC'; részt.
És mégegy dolog.
Az is felmerült, hogy kellene egyéni sorrendezési lehetőség, ami ugye nincs.
Nem szép, de végülis működő megoldás, hogy rejtsük el a cikkszám megjelenítését és igény szerint a sorrendezhetőséget is, az alapértelmezett rendezést állítsuk cikkszám szerintire és a termékek cikkszámának adjuk meg a sorrendet, pl sorszámokkal. Így kvázi-egyéni sorrendet állíthatunk be.
A hack eredményéért nem tudok felelősséget vállalni, nekem működik :)
A megoldás egyértelműnek tűnt:
"VirtueMart -> Admin -> Beállítások -> A termékek alapértelmezett rendezési módja" résznél válasszuk a "legújabb termékek" lehetőséget.
Meg is volnánk? Csak majdnem.
Ugyanis ez a beállítás azt mondja meg, hogy az adattáblánk melyik mezője szerint történjen a rendezés alapból, a legújabb termékeknél nyilván ez a felvitel dátuma. Nade ha felvitel dátuma szerint rendezzük a termékeinket, akkor a legrégebben felvitt lesz az első. A csavar logikai, az eredménye kézzel fogható.
Mi a megoldás? Meg kéne mondanunk, hogy az időpont szerinti rendezésnél a csökkenő rendezés legyen az alapértelmezés szerinti.
A megoldás a virtuemart.net fórumaiban is megvan, de akkor lássuk itt is.
ftp-n vagy eXtplorer-rel keressük meg a /administrator/components/com_virtuemart/html könyvtárban a shop_browse_queries.php fájlt, ami a megjelenítés és az adatbázis közti kapcsolatért felel és kukkantsunk bele. (Biztonsági mentés azért nem árt)
Keressük meg a következő részt:
case 'product_cdate':
$orderbyField = '`#__{vm}_product`.`cdate`'; break;
Cseréljük ki a következőre:
case 'product_cdate':
$orderbyField = '`#__{vm}_product`.`cdate`';
$DescOrderBy = 'DESC';
break;
Mentsük el és lássuk az eredményt.
A dolog nem csak az időpont esetében működik, hanem a többi rendezési lehetőségnél is beállítható. Ekkor a fent látható analógia alapján szúrjuk be a $DescOrderBy = 'DESC'; részt.
És mégegy dolog.
Az is felmerült, hogy kellene egyéni sorrendezési lehetőség, ami ugye nincs.
Nem szép, de végülis működő megoldás, hogy rejtsük el a cikkszám megjelenítését és igény szerint a sorrendezhetőséget is, az alapértelmezett rendezést állítsuk cikkszám szerintire és a termékek cikkszámának adjuk meg a sorrendet, pl sorszámokkal. Így kvázi-egyéni sorrendet állíthatunk be.
A hack eredményéért nem tudok felelősséget vállalni, nekem működik :)
Utolsó kommentek