Категории

[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 . Однако там он заполняется в нескольких местах, в зависимости от выбора фильтров и т.п. и чтобы всегда было так как хочет автор, надо править везде.


А как сделать так чтобы везде по умолчанию была сортировка по дате добавления?
Везде я имею ввиду не только при просмотре категорий, но и при листинге производителей.
Пока у самого ничего не получается.


Источник



Copyright ShopOS