Сортировка товаров

Статус
В этой теме нельзя размещать новые ответы.
Ошибка дате ({ASC_DATE} | {DESC_DATE}) выдаётся только в поиске, в остальных категориях работает нормально.

Это не ошибка).
Просто нужно еще прописать соответствующие строчки в файле языка, что вы хотите, чтобы на этих местах где на рисунке в предыдущем посту писало "дата предыдущая" "дата прошлая" что-то типа того....
Ну я думаю вы знаете как это сделать.
 
Строчки все прописывала.
Всё сделала согласно постам на первой странице.

Может еще какие то данные влияют на результат?
 
Так а что щас пишет??? ЧПУ ЕСТЬ?
 
Строчки все прописывала.
Всё сделала согласно постам на первой странице.

Может еще какие то данные влияют на результат?

Для того чтобы была сортировка на странице поиска необходимо в файле \includes\search_simple.php
поменять это:
Код:
if (	$callBackParam["sort"] == "categoryID"			|| 
			$callBackParam["sort"] == "name"				||
			$callBackParam["sort"] == "brief_description"	||
			$callBackParam["sort"] == "in_stock"			||
			$callBackParam["sort"] == "Price"				||
			$callBackParam["sort"] == "customer_votes"		||
			$callBackParam["sort"] == "customers_rating"	||
			$callBackParam["sort"] == "list_price"			||
			$callBackParam["sort"] == "sort_order"			||
			$callBackParam["sort"] == "items_sold"			||
			$callBackParam["sort"] == "product_code"		||
			$callBackParam["sort"] == "shipping_freight"		)

На это:

Код:
if (    $callBackParam["sort"] == "categoryID"            ||  
                $callBackParam["sort"] == "name"                || 
                $callBackParam["sort"] == "brief_description"    || 
                $callBackParam["sort"] == "in_stock"            || 
                $callBackParam["sort"] == "Price"                || 
                $callBackParam["sort"] == "customer_votes"        || 
                $callBackParam["sort"] == "customers_rating"    || 
                $callBackParam["sort"] == "list_price"            || 
                $callBackParam["sort"] == "sort_order"            || 
                $callBackParam["sort"] == "items_sold"            || 
                $callBackParam["sort"] == "product_code"        || 
                // NOT ORIGINAL: SORT BY DATE ADDED 
                $callBackParam["sort"] == "date_added"            || 
                $callBackParam["sort"] == "shipping_freight"        )


Добавлено через 33 минуты

Добавлено через 35 минут
Как ни странно не работает в глобале, а локально на денвере всё прекрасно...
 
как еще вывести дату добавления к товару типа чтоб под каждым товаром было "добавлено хх.хх.ххх" ?

Если дату добавления товара и дату изменения товара нужно выводить не в категориях а только в подробном просмотре товара. То можно сделать так.
В админке, при добавлении товара (/products.php) показывается:
Дата добавления 01.11.2008 10:21:05
Дата изменения 10.11.2008 23:15:50

1.
Файл: templates/frontend/tmpl_ВАШ_НОМЕР_ШАБЛОНА/product_detailed.tpl.html
В нужно месте шаблона вставить:

Код:
{$smarty.const.ADMIN_DATE_ADDED}: {$product_info.date_added}<br>
{$smarty.const.ADMIN_DATE_MODIFIED}: {$product_info.date_modified}

и все!

2.
Если хотите убрать часы, минуты, секунды
\core_functions\datetime_functions.php

Код:
{
	$dformat = (!strcmp(CONF_DATE_FORMAT,"DD.MM.YYYY")) ? "d.m.Y H:i:s" : "m/d/Y h:i:s A";
	$a = @date($dformat, strtotime($dt));
	return $a;
}

Заменить на:

Код:
{
	$dformat = (!strcmp(CONF_DATE_FORMAT,"DD.MM.YYYY")) ? "d.m.Y" : "m/d/Y A";
	$a = @date($dformat, strtotime($dt));
	return $a;
}

