Results 1 to 2 of 2

Need help converting 'Scrolling best sellers' to BTS

This is a discussion on Need help converting 'Scrolling best sellers' to BTS within the osCmax v2 Customization/Mods forums, part of the osCmax v2.0 Forums category; I've found a standard contrib on the osc site that provides a scrolling best sellers infobox with images. I have ...

      
  1. #1
    osCMax Testing Team typhus's Avatar
    Join Date
    Aug 2005
    Location
    Midlands, UK
    Posts
    28
    Rep Power
    0


    Default Need help converting 'Scrolling best sellers' to BTS

    I've found a standard contrib on the osc site that provides a scrolling best sellers infobox with images. I have had a go at trying to port it to bts format, but I'm not getting very far.

    I started by opening the standard /includes/boxes/best_sellers.php from osCMax and comparing the code. The parts I have merged/replaced seems to be working, but there are four 'array' lines missing from the bts layout, of which one includes the marquee to make the images scroll. I can't work out where the marquee line needs to go as the array lines aren't in a bts boxes file.

    Anyway, here is the code for the standard contrib I downloaded

    Code:
    <?php
    /*
      $Id: best_sellers.php,v 1.21 2003/06/09 22:07:52 hpdl Exp $
    
      osCommerce, Open Source E-Commerce Solutions
      http://www.oscommerce.com
    
      Copyright (c) 2003 osCommerce
    
      Released under the GNU General Public License
      
      Thorsten Wunsch
      2006-12-29 <br> between the pictures
      2006-12-29 html href double deleted
      2006-12-29 IMG Title added and tep_image error corrected
    */
    
      if (isset($current_category_id) && ($current_category_id > 0)) {
        $best_sellers_query = tep_db_query("select distinct p.products_id, p.products_image, pd.products_name from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c, " . TABLE_CATEGORIES . " c where p.products_status = '1' and p.products_ordered > 0 and p.products_id = pd.products_id and pd.language_id = '" . (int)$languages_id . "' and p.products_id = p2c.products_id and p2c.categories_id = c.categories_id and '" . (int)$current_category_id . "' in (c.categories_id, c.parent_id) order by p.products_ordered desc, pd.products_name limit " . MAX_DISPLAY_BESTSELLERS);
      } else {
        $best_sellers_query = tep_db_query("select distinct p.products_id, p.products_image, pd.products_name from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_status = '1' and p.products_ordered > 0 and p.products_id = pd.products_id and pd.language_id = '" . (int)$languages_id . "' order by p.products_ordered desc, pd.products_name limit " . MAX_DISPLAY_BESTSELLERS);
      }
    
      if (tep_db_num_rows($best_sellers_query) >= MIN_DISPLAY_BESTSELLERS) {
    ?>
    <!-- best_sellers_scroll //-->
              <tr>
                <td>
    <?php
        $info_box_contents = array();
        $info_box_contents[] = array('text' => BOX_HEADING_BESTSELLERS);
    
        new infoBoxHeading($info_box_contents, false, false);
    
        $rows = 0;
        $bestsellers_list = '<table border="0" width="100%" cellspacing="0" cellpadding="1">';
        while ($best_sellers = tep_db_fetch_array($best_sellers_query)) {
          $rows++;
          $bestsellers_list .= '<tr><td class="infoBoxContents" valign="top">'  . '</td><td class="infoBoxContents"  align="center"><br>' .tep_row_number_format($rows). '&nbsp;-&nbsp;<a align="center" href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $best_sellers['products_id']) . '" alt="' . $best_sellers['products_name'] . '" title="' . $best_sellers['products_name'] . '">' . $best_sellers['products_name'] . '<br>' . tep_image(DIR_WS_IMAGES . $best_sellers['products_image'], $best_sellers['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) . '</a></td></tr>';
        }
        $bestsellers_list .= '</table>';
    
        $info_box_contents = array();
        $info_box_contents[] = array('text' => '<MARQUEE behavior= "scroll" align= "center" direction= "up" height="160" scrollamount= "2" scrolldelay= "70" onmouseover=\'this.stop()\' onmouseout=\'this.start()\'>'.$bestsellers_list.'</MARQUEE>');
    
        new infoBox($info_box_contents);
    ?>
                </td>
              </tr>
    <!-- best_sellers_scroll_eof //-->
    <?php
      }
    ?>
    And this is what I've got to so far...

    Code:
    <?php
    /*
    $Id: best_sellers.php 3 2006-05-27 04:59:07Z user $
    
      osCMax Power E-Commerce
      http://oscdox.com
    
      Copyright 2006 osCMax
    
      Released under the GNU General Public License
    */
    
    // Most of this file is changed or moved to BTS - Basic Template System - format.
    //  if (isset($HTTP_GET_VARS['products_id'])) {
      if (isset($current_category_id) && ($current_category_id > 0)) {
        $best_sellers_query = tep_db_query("select distinct p.products_id, p.products_image, pd.products_name from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c, " . TABLE_CATEGORIES . " c where p.products_status = '1' and p.products_ordered > 0 and p.products_id = pd.products_id and pd.language_id = '" . (int)$languages_id . "' and p.products_id = p2c.products_id and p2c.categories_id = c.categories_id and '" . (int)$current_category_id . "' in (c.categories_id, c.parent_id) order by p.products_ordered desc, pd.products_name limit " . MAX_DISPLAY_BESTSELLERS);
      } else {
        $best_sellers_query = tep_db_query("select distinct p.products_id, p.products_image, pd.products_name from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_status = '1' and p.products_ordered > 0 and p.products_id = pd.products_id and pd.language_id = '" . (int)$languages_id . "' order by p.products_ordered desc, pd.products_name limit " . MAX_DISPLAY_BESTSELLERS);
      }
    
      if (tep_db_num_rows($best_sellers_query) >= MIN_DISPLAY_BESTSELLERS) {
    ?>
    <!-- best_sellers_scroll //-->
    <?php
    
      $boxHeading = BOX_HEADING_BESTSELLERS;
      $corner_left = 'square';
      $corner_right = 'square';
      $box_base_name = 'best_sellers_scroll'; // for easy unique box template setup (added BTSv1.2)
      $box_id = $box_base_name . 'Box';  // for CSS styling paulm (editted BTSv1.2)
    
      $rows = 0;
      $boxContent = '<table border="0" width="100%" cellspacing="0" cellpadding="1">';
      while ($best_sellers = tep_db_fetch_array($best_sellers_query)) {
        $rows++;
        $boxContent .= '<tr><td class="infoBoxContentsLeft" valign="top">'  . '</td><td class="infoBoxContentsLeft"  align="center"><br>' .tep_row_number_format($rows). '&nbsp;-&nbsp;<a align="center" href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $best_sellers['products_id']) . '" alt="' . $best_sellers['products_name'] . '" title="' . $best_sellers['products_name'] . '">' . $best_sellers['products_name'] . '<br>' . tep_image(DIR_WS_IMAGES . $best_sellers['products_image'], $best_sellers['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) . '</a></td></tr>';
      }
      $boxContent .= '</table>';
    
    include (bts_select('boxes', $box_base_name)); // BTS 1.5
    
      }
    //}
    ?>
    <!-- best_sellers eof //-->
    I've made a copy of box.tpl.php in the templates folder and that is working, i just can't work out where to put the marquee to get the images to scroll (they are just in a long list atm, which has tripled the length of my page).

    Thanks to anyone who can help.

    Regards, J.

  2. #2
    osCMax Testing Team typhus's Avatar
    Join Date
    Aug 2005
    Location
    Midlands, UK
    Posts
    28
    Rep Power
    0


    Default Re: Need help converting 'Scrolling best sellers' to BTS

    Looks like I should have persevered a bit longer, or in this case taken a break.

    I'd already made a copy of /catalog/templates/mytemplate/boxes/best_sellers.tpl.php but I've only just thought of putting the marquee tag in there, and guess what, it works.

    For anyone who happens to stumble across this here's the code I ended up with..

    /catalog/includes/boxes/best_sellers_scroll.php
    Code:
    <?php
    /*
    $Id: best_sellers.php 3 2006-05-27 04:59:07Z user $
    
      osCMax Power E-Commerce
      http://oscdox.com
    
      Copyright 2006 osCMax
    
      Released under the GNU General Public License
    */
    
    // Most of this file is changed or moved to BTS - Basic Template System - format.
    //  if (isset($HTTP_GET_VARS['products_id'])) {
      if (isset($current_category_id) && ($current_category_id > 0)) {
        $best_sellers_query = tep_db_query("select distinct p.products_id, p.products_image, pd.products_name from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c, " . TABLE_CATEGORIES . " c where p.products_status = '1' and p.products_ordered > 0 and p.products_id = pd.products_id and pd.language_id = '" . (int)$languages_id . "' and p.products_id = p2c.products_id and p2c.categories_id = c.categories_id and '" . (int)$current_category_id . "' in (c.categories_id, c.parent_id) order by p.products_ordered desc, pd.products_name limit " . MAX_DISPLAY_BESTSELLERS);
      } else {
        $best_sellers_query = tep_db_query("select distinct p.products_id, p.products_image, pd.products_name from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_status = '1' and p.products_ordered > 0 and p.products_id = pd.products_id and pd.language_id = '" . (int)$languages_id . "' order by p.products_ordered desc, pd.products_name limit " . MAX_DISPLAY_BESTSELLERS);
      }
    
      if (tep_db_num_rows($best_sellers_query) >= MIN_DISPLAY_BESTSELLERS) {
    ?>
    <!-- best_sellers_scroll //-->
    <?php
    
      $boxHeading = BOX_HEADING_BESTSELLERS;
      $corner_left = 'square';
      $corner_right = 'square';
      $box_base_name = 'best_sellers_scroll'; // for easy unique box template setup (added BTSv1.2)
      $box_id = $box_base_name . 'Box';  // for CSS styling paulm (editted BTSv1.2)
    
      $rows = 0;
      $boxContent = '<table border="0" width="100%" cellspacing="0" cellpadding="1">';
      while ($best_sellers = tep_db_fetch_array($best_sellers_query)) {
        $rows++;
        $boxContent .= '<tr><td class="infoBoxContentsLeft" valign="top">'  . '</td><td class="infoBoxContentsLeft"  align="center"><br>' .tep_row_number_format($rows). '&nbsp;-&nbsp;<a align="center" href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $best_sellers['products_id']) . '" alt="' . $best_sellers['products_name'] . '" title="' . $best_sellers['products_name'] . '">' . $best_sellers['products_name'] . '<br>' . tep_image(DIR_WS_IMAGES . $best_sellers['products_image'], $best_sellers['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) . '</a></td></tr>';
      }
      $boxContent .= '</table>';
    
    include (bts_select('boxes', $box_base_name)); // BTS 1.5
    
      }
    //}
    ?>
    <!-- best_sellers eof //-->
    /catalog/templates/mytemplate/boxes/best_sellers_sroll.tpl.php
    Code:
    <?php if (!defined ('DIR_FS_CATALOG')) die ("Access denied."); ?>
    
    <?php /* infobox template  */ ?>
    
              <tr>
    
                <td>
    
                  <table border="0" width="100%" cellspacing="0" cellpadding="0">
    
                    <tr>
    
                      <td height="20" class="infoBoxHeadingLeft"><img src="images/infobox/<?php switch ($corner_left) { case 'square': echo 'corner_right_left.gif';    break; case 'rounded': echo 'corner_left.gif'; break;} ?>" border="0" alt="" width="11" height="14"></td>
    
                      <td width="100%" height="20" class="infoBoxHeadingLeft"><?php echo $boxHeading; ?></td>
    
                      <td height="20" class="infoBoxHeadingLeft" nowrap><?php echo $boxLink; ?><img src="images/<?php switch ($corner_right) { case 'square': echo 'pixel_trans.gif';    break; case 'rounded': echo 'infobox/corner_right.gif'; break;} ?>" border="0" alt="" width="11" height="14"></td>
    
                    </tr>
    
                  </table>
    
                  <table border="0" width="100%" cellspacing="0" cellpadding="1" class="infoBoxLeft">
    
                  <tr>
    
                    <td><table border="0" width="100%" cellspacing="0" cellpadding="3" class="infoBoxContentsLeft">
    
                  <tr>
    
                    <td><img src="images/pixel_trans.gif" border="0" alt="" width="100%" height="1"></td>
    
                  </tr>
    
                  <tr>
    
                    <td class="boxTextLeft"<?php echo $boxContent_attributes; ?>><MARQUEE behavior= "scroll" align= "center" direction= "up" height="160" scrollamount= "2" scrolldelay= "70" onmouseover="this.stop()" onmouseout="this.start()"><?php echo $boxContent; ?></MARQUEE></td>
    
                  </tr>
    
                  <tr>
    
                    <td><img src="images/pixel_trans.gif" border="0" alt="" width="100%" height="1"></td>
    
                  </tr>
    
                </table>
    
                </td>
    
                  </tr>
    
                </table>
    
                </td>
    
              </tr>
    And then add the infobox using 'Infobox Admin' in the usual manner.

    Hope this helps someone, J.

Similar Threads

  1. Best Sellers on Vertical Scroll
    By michael_s in forum New osCommerce Contributions
    Replies: 0
    Last Post: 05-14-2008, 12:22 PM
  2. Converting contribs to BTS templating system
    By aaanativearts in forum osCmax v2 Installation issues
    Replies: 1
    Last Post: 08-20-2007, 11:59 PM
  3. How to add sellers?
    By astallings in forum osCmax v2 Customization/Mods
    Replies: 1
    Last Post: 08-13-2007, 02:28 AM
  4. Converting Affiliate Infobox to BTS
    By Stu in forum osCmax v1.7 Discussion
    Replies: 4
    Last Post: 11-25-2003, 07:15 AM

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •