[?] Arrange by price and name in product listing

Messagepar nequaquam » Mer 29 Mar 2006, 08:50

Hi OsCSS people,
original based on tables OsCommerce allows arrange by price and name in product listing, but not OsCSS. It's necessary make it with a dropdown menu, but I haven't gotten it. I've seen something similar in some web.

Original Oscommerce
Image


Found in http://www.acuista.com/scripts/home/listadocategoria.php?categoria=21129&pagina=0 (Does'nt OsCommerce web)

Image

If somebody knows as making it, please explain to us. :)
Dernière édition par nequaquam le Mer 29 Mar 2006, 08:56, édité 1 fois.
_______________________________________________________________________________

Website: nequaquam
osCSS shop in development: pugnae
nequaquam
Membre actif
 
Messages: 48
Inscription: Mer 08 Fév 2006, 12:40
Localisation: Barcelona

Messagepar nequaquam » Mer 29 Mar 2006, 20:52

Hi, I've found something about this.

http://forums.oscommerce.com/lofiversion/index.php/t30997.html

I added to test at content/index_products:
Code: Tout sélectionner
  <script>
  function sort_by() {
   n = document.all.select_order.order_by.value;
 if (n == 1) {
  location.href = "<?php echo $PHP_SELF.'?cPath='.$cPath.'&osCsid='.$osCsid.'&page='.$page;?>&sort=2a";
 } else if (n == 2) {
  location.href = "<?php echo $PHP_SELF.'?cPath='.$cPath.'&osCsid='.$osCsid.'&page='.$page;?>&sort=3a";
 } else if (n == 3) {
  location.href = "<?php echo $PHP_SELF.'?cPath='.$cPath.'&osCsid='.$osCsid.'&page='.$page;?>&sort=4a";
 }
  }
  </script>

  <form name="select_order">
   <select name="order_by" onChange="sort_by()">
    <option value="0">Sort By:
    <option value="1" <?php if (strstr($sort,'2a')) {echo 'selected';}?>>- Name
    <option value="2" <?php if (strstr($sort,'3a')) {echo 'selected';}?>>- Design
    <option value="3" <?php if (strstr($sort,'4a')) {echo 'selected';}?>>- Price
   </select>
  </form>

This code add a dropdown menu to the product listing, but it doesn't work. I should modify the product_listing.php file. Some idea?
Dernière édition par nequaquam le Ven 31 Mar 2006, 09:51, édité 1 fois.
_______________________________________________________________________________

Website: nequaquam
osCSS shop in development: pugnae
nequaquam
Membre actif
 
Messages: 48
Inscription: Mer 08 Fév 2006, 12:40
Localisation: Barcelona

Messagepar nequaquam » Mer 29 Mar 2006, 21:25

It can also be possible to order as the $manufacturer_filter variable, but it's necessary modify the database and/or index.php:
Code: Tout sélectionner
// optional Product List Filter
    if (PRODUCT_LIST_FILTER > 0) {
      if (isset($_GET['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)$_GET['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);
     
    $manufacturer_filter = '';
    if (tep_db_num_rows($filterlist_query) > 1) {
        $manufacturer_filter .= tep_draw_form('filter', FILENAME_DEFAULT, 'get') . "n";
    $manufacturer_filter .= '<fieldset class="manufacturerFilter">' . "n";
    $manufacturer_filter .= '<p>'. "n" ;       
    $manufacturer_filter .= '<label for="filter_id">' . TEXT_SHOW . '</label>' . "n";
    if (isset($_GET['manufacturers_id'])) {
          $manufacturer_filter .= tep_draw_hidden_field('manufacturers_id', $_GET['manufacturers_id']);
          $options = array(array('id' => '', 'text' => TEXT_ALL_CATEGORIES));
        } else {
          $manufacturer_filter .= tep_draw_hidden_field('cPath', $cPath);
          $options = array(array('id' => '', 'text' => TEXT_ALL_MANUFACTURERS));
        }
        $manufacturer_filter .= tep_draw_hidden_field('sort', $_GET['sort']);
        while ($filterlist = tep_db_fetch_array($filterlist_query)) {
          $options[] = array('id' => $filterlist['id'], 'text' => $filterlist['name']);
        }
        $manufacturer_filter .= tep_draw_pull_down_menu('filter_id', 'filter_id',$options, (isset($_GET['filter_id']) ? $_GET['filter_id'] : ''), 'onchange="this.form.submit()"');
        $manufacturer_filter .= '</p>'. "n". '</fieldset>' . "n";
    $manufacturer_filter .= '</form>'. "n";
      }
    }
Dernière édition par nequaquam le Mer 29 Mar 2006, 22:40, édité 1 fois.
_______________________________________________________________________________

Website: nequaquam
osCSS shop in development: pugnae
nequaquam
Membre actif
 
Messages: 48
Inscription: Mer 08 Fév 2006, 12:40
Localisation: Barcelona

Messagepar nequaquam » Ven 31 Mar 2006, 09:22

Hello, I've not received answers, nobody should know it... :(
I've investigated a little and I've found references in includes/functions/general.php:
Code: Tout sélectionner
// Return table heading with sorting capabilities
  function tep_create_sort_heading($sortby, $colnum, $heading) {
    global $PHP_SELF;

    $sort_prefix = '';
    $sort_suffix = '';

    if ($sortby) {
      $sort_prefix = '<a href="' . tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('page', 'info', 'sort')) . 'page=1&sort=' . $colnum . ($sortby == $colnum . 'a' ? 'd' : 'a')) . '" title="' . tep_output_string(TEXT_SORT_PRODUCTS . ($sortby == $colnum . 'd' || substr($sortby, 0, 1) != $colnum ? TEXT_ASCENDINGLY : TEXT_DESCENDINGLY) . TEXT_BY . $heading) . '" class="productListing-heading">' ;
      $sort_suffix = (substr($sortby, 0, 1) == $colnum ? (substr($sortby, 1, 1) == 'a' ? '+' : '-') : '') . '</a>';
    }

    return $sort_prefix . $heading . $sort_suffix;
  }

Therefore OsCSS maintains the capability to sort for brand, name or price.
Does nobody know as making a dropdown menu to sort products?

It could be made as $manufacturer_filter:
Variable Cross Reference
$manufacturer_filter
Defined at:

* /index.php -> line 173


Referenced 12 times:

* /includes/content/index_products.php -> line 27
* /index.php -> line 173
* /index.php -> line 175
* /index.php -> line 176
* /index.php -> line 177
* /index.php -> line 178
* /index.php -> line 180
* /index.php -> line 183
* /index.php -> line 186
* /index.php -> line 190
* /index.php -> line 191
* /index.php -> line 192

I am lost.
Thank you in advance.
Dernière édition par nequaquam le Ven 31 Mar 2006, 09:49, édité 1 fois.
_______________________________________________________________________________

Website: nequaquam
osCSS shop in development: pugnae
nequaquam
Membre actif
 
Messages: 48
Inscription: Mer 08 Fév 2006, 12:40
Localisation: Barcelona

Messagepar stepibou » Sam 01 Avr 2006, 13:31

Hello,
nequaquam,

I think there's every thing you need to order results on product listing in oscss,
Just the links like ms2 are missing!..
You can find it in a includes/modules/product_listing.php of an ms2..


For the manufacturers filter, and categories, the same , it is just unlinked...
to be verified...

no, no, it's included!!!!!
in includes/content/index_products.php : you have :
Code: Tout sélectionner
<?php echo $manufacturer_filter ;?>
  <?php include(DIR_WS_MODULES . FILENAME_PRODUCT_LISTING); ?>

in index.php :
// optional Product List Filter
...

hope it 'll help you.
bye
--> osCSS inside <--
stepibou
Membre très actif
 
Messages: 274
Inscription: Dim 30 Oct 2005, 02:15
Localisation: Lyon

Messagepar nequaquam » Sam 01 Avr 2006, 22:10