будет отображаться так:
Дата добавления 01.11.2008
Дата изменения 10.11.2008
 
потому, что не то...

Для того чтобы была сортировка на странице поиска необходимо в файле \includes\search_simple.php
поменять это:
Код:
if (	$callBackParam["sort"] == "categoryID"			|| 
			$callBackParam["sort"] == "name"				||
			$callBackParam["sort"] == "brief_description"	||
			$callBackParam["sort"] == "in_stock"			||
			$callBackParam["sort"] == "Price"				||
			$callBackParam["sort"] == "customer_votes"		||
			$callBackParam["sort"] == "customers_rating"	||
			$callBackParam["sort"] == "list_price"			||
			$callBackParam["sort"] == "sort_order"			||
			$callBackParam["sort"] == "items_sold"			||
			$callBackParam["sort"] == "product_code"		||
			$callBackParam["sort"] == "shipping_freight"		)

На это:

Код:
if (    $callBackParam["sort"] == "categoryID"            ||  
                $callBackParam["sort"] == "name"                || 
                $callBackParam["sort"] == "brief_description"    || 
                $callBackParam["sort"] == "in_stock"            || 
                $callBackParam["sort"] == "Price"                || 
                $callBackParam["sort"] == "customer_votes"        || 
                $callBackParam["sort"] == "customers_rating"    || 
                $callBackParam["sort"] == "list_price"            || 
                $callBackParam["sort"] == "sort_order"            || 
                $callBackParam["sort"] == "items_sold"            || 
                $callBackParam["sort"] == "product_code"        || 
                // NOT ORIGINAL: SORT BY DATE ADDED 
                $callBackParam["sort"] == "date_added"            || 
                $callBackParam["sort"] == "shipping_freight"        )


Добавлено через 33 минуты

Добавлено через 35 минут
Как ни странно не работает в глобале, а локально на денвере всё прекрасно...


Только в \includes\search_simple.php надо добавить вот это, а не то что Вы написали...

PHP:
		function _sortSetting( &$smarty, $urlToSort )
		{
			$sort_string = STRING_PRODUCT_SORT;
			$sort_string = str_replace( "{ASC_NAME}",   "<a href='".$urlToSort."&sort=name&direction=ASC'>".STRING_ASC."</a>",	$sort_string );
			$sort_string = str_replace( "{DESC_NAME}",  "<a href='".$urlToSort."&sort=name&direction=DESC'>".STRING_DESC."</a>",	$sort_string );
			$sort_string = str_replace( "{ASC_PRICE}",   "<a href='".$urlToSort."&sort=Price&direction=ASC'>".STRING_ASC."</a>",	$sort_string );
			$sort_string = str_replace( "{DESC_PRICE}",  "<a href='".$urlToSort."&sort=Price&direction=DESC'>".STRING_DESC."</a>",	$sort_string );
			$sort_string = str_replace( "{ASC_RATING}",   "<a href='".$urlToSort."&sort=customers_rating&direction=ASC'>".STRING_ASC."</a>",	$sort_string );
			$sort_string = str_replace( "{DESC_RATING}",  "<a href='".$urlToSort."&sort=customers_rating&direction=DESC'>".STRING_DESC."</a>",	$sort_string );
// NOT ORIGINAL: SORT BY DATE ADDED start
            $sort_string = str_replace( "{ASC_DATE}",   "<a href='".$urlToSort."&sort=date_added&direction=ASC'>".STRING_ASC."</a>",    $sort_string );
            $sort_string = str_replace( "{DESC_DATE}",  "<a href='".$urlToSort."&sort=date_added&direction=DESC'>".STRING_DESC."</a>",    $sort_string );
// NOT ORIGINAL: SORT BY DATE ADDED end
			$smarty->assign( "string_product_sort", $sort_string );
		}

Работает как на Дэнвере, так и в Инете.
 
а как добавить данное решение к прайс-листу.
Я пытался изменить этот кусок кода, но не выходит, что я делаю не так помогите !!!

