♥BrockleyJohn Posted October 30, 2017 Share Posted October 30, 2017 @sinopia I wonder if your sort drop down is getting set by the standard code instead of the special product sort. What are your settings in the Additional Sort Filter group? Contact me for work on updating existing stores - whether to Phoenix or the new osC when it's released. Looking for a payment or shipping module? Maybe I've already done it. Working on generalising bespoke solutions for Quickbooks integration, Easify integration and pay4later (DEKO) integration at 2.3.x Link to comment Share on other sites More sharing options...
♥BrockleyJohn Posted October 30, 2017 Share Posted October 30, 2017 Sorry @sinopia, forget the settings for now; I just spotted an extra include: <!-- BOF ADDITIONAL FILTER //--> <div id="sort" style="padding-top: 5px;"> <?php include(DIR_WS_MODULES . 'product_listing_sort.php'); <<<< THIS BELONGS IN INDEX.PHP echo tep_draw_form('sort', $PHP_SELF, 'get'); echo (isset($_GET['cPath']) ? tep_draw_hidden_field('cPath', $_GET['cPath']) : '') ; echo (isset($_GET['filter_id']) ? tep_draw_hidden_field('filter_id', $_GET['filter_id']) :''); echo tep_draw_pull_down_menu('sort', $products_sorter_array, '', 'style="width: 100%;" onchange="this.form.submit()"'); echo tep_hide_session_id() . '</form>'; ?> </div> <!-- EOF ADDITIONAL FILTER //--> Try without that line Contact me for work on updating existing stores - whether to Phoenix or the new osC when it's released. Looking for a payment or shipping module? Maybe I've already done it. Working on generalising bespoke solutions for Quickbooks integration, Easify integration and pay4later (DEKO) integration at 2.3.x Link to comment Share on other sites More sharing options...
Denzel Posted November 9, 2017 Share Posted November 9, 2017 On 24.8.2017 at 7:37 PM, Psytanium said: I'm using the products specifications filter module, it's not working with this sorting module, when I choose a sorting option, the specification filter reset. anyone know how to make the 2 modules work together ? Hi ! Most of this works fine for me, but I have the same issue like @Psytanium, cause the product specifications filter uses urls like this: ?cfil3%5B0%5D=28&nw=1&sort=4a#nw or this: ?cfil2%5B11%5D=19&cfil2%5B12%5D=20&cfil3%5B0%5D=28&nw=1&sort=4a#nw I think, the result is like the max products per page fix, but Im not sure how to get the name of the hidden field... Any hint for me ? Thank you in advance ! Denzel Link to comment Share on other sites More sharing options...
sinopia Posted November 15, 2017 Share Posted November 15, 2017 I've been trying to set this working but without success. I think there's is something missing me. In this website I'm working on a template from themeforest, my index.php has this line: } elseif ($category_depth == 'products' || (isset($HTTP_GET_VARS['manufacturers_id']) && !empty($HTTP_GET_VARS['manufacturers_id']))) { $current_page = FILENAME_CATEGORIES_LISTING; require(DIR_WS_INCLUDES . 'template_top.php'); include(FILENAME_CATEGORIES_LISTING); Which the categories_listing.php is: <?php // create column list $define_list = array('PRODUCT_LIST_MODEL' => PRODUCT_LIST_MODEL, 'PRODUCT_LIST_NAME' => PRODUCT_LIST_NAME, 'PRODUCT_LIST_MANUFACTURER' => PRODUCT_LIST_MANUFACTURER, 'PRODUCT_LIST_PRICE' => PRODUCT_LIST_PRICE, 'PRODUCT_LIST_QUANTITY' => PRODUCT_LIST_QUANTITY, 'PRODUCT_LIST_WEIGHT' => PRODUCT_LIST_WEIGHT, 'PRODUCT_LIST_IMAGE' => PRODUCT_LIST_IMAGE, 'PRODUCT_LIST_BUY_NOW' => PRODUCT_LIST_BUY_NOW); asort($define_list); $column_list = array(); reset($define_list); while (list($key, $value) = each($define_list)) { if ($value > 0) $column_list[] = $key; } $select_column_list = ''; for ($i=0, $n=sizeof($column_list); $i<$n; $i++) { switch ($column_list[$i]) { case 'PRODUCT_LIST_MODEL': $select_column_list .= 'p.products_model, '; break; case 'PRODUCT_LIST_NAME': $select_column_list .= 'pd.products_name, '; break; case 'PRODUCT_LIST_MANUFACTURER': $select_column_list .= 'm.manufacturers_name, '; break; case 'PRODUCT_LIST_QUANTITY': $select_column_list .= 'p.products_quantity, '; break; case 'PRODUCT_LIST_IMAGE': $select_column_list .= 'p.products_image, '; break; case 'PRODUCT_LIST_WEIGHT': $select_column_list .= 'p.products_weight, '; break; } } // show the products of a specified manufacturer if (isset($HTTP_GET_VARS['manufacturers_id']) && !empty($HTTP_GET_VARS['manufacturers_id'])) { if (isset($HTTP_GET_VARS['filter_id']) && tep_not_null($HTTP_GET_VARS['filter_id'])) { // We are asked to show only a specific category $listing_sql = "select " . $select_column_list . " p.products_id, p.manufacturers_id, p.products_price, p.products_tax_class_id, p.products_date_added, p.products_last_modified, p.products_ordered, expires_date, IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price, IF(s.status, s.specials_new_products_price, p.products_price) as final_price from " . TABLE_PRODUCTS . " p left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_MANUFACTURERS . " m, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c where p.products_status = '1' and p.manufacturers_id = m.manufacturers_id and m.manufacturers_id = '" . (int)$HTTP_GET_VARS['manufacturers_id'] . "' and p.products_id = p2c.products_id and pd.products_id = p2c.products_id and pd.language_id = '" . (int)$languages_id . "' and p2c.categories_id = '" . (int)$HTTP_GET_VARS['filter_id'] . "'"; } else { // We show them all $listing_sql = "select " . $select_column_list . " p.products_id, p.manufacturers_id, p.products_price, p.products_tax_class_id, p.products_date_added, p.products_last_modified, p.products_ordered, expires_date, IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price, IF(s.status, s.specials_new_products_price, p.products_price) as final_price from " . TABLE_PRODUCTS . " p left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_MANUFACTURERS . " m where p.products_status = '1' and pd.products_id = p.products_id and pd.language_id = '" . (int)$languages_id . "' and p.manufacturers_id = m.manufacturers_id and m.manufacturers_id = '" . (int)$HTTP_GET_VARS['manufacturers_id'] . "'"; } } else { // show the products in a given categorie if (isset($HTTP_GET_VARS['filter_id']) && tep_not_null($HTTP_GET_VARS['filter_id'])) { // We are asked to show only specific catgeory $listing_sql = "select " . $select_column_list . " p.products_id, p.manufacturers_id, p.products_price, p.products_tax_class_id, p.products_date_added, p.products_last_modified, p.products_ordered, expires_date, IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price, IF(s.status, s.specials_new_products_price, p.products_price) as final_price from " . TABLE_PRODUCTS . " p left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_MANUFACTURERS . " m, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c where p.products_status = '1' and p.manufacturers_id = m.manufacturers_id and m.manufacturers_id = '" . (int)$HTTP_GET_VARS['filter_id'] . "' and p.products_id = p2c.products_id and pd.products_id = p2c.products_id and pd.language_id = '" . (int)$languages_id . "' and p2c.categories_id = '" . (int)$current_category_id . "'"; } else { // We show them all $listing_sql = "select " . $select_column_list . " p.products_id, p.manufacturers_id, p.products_price, p.products_tax_class_id, p.products_date_added, p.products_last_modified, p.products_ordered, expires_date, IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price, IF(s.status, s.specials_new_products_price, p.products_price) as final_price from " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_PRODUCTS . " p left join " . TABLE_MANUFACTURERS . " m on p.manufacturers_id = m.manufacturers_id left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c where p.products_status = '1' and p.products_id = p2c.products_id and pd.products_id = p2c.products_id and pd.language_id = '" . (int)$languages_id . "' and p2c.categories_id = '" . (int)$current_category_id . "'"; } } if ( (!isset($HTTP_GET_VARS['sort'])) || (!preg_match('/^[1-8][ad]$/', $HTTP_GET_VARS['sort'])) || (substr($HTTP_GET_VARS['sort'], 0, 1) > sizeof($column_list)) ) { for ($i=0, $n=sizeof($column_list); $i<$n; $i++) { if ($column_list[$i] == 'PRODUCT_LIST_NAME') { $HTTP_GET_VARS['sort'] = $i+1 . 'a'; $listing_sql .= " order by pd.products_name"; break; } } } else { $sort_col = substr($HTTP_GET_VARS['sort'], 0 , 1); $sort_order = substr($HTTP_GET_VARS['sort'], 1); switch ($column_list[$sort_col-1]) { case 'PRODUCT_LIST_MODEL': $listing_sql .= " order by p.products_model " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name"; break; case 'PRODUCT_LIST_NAME': $listing_sql .= " order by pd.products_name " . ($sort_order == 'd' ? 'desc' : ''); break; case 'PRODUCT_LIST_MANUFACTURER': $listing_sql .= " order by m.manufacturers_name " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name"; break; case 'PRODUCT_LIST_QUANTITY': $listing_sql .= " order by p.products_quantity " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name"; break; case 'PRODUCT_LIST_IMAGE': $listing_sql .= " order by pd.products_name"; break; case 'PRODUCT_LIST_WEIGHT': $listing_sql .= " order by p.products_weight " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name"; break; case 'PRODUCT_LIST_PRICE': $listing_sql .= " order by final_price " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name"; break; } } $catname = HEADING_TITLE; if (isset($HTTP_GET_VARS['manufacturers_id']) && !empty($HTTP_GET_VARS['manufacturers_id'])) { $image = tep_db_query("select manufacturers_image, manufacturers_name as catname from " . TABLE_MANUFACTURERS . " where manufacturers_id = '" . (int)$HTTP_GET_VARS['manufacturers_id'] . "'"); $image = tep_db_fetch_array($image); $catname = $image['catname']; } elseif ($current_category_id) { $image = tep_db_query("select c.categories_image, cd.categories_name as catname from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where c.categories_id = '" . (int)$current_category_id . "' and c.categories_id = cd.categories_id and cd.language_id = '" . (int)$languages_id . "'"); $image = tep_db_fetch_array($image); $catname = $image['catname']; } $image2 = ''; $extraset = ''; if (TITLE_PIC == 'true'){ // Get the right image for the top-right if (isset($HTTP_GET_VARS['manufacturers_id']) && !empty($HTTP_GET_VARS['manufacturers_id'])) { $image2 = tep_db_query("select manufacturers_image from " . TABLE_MANUFACTURERS . " where manufacturers_id = '" . (int)$HTTP_GET_VARS['manufacturers_id'] . "'"); $image2 = tep_db_fetch_array($image2); $image2 = $image2['manufacturers_image']; } elseif ($current_category_id) { $image2 = tep_db_query("select categories_image from " . TABLE_CATEGORIES . " where categories_id = '" . (int)$current_category_id . "'"); $image2 = tep_db_fetch_array($image2); $image2 = $image2['categories_image']; } } ?> <style type="text/css"> @media (max-width: 768px) { .product_pic_wrapper { width: 100% !important; height: 100% !important; } .responsive_block { width: 100% !important; height: 100% !important; } #sub_categories li { margin-left: 0px; } .product_pic_wrapper img { width: 100% !important; height: 100% !important; } #sub_categories li span a { font-size: 20px; } #sub_categories .product_pic_wrapper { margin-top: 0px; } .contentContainer .responsive_block > div { background-color: #f7f7f7; } } </style> <?php echo tep_draw_content_top();?> <?php echo tep_draw_heading_top();?> <?php if ($image2 !=''){?><div class="title_pic"><?php echo tep_image(DIR_WS_IMAGES . $image2, $catname, '', HEADING_IMAGE_HEIGHT); ?></div><?php } ?><h2><?php echo $catname; ?></h2> <?php echo tep_draw_heading_bottom();?> <?php // optional Product List Filter if (PRODUCT_LIST_FILTER > 0) { if (isset($HTTP_GET_VARS['manufacturers_id']) && !empty($HTTP_GET_VARS['manufacturers_id'])) { $filterlist_sql = "select distinct c.categories_id as id, cd.categories_name as name from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c, " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where p.products_status = '1' and p.products_id = p2c.products_id and p2c.categories_id = c.categories_id and p2c.categories_id = cd.categories_id and cd.language_id = '" . (int)$languages_id . "' and p.manufacturers_id = '" . (int)$HTTP_GET_VARS['manufacturers_id'] . "' order by cd.categories_name"; } else { $filterlist_sql= "select distinct m.manufacturers_id as id, m.manufacturers_name as name from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c, " . TABLE_MANUFACTURERS . " m where p.products_status = '1' and p.manufacturers_id = m.manufacturers_id and p.products_id = p2c.products_id and p2c.categories_id = '" . (int)$current_category_id . "' order by m.manufacturers_name"; } $filterlist_query = tep_db_query($filterlist_sql); if (tep_db_num_rows($filterlist_query) > 1) { echo '<div class="show">'; echo tep_draw_form('filter', tep_href_link( FILENAME_DEFAULT ), 'get') . '<div>' . TEXT_SHOW . ' '; if (isset($HTTP_GET_VARS['manufacturers_id']) && !empty($HTTP_GET_VARS['manufacturers_id'])) { echo tep_draw_hidden_field('manufacturers_id', $HTTP_GET_VARS['manufacturers_id']); $options = array(array('id' => '', 'text' => TEXT_ALL_CATEGORIES)); } else { echo tep_draw_hidden_field('cPath', $cPath); $options = array(array('id' => '', 'text' => TEXT_ALL_MANUFACTURERS)); } echo tep_draw_hidden_field('sort', $HTTP_GET_VARS['sort']); while ($filterlist = tep_db_fetch_array($filterlist_query)) { $options[] = array('id' => $filterlist['id'], 'text' => $filterlist['name']); } echo tep_draw_pull_down_menu('filter_id', $options, (isset($HTTP_GET_VARS['filter_id']) ? $HTTP_GET_VARS['filter_id'] : ''), 'onchange="this.form.submit()" class="select"'); echo tep_hide_session_id() . '</div></form>' . "\n"; echo '</div>'; } } ?> <div id="tabs_module_listing" class="tabs"> <?php echo ((SEARCH_RESULTS_LYOUT == 'Grid') ? '<ul class="row_table"><li class="layout row_view" id="list"><a href="#tabs-2" title="'.PRODUCT_LAYOUT_VIEW_ROW.'"></a></li><li class="layout table_view" id="grid"><a href="#tabs-1" title="'.PRODUCT_LAYOUT_VIEW_GRID.'"></a></li></ul>' : '<ul class="row_table"><li class="layout table_view" id="grid"><a href="#tabs-1" title="'.PRODUCT_LAYOUT_VIEW_GRID.'"></a></li><li class="layout row_view" id="list"><a href="#tabs-2" title="'.PRODUCT_LAYOUT_VIEW_ROW.'"></a></li></ul>'); include(DIR_WS_MODULES . FILENAME_PRODUCT_LISTING); ?> </div> <?php echo tep_draw_content_bottom();?> <script type="text/javascript"> $(document).ready(function(){ $("#tabs_module_listing.tabs").tabs({ fx: { opacity: 'toggle', duration: <?php echo SEARCH_RESULTS_DURATION_GRID_LIST_VIEW; ?>}, cookie: { // store cookie for a day, without, it would be a session cookie expires: <?php echo SEARCH_COOKIE_GRID_LIST_VIEW; ?>, name: "startTab_listing" } }); }); </script> Think only sort by manufacters and brands by default. I can't modify it to this addon work. Any suggestion? Best regards. Link to comment Share on other sites More sharing options...
sinopia Posted November 16, 2017 Share Posted November 16, 2017 Could solved.. I missed this part: //switch ($column_list[$sort_col-1]) { switch ($sorting_list[$sort_col]) { Link to comment Share on other sites More sharing options...
Psytanium Posted November 16, 2017 Share Posted November 16, 2017 Hello, some of my products, but not all, have Tax Class 10%. When I sort the products by price, it is sorted by price not by final price which result in wrong sorting. e.g. Product A price is 22$ with Tax Class become 24.2$ Product B price is 22$ without Tax class. The sorting output Product A, then B How can I sort by the after tax price ?? Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.