Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Combine 2 great contributions into 1


dr_lucas

Recommended Posts

Posted

Hi,

 

I have the following categories mod installed on my site (http://www.skpiercing.com). As you can see, this mod create a seperating line, arrows and bullets in the categories box.

I would like to combine it with the second contribution listed below it. This contribution keep the categories tree expanded at all times.

Unfortunately my PHP knowledge is very limited and I couldn't find the correct parts to move and/or combine between the 2 contributions, so I will appreciate any help in creating the correct combined code for a new categories.php and I am sure many will like it as a new contribution.

I truly appreciate any help.

 

First Mod Code, full categories.php: (seperating line, arrows and bullets in the categories box.)

<?php

/*

  $Id: categories.php,v 1.20 2002/06/05 19:18:22 dgw_ Exp $

 

  osCommerce, Open Source E-Commerce Solutions

  http://www.oscommerce.com

 

  Copyright © 2002 osCommerce

 

  Released under the GNU General Public License

*/

 

  function tep_show_category($counter) {

    global $foo, $categories_string, $id, $aa;

 

    for ($a=0; $a<$foo[$counter]['level']; $a++) {

//      $categories_string .= "  ";

//            $categories_string .= "  ";

    }

   

//kreseczki start

  if ($foo[$counter]['level'] == 0)

{

  if ($aa == 1)

  {

// odchaszowac ?eby dostaז kreseczkך

//  $categories_string .= "<hr noshade size=1>";

  $categories_string .= '<img src="images/pixel_trans.gif" border="0" alt="" width="100%" height="2"><br><img src="images/pixel_silver.gif" border="0" alt="" width="100%" height="1"><br><img src="images/pixel_trans.gif" border="0" alt="" width="100%" height="2">';

    }

  else

  {$aa=1;}

 

}

//kreseczki koniec

 

 

// display category name

    // $categories_string .= $foo[$counter]['name'];

//  Eger alt kategorileri veya Asama0 olanalara varsa OK ekler

    if (tep_has_category_subcategories($counter) || $foo[$counter]['level'] == 0) {

        if ( ($id) && (in_array($counter, $id)) ) {

        // display category name

        $categories_string .= '<table class="categ"><tr><td class="categ">' . tep_image(DIR_WS_IMAGES . 'categories/arrow_down.gif', '', '9', '9') . " </td>";

        } else {

        // display category name

        $categories_string .= '<table class="categ"><tr><td class="categ">' .tep_image(DIR_WS_IMAGES . 'categories/arrow_right.gif', '', '9', '9') . " </td>";

        }

    } else {

    $categories_string .= '<table class="categ"><tr><td class="categ">  ' .tep_image(DIR_WS_IMAGES . 'categories/arrow_bullet.gif', 'nokta', '9', '9') . "</td>";

    }

   

 

    $categories_string .= '<td class="categ"><a href="';

 

    if ($foo[$counter]['parent'] == 0) {

      $cPath_new = 'cPath=' . $counter;

    } else {

      $cPath_new = 'cPath=' . $foo[$counter]['path'];

    }

 

    $categories_string .= tep_href_link(FILENAME_DEFAULT, $cPath_new);

    $categories_string .= '">';

 

    if ( ($id) && (in_array($counter, $id)) ) {

      $categories_string .= '<b>';

    }

 

    //nazwa kategorii

    $categories_string .= $foo[$counter]['name'];

 

 

 

    if ( ($id) && (in_array($counter, $id)) ) {

      $categories_string .= '</b>';

    }

 

    if (tep_has_category_subcategories($counter)) {

      $categories_string .= ' ';

    }

 

    $categories_string .= '</a>';

 

    if (SHOW_COUNTS == 'true') {

      $products_in_category = tep_count_products_in_category($counter);

      if ($products_in_category > 0) {

        $categories_string .= ' (' . $products_in_category . ')';

      }

    }

 

  // $categories_string .= '<br>';

  $categories_string .= '</td></tr></table>';

 

    if ($foo[$counter]['next_id']) {

      tep_show_category($foo[$counter]['next_id']);

    }

  }

?>

<!-- categories //-->

          <tr>

            <td>

<?php

  $info_box_contents = array();

  $info_box_contents[] = array('align' => 'left',

                              'text'  => BOX_HEADING_CATEGORIES

                              );

  new infoBoxHeading($info_box_contents, false, false);

 

  $categories_string = '';

 

  $categories_query = tep_db_query("select c.categories_id, cd.categories_name, c.parent_id from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where c.parent_id = '0' and c.categories_id = cd.categories_id and cd.language_id='" . $languages_id ."' order by sort_order, cd.categories_name");

  while ($categories = tep_db_fetch_array($categories_query))  {

    $foo[$categories['categories_id']] = array(

                                        'name' => $categories['categories_name'],

                                        'parent' => $categories['parent_id'],

                                        'level' => 0,

                                        'path' => $categories['categories_id'],

                                        'next_id' => false

                                      );

 

    if (isset($prev_id)) {

      $foo[$prev_id]['next_id'] = $categories['categories_id'];

    }

 

    $prev_id = $categories['categories_id'];

 

    if (!isset($first_element)) {

      $first_element = $categories['categories_id'];

    }

  }

 

  //------------------------

  if ($cPath) {

    $id = split('_', $cPath);

    reset($id);

    while (list($key, $value) = each($id)) {

      $new_path .= $value;

      unset($prev_id);

      unset($first_id);

      $categories_query = tep_db_query("select c.categories_id, cd.categories_name, c.parent_id from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where c.parent_id = '" . $value . "' and c.categories_id = cd.categories_id and cd.language_id='" . $languages_id ."' order by sort_order, cd.categories_name");

      $category_check = tep_db_num_rows($categories_query);

      while ($row = tep_db_fetch_array($categories_query)) {

        $foo[$row['categories_id']] = array(

                                            'name' => $row['categories_name'],

                                            'parent' => $row['parent_id'],

                                            'level' => $key+1,

                                            'path' => $new_path . '_' . $row['categories_id'],

                                            'next_id' => false

                                          );

 

        if (isset($prev_id)) {

          $foo[$prev_id]['next_id'] = $row['categories_id'];

        }

 

        $prev_id = $row['categories_id'];

 

        if (!isset($first_id)) {

          $first_id = $row['categories_id'];

        }

 

        $last_id = $row['categories_id'];

      }

      if ($category_check != 0) {

        $foo[$last_id]['next_id'] = $foo[$value]['next_id'];

        $foo[$value]['next_id'] = $first_id;

      }

 

            $new_path .= '_';

    }

  }

 

  tep_show_category($first_element);

 

  $info_box_contents = array();

  $info_box_contents[] = array('align' => 'left',

                              'text'  => $categories_string

                              );

  new infoBox($info_box_contents);

?>

            </td>

          </tr>

<!-- categories_eof //-->

 

 

Second Mod Code, full categories.php: (always expanded categories & subcategories):

<?php

/*

  $Id: all_categories.php,v 1.6 2002/04/22 20:34:00 clescuyer Exp $

 

  osCommerce, Open Source E-Commerce Solutions

  http://www.oscommerce.com/

 

  Copyright © 2002 Goיlette

  Christian Lescuyer <[email protected]>

  http://www.goelette.net/

  http://oscommerce.goelette.net/

 

  History: 1.1 Creation

          1.2 Modified query for compatibility with older databases

          1.3 Query in 1.2 was wrong for older databases

          1.4 SHOW_COUNTS test corrected

          1.5 Added COMPACT_CATEGORIES option to display all sub-categories on one line

          1.6 Removed COMPACT_CATEGORIES option

              Corrected the cpath generation

              Bold categories "path" to selected category, an idea from Peter Frsicht

      1.7 Cleaned the way in which the categories are displayed - bold for the path,

        ">" to indicate the current category, removed link to current category,

        only indent subcategories (top level are flush left)

 

  Released under the GNU General Public License

 

*/

 

// Keep out parts category

  $excluded_parts_category_id = 28;

 

 

// Preorder tree traversal

  function preorder($cid, $level, $foo, $cpath) {

    global $categories_string, $HTTP_GET_VARS;

 

    if ($cid != 0) {

// 1.7 Get the current path info

  $category_path = explode('_',$HTTP_GET_VARS['cPath']);

  $in_path = in_array($cid, $category_path);

  $this_category = array_pop($category_path);

 

      for ($i=0; $i<$level; $i++)

  // 1.7 only indent subcategories (top level are flush left)

    if ($i>0) {

    $categories_string .=  '     ';

    }

    // 1.7 indicate the current category

    if ($this_category == $cid) {

    $categories_string .=  '> ';

    }

   

    // 1.7  don't link the current category 

    if ($this_category != $cid) {

    $categories_string .= '<a href="' . tep_href_link(FILENAME_DEFAULT, 'cPath=' . $cpath . $cid) . '">';

    }

// 1.6 Are we on the "path" to selected category? If yes, use <b>

    if ($in_path) {

    $categories_string .=  '<b>';

    }

    $categories_string .=  $foo[$cid]['name'];

    if ($in_path)

    $categories_string .=  '</b>';

    // 1.7  don't link the current category

    if ($this_category != $cid) {

    $categories_string .= '</a>';

    }

  // 1.4 SHOW_COUNTS is 'true' or 'false', not true or false

    if (SHOW_COUNTS == 'true') {

      $products_in_category = tep_count_products_in_category($cid);

      if ($products_in_category > 0) {

      $categories_string .= ' (' . $products_in_category . ')';

      }

    }

    $categories_string .= '<br>' ."\n";

    }

 

// Traverse category tree

  foreach ($foo as $key => $value) {

    if ($foo[$key]['parent'] == $cid) {

//        print "$key, $level, $cid, $cpath<br>";

    preorder($key, $level+1, $foo, ($level != 0 ? $cpath . $cid . '_' : ''));

    }

  }

  }

 

?>

<!-- all_categories //-->

          <tr>

            <td>

<?php

//////////

// Display box heading

//////////

  $info_box_contents = array();

  $info_box_contents[] = array('align' => 'left', 'text'  => BOX_HEADING_CATEGORIES);

  new infoBoxHeading($info_box_contents, true, false);

 

 

//////////

// Get categories list

//////////

// 1.2 Test for presence of status field for compatibility with older versions

  $status = tep_db_num_rows(tep_db_query('describe categories status'));

 

  $query = "select c.categories_id, cd.categories_name, c.parent_id

            from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd

            where c.categories_id = cd.categories_id";

     

// 1.3 Can't have 'where' in an if statement!

  if ($status >0)

    $query.= " and c.status = '1'";

  $query.= " and cd.language_id='" . $languages_id ."'

            order by sort_order, cd.categories_name";

 

  $categories_query = tep_db_query($query);

 

// Stuff in an array

  while ($categories = tep_db_fetch_array($categories_query))  {

    $foo[$categories['categories_id']] = array('name' => $categories['categories_name'], 'parent' => $categories['parent_id']);

  }

 

// Initiate tree traverse

  $categories_string = '';

  preorder(0, 0, $foo, '');

 

//////////

// Display box contents

//////////

  $info_box_contents = array();

  $info_box_contents[] = array('align' => 'left', 'text'  => $categories_string);

  new infoBox($info_box_contents);

?>

            </td>

          </tr>

<!-- all_categories_eof //-->

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...