OsCommerce: custom category products module on frontpage

Возникла необходимость вывести на первую страницу магазина на движке OsCommerce содержимое определенной категории. Причем внешний вид должен быть таким же, как у New Products Modulе.

В contributions ничего подходящего не нашел, поэтому решил взять модуль new_products и немного модифицировать его. 

В результате получился модуль, позволяющий выводить содержимое определенной категории в виде модуля(а ля new products, specials, featured)

 

В директории

/includes/modules/

создаем файл custom_category_products.php следующего содержания: 

 

<?php
/*
show selected category
*/
?>
<!— show products from custom category //—>
<?php
  $custom_cat = 999; // define categories_id from categories_description table
  $info_box_contents = array();
  $info_box_contents[] = array('text' => sprintf('CUSTOM CATEGORY NAME', strftime('%B')));

  new contentBoxHeading($info_box_contents);

$custom_cat_products_query = tep_db_query("select distinct p.products_id, p.products_image, p.products_tax_class_id, if(s.status, s.specials_new_products_price, p.products_price) as products_price from " . TABLE_PRODUCTS . " p left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c, " . TABLE_CATEGORIES . " c where p.products_id = p2c.products_id and p2c.categories_id = '" . $custom_cat . "' and c.parent_id = '" . (int)$custom_cat_products_category_id . "' and p.products_status = '1'");

  $row = 0;
  $col = 0;
  $info_box_contents = array();
  while ($custom_cat_products = tep_db_fetch_array($custom_cat_products_query)) {
    $custom_cat_products['products_name'] = tep_get_products_name($custom_cat_products['products_id']);
    $info_box_contents[$row][$col] = array('align' => 'center',
                                           'params' => 'class="smallText" width="33%" valign="top"',
                                           'text' => '<a xhref="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $custom_cat_products['products_id']) . '">' . tep_image(DIR_WS_IMAGES . $custom_cat_products['products_image'], $custom_cat_products['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) . '</a><br><a xhref="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $custom_cat_products['products_id']) . '">' . $custom_cat_products['products_name'] . '</a><br>' . $currencies->display_price($custom_cat_products['products_price'], tep_get_tax_rate($custom_cat_products['products_tax_class_id'])));

    $col ++;
    if ($col > 2) {
      $col = 0;
      $row ++;
    }
  }

  new contentBox($info_box_contents);
?>
<!— show products from custom category eof //—>

 

Значение переменной $custom_cat замените на значение categories_id, 

sprintf('CUSTOM CATEGORY NAME' — замените на название категории.

В файле, в котором вы хотите разместить модуль(например, index.php), вставляем:

 

<!— custom category module —>
        <tr>
            <td><br><?php include(DIR_WS_MODULES . 'custom_category_products.php'); ?></td>
        </tr>
<!— custom category module eof —>

 

Готово.