$q1 = db_query("select categoryID, name from ".CATEGORIES_TABLE.
" where parent=$parent order by sort_order, name") or die (db_error());
while ($row = db_fetch_row($q1))
{

//define back color of the cell
$r = hexdec(substr(CONF_MIDDLE_COLOR, 0, 2));
$g = hexdec(substr(CONF_MIDDLE_COLOR, 2, 2));
$b = hexdec(substr(CONF_MIDDLE_COLOR, 4, 2));
$m = (float)max($r, max($g,$b));
$r = round((190+20*min($level,3))*$r/$m);
$g = round((190+20*min($level,3))*$g/$m);
$b = round((190+20*min($level,3))*$b/$m);
$c = dechex($r).dechex($g).dechex($b); //final color

//add category to the output
$out[$cnt][0] = $row[0];
$out[$cnt][1] = $row[1];
$out[$cnt][2] = $level;
$out[$cnt][3] = $c;
$out[$cnt][4] = 0; //0 is for category, 1 - product
$cnt++;

if ( !isset($_GET["sort"]) )
$order_clause = "order by sort_order";
else
{
//verify $_GET["sort"]
switch ($_GET["sort"]){
default:
$_GET["sort"] = "name";
case 'name':
case 'Price':
case 'customers_rating':
break;
}

$order_clause = " order by ".$_GET["sort"];
if ( isset($_GET["direction"]) )
{
if ( !strcmp( $_GET["direction"] , "DESC" ) )
$order_clause .= " DESC ";
else
$order_clause .= " ASC ";
}
}

$sql = "
select productID, name, Price, in_stock from ".PRODUCTS_TABLE.
" where categoryID=".$row[0]." and Price>0 and enabled=1 ".
$order_clause."
";

Добавлено через 45 секунд
Это фаил pricelist.php
 
а как добавить данное решение к прайс-листу.
Я пытался изменить этот кусок кода, но не выходит, что я делаю не так помогите !!!

$q1 = db_query("select categoryID, name from ".CATEGORIES_TABLE.
" where parent=$parent order by sort_order, name") or die (db_error());
while ($row = db_fetch_row($q1))
{

//define back color of the cell
$r = hexdec(substr(CONF_MIDDLE_COLOR, 0, 2));
$g = hexdec(substr(CONF_MIDDLE_COLOR, 2, 2));
$b = hexdec(substr(CONF_MIDDLE_COLOR, 4, 2));
$m = (float)max($r, max($g,$b));
$r = round((190+20*min($level,3))*$r/$m);
$g = round((190+20*min($level,3))*$g/$m);
$b = round((190+20*min($level,3))*$b/$m);
$c = dechex($r).dechex($g).dechex($b); //final color

//add category to the output
$out[$cnt][0] = $row[0];
$out[$cnt][1] = $row[1];
$out[$cnt][2] = $level;
$out[$cnt][3] = $c;
$out[$cnt][4] = 0; //0 is for category, 1 - product
$cnt++;

if ( !isset($_GET["sort"]) )
$order_clause = "order by sort_order";
else
{
//verify $_GET["sort"]
switch ($_GET["sort"]){
default:
$_GET["sort"] = "name";
case 'name':
case 'Price':
case 'customers_rating':
break;
}

$order_clause = " order by ".$_GET["sort"];
if ( isset($_GET["direction"]) )
{
if ( !strcmp( $_GET["direction"] , "DESC" ) )
$order_clause .= " DESC ";
else
$order_clause .= " ASC ";
}
}

$sql = "
select productID, name, Price, in_stock from ".PRODUCTS_TABLE.
" where categoryID=".$row[0]." and Price>0 and enabled=1 ".
$order_clause."
";

Добавлено через 45 секунд
Это фаил pricelist.php

Меняем

Код:
	switch ($_GET["sort"]) {
		default:
			$_GET["sort"] = "name";
		case 'name':
		case 'Price':
		case 'customers_rating':
		[B]case 'product_code':  // для сортировки по коду товара
		case 'date_added':  // для сортировки по дате добавления[/B]
			break;
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху