hi folks,

this is a little howto add new properties to general products
(like guarantee time, color, oem-number, compatible models, whatsoever)
  1. think
    decide which new properties you want to add to your products
    (in this example we take guarantee-time (in months) and color)
    .
  2. db manipulation
    open the table "products" in your zencart-database and insert new rows at the end of the table called "products_guarantee" and "products_color"
    ALTER TABLE `zencart_products` ADD `products_guarantee` INT NOT NULL , ADD `products_color` VARCHAR( 32 ) NOT NULL;
    .
  3. edit 'collect_info.php' (in /admin/includes/modules/product/)
    1. at the very beginning there is the variable $parameters set. add your row-names to the end:
      'products_guarantee' => '0', 'products_color' => '' );
      .
    2. just below there is the db-query set [$product = $db->Execute("...]
      add your rows with a 'p.' in front (before the "from ..." part)
      select ......., p.products_guarantee, p.products_color from ....
      .
    3. now you can add the input fields in the product-mask (lets say somewhere around line 450 or so):
      <tr>
      <td class="main">Guarantee Time (in months)</td>
      <td class="main"><?php echo zen_draw_separator('pixel_trans.gif', '24', '15') . '&nbsp;' . zen_draw_input_field('products_guarantee', $pInfo->products_guarantee, zen_set_field_length(TABLE_PRODUCTS, 'products_guarantee')); ?></td>
      </tr><tr>
      <td class="main">Color</td>
      <td class="main"><?php echo zen_draw_separator('pixel_trans.gif', '24', '15') . '&nbsp;' . zen_draw_input_field('products_color', $pInfo->products_color, zen_set_field_length(TABLE_PRODUCTS, 'products_color')); ?></td>
      </tr>
      .
  4. edit 'preview_info.php' (in /admin/includes/modules/product/)
    somewhere around line 10 is the variable $product set. like in step 3.2 add the new rows with a 'p.' in front just before the 'from'
    select ......., p.products_guarantee, p.products_color from ....
    .
  5. finally, edit 'update_product.php' (in /admin/includes/modules/)
    around line 20 is the $sql_data_array set. add to the last lines before ');' the new rownames.
    $sql_data_array = .......... 'products_guarantee' => zen_db_prepare_input($_POST['products_guarantee']), 'products_color' => zen_db_prepare_input($_POST['products_color']) );
    .
  6. Setup All Done!
    .

    .
    .
    .
    Of course, now we want to display our cool new properties .
    .
  7. edit 'main_template_vars.php' (in /includes/modules/pages/product_info/)
    around line 46 you find the variable $sql set. like in step 3.2 add the new rows with a 'p.' in front just before the 'from'
    select ......., p.products_guarantee, p.products_color from ....
    .
  8. last step: display the new infos
    edit 'tpl_product_info_display.php'
    (in /includes/templates/template_default/templates/)
    now, wherever you want, you can add to the html:
    <?php echo $product_info->fields['products_guarantee']; ?> and <?php echo $product_info->fields['products_color']; ?>

enjoy!


ps: now i'm feeling really ############ up : P




written by chris at linuxuser.at