Hello stepibou, thank you to answer.
I've been thinking about the topic and I've found solution to the problem. It's very simple, in includes/content/index_products.php I've added similar code to:
Code: Tout sélectionner
<div id="sort">
<a href="index.php?cPath=<?php echo $cPath;?>&sort=2a">Name A-Z</a>
<a href="index.php?cPath=<?php echo $cPath;?>&sort=2d">Name Z-A</a><br>
<a href="index.php?cPath=<?php echo $cPath;?>&sort=4a">From - to + price</a>
<a href="index.php?cPath=<?php echo $cPath;?>&sort=4d">From + to - price</a><br>
<a href="index.php?cPath=<?php echo $cPath;?>&sort=3a">From - to + availability</a>
<a href="index.php?cPath=<?php echo $cPath;?>&sort=3d">From + to - availability</a><br>
</div>

It's the simplest and easy solution.
Thanks again to answer, I believed that it didn't interest anybody.
_______________________________________________________________________________

Website: nequaquam
osCSS shop in development: pugnae
nequaquam
Membre actif
 
Messages: 48
Inscription: Mer 08 Fév 2006, 12:40
Localisation: Barcelona

Messagepar stepibou » Sam 01 Avr 2006, 23:21

ok, i give you the good osc code to keep sessions :
Code: Tout sélectionner
<div id="sort">
<a href="<?php echo tep_href_link(FILENAME_DEFAULT, 'cPath='. $cPath .'&sort=2a'); ?>">Name A-Z</a>
...
<br />
</div>

Please do not use <br> but <br />,
you can verifie your pages on w3c validator..

Good code,
bye
;)
--> osCSS inside <--
stepibou
Membre très actif
 
Messages: 274
Inscription: Dim 30 Oct 2005, 02:15
Localisation: Lyon

Messagepar nequaquam » Dim 02 Avr 2006, 14:59

Merci stepibou,
W3C Validator... Jajaja! My web don't validate neither that I want it. :lol:

This is the aspect of my work, it's faster than a dropdown menu.

Image

Good code yours. I hope the work serves somebody. ;)
_______________________________________________________________________________

Website: nequaquam
osCSS shop in development: pugnae
nequaquam
Membre actif
 
Messages: 48
Inscription: Mer 08 Fév 2006, 12:40
Localisation: Barcelona

Messagepar nequaquam » Mer 19 Avr 2006, 02:07

I've been thinking a little bit more about this.

In includes/content/index_products.php add similar code to:

Code: Tout sélectionner
<div id="ordenar">

<?php echo ORDENAR_NOMBRE ; ?>
<a href="<?php echo tep_href_link(basename($PHP_SELF), 'cPath='. $cPath .'&sort=2a'); ?>"><?php echo ORDENAR_NOMBRE_ASC ; ?></a>
<a href="<?php echo tep_href_link(basename($PHP_SELF), 'cPath='. $cPath .'&sort=2d'); ?>"><?php echo ORDENAR_NOMBRE_DESC ; ?></a>&nbsp;&nbsp;

<?php echo ORDENAR_PRECIO ; ?>
<a href="<?php echo tep_href_link(basename($PHP_SELF), 'cPath='. $cPath .'&sort=4a'); ?>"><?php echo ORDENAR_PRECIO_ASC ; ?></a>
<a href="<?php echo tep_href_link(basename($PHP_SELF), 'cPath='. $cPath .'&sort=4d'); ?>"><?php echo ORDENAR_PRECIO_DESC ; ?></a>&nbsp;&nbsp;

<?php echo ORDENAR_STOCK ; ?>
<a href="<?php echo tep_href_link(basename($PHP_SELF), 'cPath='. $cPath .'&sort=3d'); ?>"><?php echo ORDENAR_STOCK_DESC ; ?></a>
<a href="<?php echo tep_href_link(basename($PHP_SELF), 'cPath='. $cPath .'&sort=3a'); ?>"><?php echo ORDENAR_STOCK_ASC ; ?></a>

</div>

In includes/boxes/search.php search:

Code: Tout sélectionner
<p><?php echo tep_draw_input_field('keywords','keywords', BOX_SEARCH_INPUT,'onfocus="this.value=''"') ;?></p>

and replace with:

Code: Tout sélectionner
<p><?php echo tep_draw_hidden_field('search_in_description','1') . tep_draw_input_field('keywords','keywords', BOX_SEARCH_INPUT,'onfocus="this.value=''"') ;?></p>

In includes/content/advanced_search_result.php add similar code to:

Code: Tout sélectionner
<div id="ordenar_buscar">

<?php echo ORDENAR_NOMBRE ; ?>
<a href="<?php echo tep_href_link(basename($PHP_SELF), 'search_in_description=1&keywords='. $_GET['keywords'] . '&categories_id=&inc_subcat=1' . '&pfrom=' . $_GET['pfrom'] . '&pto=' . $_GET['pto'] . '&sort=2a'); ?>"><?php echo ORDENAR_NOMBRE_ASC ; ?></a>
<a href="<?php echo tep_href_link(basename($PHP_SELF), 'search_in_description=1&keywords='. $_GET['keywords'] . '&categories_id=&inc_subcat=1' . '&pfrom=' . $_GET['pfrom'] . '&pto=' . $_GET['pto'] . '&sort=2d'); ?>"><?php echo ORDENAR_NOMBRE_DESC ; ?></a>&nbsp;&nbsp;

<?php echo ORDENAR_PRECIO ; ?>
<a href="<?php echo tep_href_link(basename($PHP_SELF), 'search_in_description=1&keywords='. $_GET['keywords'] . '&categories_id=&inc_subcat=1' . '&pfrom=' . $_GET['pfrom'] . '&pto=' . $_GET['pto'] . '&sort=4a'); ?>"><?php echo ORDENAR_PRECIO_ASC ; ?></a>
<a href="<?php echo tep_href_link(basename($PHP_SELF), 'search_in_description=1&keywords='. $_GET['keywords'] . '&categories_id=&inc_subcat=1' . '&pfrom=' . $_GET['pfrom'] . '&pto=' . $_GET['pto'] . '&sort=4d'); ?>"><?php echo ORDENAR_PRECIO_DESC ; ?></a>&nbsp;&nbsp;

<?php echo ORDENAR_STOCK ; ?>
<a href="<?php echo tep_href_link(basename($PHP_SELF), 'search_in_description=1&keywords='. $_GET['keywords'] . '&categories_id=&inc_subcat=1' . '&pfrom=' . $_GET['pfrom'] . '&pto=' . $_GET['pto'] . '&sort=3d'); ?>"><?php echo ORDENAR_STOCK_DESC ; ?></a>
<a href="<?php echo tep_href_link(basename($PHP_SELF), 'search_in_description=1&keywords='. $_GET['keywords'] . '&categories_id=&inc_subcat=1' . '&pfrom=' . $_GET['pfrom'] . '&pto=' . $_GET['pto'] . '&sort=3a'); ?>"><?php echo ORDENAR_STOCK_ASC ; ?></a>

</div>

And that's all...:P
_______________________________________________________________________________

Website: nequaquam
osCSS shop in development: pugnae
nequaquam
Membre actif
 
Messages: 48
Inscription: Mer 08 Fév 2006, 12:40
Localisation: Barcelona

Messagepar ZuckBin » Mer 21 Juin 2006, 17:38

Bonjour,

Je cherche à faire la meme chose, mais en classant mes produits par attributs.

Par exemple, avoir un affichage par modele puis par couleur, tout cela commander par une liste déroulante, à la manierere du filtre des fabriquants, sauf que ce serait mes attributs à la place.

J'essaye de mon coté, mais sans résultat.

Je suis parti sur l'histoire du manufacturer_filter.

J'ai dupliquer tout le code du manufacturer filter, et j'essaye de modifier en conséquances.

J'arrive à avoir ma liste d'attributs, mais lorsque l'on selectionne un attribut, il se passe rien.

Je ne sais pas ou aller chercher pour faire l'intéraction avec la liste déroulante.

Merci de votre aide.
Cordialement.
Dernière édition par ZuckBin le Mer 21 Juin 2006, 17:39, édité 1 fois.
_____________________
osCSS 1.0.1 + Full Rewriting + contribs...
ZuckBin
Membre actif
 
Messages: 18
Inscription: Sam 10 Sep 2005, 12:47

Messagepar webmaster-comptoir » Jeu 10 Juin 2010, 15:23

bonjour, je continue sur ce sujet assez ancien pour essayer de comprendre si au final ça marche ou pas ??

je ne suis pas certain de comprendre à travers ce thread en anglais et en code si finalement OSCSS intègre la possibilité de mettre la liste des produits selon l'ordre de prix

can you aider moi ?
webmaster-comptoir
Membre très actif
 
Messages: 241
Inscription: Jeu 19 Fév 2009, 16:28
Localisation: Marseille

Messagepar oscim » Jeu 10 Juin 2010, 15:31

La fonction tep_create_sort_heading de general.php ne sert elle pas à ca ?
Pour un web au normes du W3C, pour un web plus propre !

- Download osCSS Toutes versions
- stable osCSS 2.1.0 (help|info|new dev) Official help|wiki|Tuto for osCSS 2 | doc doxygen
- Utiliser le tracker pour suivre les évolutions et développements
- Inscrivez vos sites sur oscss pour présenter vos réalisations
Avatar de l’utilisateur
oscim
Site Admin
 
Messages: 1643
Inscription: Mar 25 Sep 2007, 11:33

Messagepar webmaster-comptoir » Jeu 10 Juin 2010, 15:33

merci je plonge jeter un zoeil
webmaster-comptoir
Membre très actif
 
Messages: 241
Inscription: Jeu 19 Fév 2009, 16:28
Localisation: Marseille

Messagepar webmaster-comptoir » Jeu 10 Juin 2010, 16:00

ok donc j'ai trouvé le fichier, et la ligne qui correspond :

Code: Tout sélectionner
// Return table heading with sorting capabilities
  function tep_create_sort_heading($sortby, $colnum, $heading) {
    global $PHP_SELF;

    $sort_prefix = '';
    $sort_suffix = '';

    if ($sortby) {
      $sort_prefix = '<a href="' . tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('page', 'info', 'sort')) . 'page=1&sort=' . $colnum . ($sortby == $colnum . 'a' ? 'd' : 'a')) . '" title="' . tep_output_string(TEXT_SORT_PRODUCTS . ($sortby == $colnum . 'd' || substr($sortby, 0, 1) != $colnum ? TEXT_ASCENDINGLY : TEXT_DESCENDINGLY) . TEXT_BY . $heading) . '" class="productListing-heading">' ;
      $sort_suffix = (substr($sortby, 0, 1) == $colnum ? (substr($sortby, 1, 1) == 'a' ? '+' : '-') : '') . '</a>';
    }

    return $sort_prefix . $heading . $sort_suffix;
  }

////

comment faire pour que ce soit le prix qui soit utilisé pour le "sort"

à la place de '" class="productListing-heading">' est ce que c'est "priceListing ???
webmaster-comptoir
Membre très actif
 
Messages: 241
Inscription: Jeu 19 Fév 2009, 16:28
Localisation: Marseille

Messagepar oscim » Jeu 10 Juin 2010, 16:32

Non,

Sais pas trop jamais utilisé. Mais de tête je dirais que tu repost une requete et la nouvelle sera bien trié. donc la page doit suporter l'envoi du get.

Et puis ca re renvoi un liens

Sinon, tu as aussi la solution jquery + tri de tableau.
Pour un web au normes du W3C, pour un web plus propre !

- Download osCSS Toutes versions
- stable osCSS 2.1.0 (help|info|new dev) Official help|wiki|Tuto for osCSS 2 | doc doxygen
- Utiliser le tracker pour suivre les évolutions et développements
- Inscrivez vos sites sur oscss pour présenter vos réalisations
Avatar de l’utilisateur
oscim
Site Admin
 
Messages: 1643
Inscription: Mar 25 Sep 2007, 11:33


Retourner vers Config

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 6 invités

cron