Категории
[FAQ] Часто задаваемые вопросы и ответы
Проблемы и решения
Ошибки и исправления
Общие вопросы
Расширения
Установка и обновление
Модули
Шаблоны
Локализация интерфейса
Коммерческие предложения
Учимся бизнесу
Бизнес книги
Поисковая оптимизация (SEO)
Магазины на ShopOS
Хостинг для ShopOS
Предложения и пожелания
Курилка
|
Категория товаров
Как сделать, чтобы на странице категории товаров, товар выстраивался именно в порядке поступления. А то сейчас как то в разброс выходит. Думаю, что нужно рыть нужно тут - themes/defoult/module/product_listing/product_listing_columns.html но вот что именно прописать не знаю.
modules\product_listing.php
попробовать заменить
ORDER BY pd.products_name
на
ORDER BY p.products_date_added
Что-то не нашел такой строчки... <?php /* ##################################### # ShopOS: Скрипт интернет-магазина # Copyright (c) 2008-2009 # http://shopos.ru # Ver. 1.0.0 ##################################### */
$module = new osTemplate; $module->assign('tpl_path', _HTTP_THEMES_C); $result = true;
if (isset($_GET) && is_numeric($_GET)) { $num_page = $_GET; } else { $num_page = MAX_DISPLAY_SEARCH_RESULTS; }
$module->assign('LINK_PAGE',os_href_link(basename($PHP_SELF),os_get_all_get_params(array ('page','on_page','sort', 'direction', 'info','x','y')) . 'on_page='));
$listing_split = new splitPageResults($listing_sql, (int)$_GET, $num_page, 'p.products_id'); $module_content = array (); if ($listing_split->number_of_rows > 0) {
$navigation = TEXT_RESULT_PAGE.' '.$listing_split->display_links(MAX_DISPLAY_PAGE_LINKS, os_get_all_get_params(array ('page', 'info', 'x', 'y'))); $navigation_pages = $listing_split->display_count(TEXT_DISPLAY_NUMBER_OF_PRODUCTS); if (GROUP_CHECK == 'true') { $group_check = "and c.group_permission_".$_SESSION."=1 "; } $category_query = osDBquery("select cd.categories_description, cd.categories_name, cd.categories_heading_title, c.listing_template, c.categories_image from ".TABLE_CATEGORIES." c, ".TABLE_CATEGORIES_DESCRIPTION." cd where c.categories_id = '".$current_category_id."' and cd.categories_id = '".$current_category_id."' ".$group_check." and cd.language_id = '".$_SESSION."'");
$category = os_db_fetch_array($category_query,true); $image = ''; if ($category != '') $image = DIR_WS_IMAGES.'categories/'.$category; $module->assign('CATEGORIES_NAME', $category); $module->assign('CATEGORIES_HEADING_TITLE', $category);
$module->assign('CATEGORIES_IMAGE', $image); $module->assign('CATEGORIES_DESCRIPTION', $category);
$rows = 0; $listing_query = osDBquery($listing_split->sql_query); while ($listing = os_db_fetch_array($listing_query, true)) { $rows ++; $module_content[] = $product->buildDataArray($listing); } } else {
// no product found $result = false;
} // get default template if ($category == '' or $category == 'default') { $files = array (); if ($dir = opendir(DIR_FS_CATALOG.'themes/'.CURRENT_TEMPLATE.'/module/product_listing/')) { while (($file = readdir($dir)) !== false) { if (is_file(DIR_FS_CATALOG.'themes/'.CURRENT_TEMPLATE.'/module/product_listing/'.$file) and ($file != "index.html") and (substr($file, 0, 1) !=".")) { $files[] = array ('id' => $file, 'text' => $file); } //if } // while closedir($dir); } $category = $files; }
if ($result != false) {
$module->assign('MANUFACTURER_DROPDOWN', $manufacturer_dropdown); $module->assign('MANUFACTURER_SORT', $manufacturer_sort); $module->assign('language', $_SESSION); $module->assign('module_content', $module_content);
$module->assign('LINK_sort_name_asc',os_href_link(basename($PHP_SELF),os_get_all_get_params(array ('page','sort', 'direction', 'info','x','y')) . 'sort=name&direction=asc')); $module->assign('LINK_sort_name_desc',os_href_link(basename($PHP_SELF),os_get_all_get_params(array ('page','sort', 'direction', 'info','x','y')) . 'sort=name&direction=desc')); $module->assign('LINK_sort_price_asc',os_href_link(basename($PHP_SELF),os_get_all_get_params(array ('page','sort', 'direction', 'info','x','y')) . 'sort=price&direction=asc')); $module->assign('LINK_sort_price_desc',os_href_link(basename($PHP_SELF),os_get_all_get_params(array ('page','sort', 'direction', 'info','x','y')) . 'sort=price&direction=desc'));
$module->assign('NAVIGATION', $navigation); $module->assign('NAVIGATION_PAGES', $navigation_pages); // set cache ID if (!CacheCheck()) { $module->caching = 0; $module = $module->fetch(CURRENT_TEMPLATE.'/module/product_listing/'.$category); } else { $module->caching = 1; $module->cache_lifetime = CACHE_LIFETIME; $module->cache_modified_check = CACHE_CHECK; $cache_id = $current_category_id.'_'.$_SESSION.'_'.$_SESSION.'_'.$_SESSION.'_'.$_GET.'_'.$_GET.'_'.$_GET.'_'.$_GET.'_'.$_GET.'_'.$_GET.'_'.$_GET.'_'.$_GET.'_'.$_GET; $module = $module->fetch(CURRENT_TEMPLATE.'/module/product_listing/'.$category, $cache_id); } $osTemplate->assign('main_content', $module); } else {
$error = TEXT_PRODUCT_NOT_FOUND; include (DIR_WS_MODULES.FILENAME_ERROR_HANDLER); } ?>
\modules\product_listing.php
<?php /* ##################################### # ShopOS: Скрипты интернет-магазина # Copyright (c) 2008-2009 # http://www.shopos.ru # Ver. 1.0.0 ##################################### */
$module = new osTemplate; $module->assign('tpl_path', _HTTP_THEMES_C); $result = true;
if (isset($_GET) && is_numeric($_GET)) { $num_page = $_GET; } else { $num_page = MAX_DISPLAY_SEARCH_RESULTS; }
/* all products list */ $current_manufacturers_id = 0; $where_manufacturers = ""; if(isset($_GET)) { $current_manufacturers_id = intval($_GET); } if($current_manufacturers_id != 0){ $where_manufacturers = " and p.manufacturers_id = '" . $current_manufacturers_id . "' "; }
if($current_manufacturers_id != 0){
$product_list_rs = osDBquery("select p.products_model, p.products_ean, pd.products_name, p.products_id
from ".TABLE_PRODUCTS_DESCRIPTION." pd, ".TABLE_PRODUCTS_TO_CATEGORIES." p2c, ".TABLE_PRODUCTS." p
where p.products_status = '1' " . $where_manufacturers . " and p.products_id = p2c.products_id and pd.products_id = p2c.products_id and pd.language_id = '1' and p2c.categories_id = '" . $current_category_id . "' ORDER BY pd.products_name ");
$product_list = array(); while($product_row = os_db_fetch_array($product_list_rs,true)) { $product_list[] = $product_row; } $product_list_info = "TEST"; $module->assign('product_list', $product_list);
} elseif (!empty($search_by_params_ids)) { $product_list_rs = osDBquery("select p.products_model, p.products_ean, pd.products_name, p.products_id
from ".TABLE_PRODUCTS_DESCRIPTION." pd, ".TABLE_PRODUCTS_TO_CATEGORIES." p2c, ".TABLE_PRODUCTS." p
where p.products_status = '1' and " . $search_by_params_ids . " p.products_id = p2c.products_id and pd.products_id = p2c.products_id and pd.language_id = '1' and p2c.categories_id = '" . $current_category_id . "' ORDER BY pd.products_name "); $product_list = array(); while($product_row = os_db_fetch_array($product_list_rs,true)) { $product_list[] = $product_row; } $module->assign('product_list', $product_list);
} else {
} /* */ $module->assign('LINK_PAGE',os_href_link(basename($PHP_SELF),os_get_all_get_params(array ('page','on_page','sort', 'direction', 'info','x','y')) . 'on_page='));
$listing_sql = str_replace("where p.products_status = '1'", "where $search_by_params_ids p.products_status = '1'", $listing_sql);
if (isset($_GET)) {
if ('all' === $_GET) { $listing_sql = str_replace("p.products_status = '1'", "1", $listing_sql); } else { $_GET = intval($_GET); $listing_sql = str_replace("p.products_status = '1'", "p.products_status = '".$_GET."'", $listing_sql); } } //$listing_sql = get_params_listing_sql($listing_sql, intval($_GET), $selectedGroups);
//print ""; //exit; $listing_split = new splitPageResults($listing_sql, (int)$_GET, $num_page, 'p.products_id'); $module_content = array (); if ($listing_split->number_of_rows > 0) {
$navigation = TEXT_RESULT_PAGE.' '.$listing_split->display_links(MAX_DISPLAY_PAGE_LINKS, os_get_all_get_params(array ('page', 'info', 'x', 'y'))); $navigation_pages = $listing_split->display_count(TEXT_DISPLAY_NUMBER_OF_PRODUCTS); if (GROUP_CHECK == 'true') { $group_check = "and c.group_permission_".$_SESSION."=1 "; } $category_query = osDBquery("select cd.categories_description, cd.categories_name, cd.categories_heading_title, c.listing_template, c.categories_image from ".TABLE_CATEGORIES." c, ".TABLE_CATEGORIES_DESCRIPTION." cd where c.categories_id = '".$current_category_id."' and cd.categories_id = '".$current_category_id."' ".$group_check." and cd.language_id = '".$_SESSION."'");
$category = os_db_fetch_array($category_query,true); $image = ''; if ($category != '') $image = DIR_WS_IMAGES.'categories/'.$category; $module->assign('CATEGORIES_NAME', $category); $module->assign('CATEGORIES_HEADING_TITLE', $category);
$module->assign('CATEGORIES_IMAGE', $image); $module->assign('CATEGORIES_DESCRIPTION', $category); $rows = 0; $listing_query = osDBquery($listing_split->sql_query); while ($listing = os_db_fetch_array($listing_query, true)) { $rows ++; $module_content[] = $product->buildDataArray($listing); $ids[] = $module_content; } // Parameters start
if (is_array($ids) && sizeof($ids) > 0) { $cats = os_db_query("SELECT products_id, categories_id FROM ".TABLE_PRODUCTS_TO_CATEGORIES." WHERE products_id IN (".implode(", ", $ids).")"); $temp = array(); while ($c = os_db_fetch_array($cats, true)) { if ($temp] < 1) $temp] = $c; }
$p_list = array(); /*$params_r = osDBquery("SELECT products_id, categories_id, products_parameters_title, products_parameters2products_value, products_parameters_titlesuff FROM ".TABLE_PRODUCTS_PARAMETERS2PRODUCTS." LEFT JOIN ".TABLE_PRODUCTS_PARAMETERS." USING(products_parameters_id) WHERE products_id IN (".implode(", ", $ids).") AND products_parameters_useinsdesc = 1 ORDER BY products_parameters_order ASC"); while($p = os_db_fetch_array($params_r,true)) { //if ($temp] == $p) $p_list][] = array('name' => $p, 'value' => $p, 'suff' => $p); } foreach($module_content as $k => $m) { $module_content = $p_list]; } */ }
//$module->assign('BUTTON_COMPARE', os_image_submit('button_compare.gif', TEXT_PRODUCT_COMPARE));
// Parameters end } else {
// no product found $result = false;
} // get default template if ($category == '' or $category == 'default') { $files = array (); if ($dir = opendir(_THEMES_C.'module/product_listing/')) { while (($file = readdir($dir)) !== false) { if (is_file(_THEMES_C.'module/product_listing/'.$file) and ($file != "index.html") and (substr($file, 0, 1) !=".")) { $files[] = $file; } //if } // while closedir($dir); } sort($files); $category = $files; }
if ($result != false) {
$module->assign('MANUFACTURER_DROPDOWN', $manufacturer_dropdown); $module->assign('MANUFACTURER_SORT', $manufacturer_sort); $module->assign('language', $_SESSION); $module->assign('module_content', $module_content);
$module->assign('LINK_sort_name_asc',os_href_link(basename($PHP_SELF),os_get_all_get_params(array ('page','sort', 'direction', 'info','x','y')) . 'sort=name&direction=asc')); $module->assign('LINK_sort_name_desc',os_href_link(basename($PHP_SELF),os_get_all_get_params(array ('page','sort', 'direction', 'info','x','y')) . 'sort=name&direction=desc')); $module->assign('LINK_sort_price_asc',os_href_link(basename($PHP_SELF),os_get_all_get_params(array ('page','sort', 'direction', 'info','x','y')) . 'sort=price&direction=asc')); $module->assign('LINK_sort_price_desc',os_href_link(basename($PHP_SELF),os_get_all_get_params(array ('page','sort', 'direction', 'info','x','y')) . 'sort=price&direction=desc'));
$module->assign('NAVIGATION', $navigation); $module->assign('NAVIGATION_PAGES', $navigation_pages); // set cache ID if (!CacheCheck()) { $module->caching = 0; $module = $module->fetch(CURRENT_TEMPLATE.'/module/product_listing/'.$category); } else { $module->caching = 1; $module->cache_lifetime = CACHE_LIFETIME; $module->cache_modified_check = CACHE_CHECK; $cache_id = $current_category_id.'_'.$_SESSION.'_'.$_SESSION.'_'.$_SESSION.'_'.$_GET.'_'.$_GET.'_'.$_GET.'_'.$_GET.'_'.$_GET.'_'.$_GET.'_'.$_GET.'_'.$_GET.'_'.$_GET.'_'.$_GET.'_'.$_GET.'_'.$_GET.'_'.$_GET.'_'.$_GET.'_'.$_GET; $module = $module->fetch(CURRENT_TEMPLATE.'/module/product_listing/'.$category, $cache_id); } $osTemplate->assign('main_content', $module); } else {
$error = TEXT_PRODUCT_NOT_FOUND; include (_MODULES.FILENAME_ERROR_HANDLER); } ?>
Странно конечно, но у меня вот такой файл. И я его не менял. Может ты что-то доделал позже? Но попробовал вставить твой код и измененную строчку
ORDER BY p.products_date_added "); Как было так и осталось
аналогично((
Какая версия?
modules\product_listing.php
попробовать заменить
ORDER BY pd.products_name
на
ORDER BY p.products_date_added
Думаю не поможет. Насколько я разобрался, при обычном выводе товаров в категории, нас скорее интересует массив $listing_sql , который в свою очередь "протягивается" из default.php . Однако там он заполняется в нескольких местах, в зависимости от выбора фильтров и т.п. и чтобы всегда было так как хочет автор, надо править везде.
А как сделать так чтобы везде по умолчанию была сортировка по дате добавления? Везде я имею ввиду не только при просмотре категорий, но и при листинге производителей. Пока у самого ничего не получается.
Источник
|