Avatar billede agm Nybegynder
27. marts 2009 - 10:29

Produkt side i oscomm.. ændring til visning..

Jeg har installeret contribution - product listing in columns 2.2.1

Quantity, produkt attributter og "køb" knap blive listet under  hinanden i produkt listen.. jeg vil gerne have det på linje.. Hvordan?
Og hvordan får jeg en ramme om produktet(qty, attributter, køb knap og billedet) så der ikke er tvivl om hvad der hører sammen?

Og hvorfor er min "køb" knap væk hvis man klikker sig videre ind under selve produktet(den side med beskrivelses tekst mv.)

Koden:
//if number of column per row is 1, include the original product_listing.php
if (PRODUCT_LIST_NUMCOL == 1) {
    include(dirname(__FILE__).'/product_listing.php');

} else {
    //display the version 2.2.1 product_listing_col.php code
   
//bof product listing with attributes
$list_box_contents = array();
$list_box_contents[] = array('params' => 'class="productListing-heading"');
$cur_row = sizeof($list_box_contents) - 1;

// three variables that determine a certain output
$use_tr_for_buy_now_button = false;
$add_multiple = false;
$use_of_attributes = false;

for ($col=0, $n=sizeof($column_list); $col<$n; $col++) {
    switch ($column_list[$col]) {
        case 'PRODUCT_LIST_MULTIPLE':
            $add_multiple = true;
      $use_of_attributes = true;
            echo '<form name="buy_now_" method="post" action="' . tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('action', 'sort')) . 'action=add_multiple', 'NONSSL') . '">';
            break;
        case 'PRODUCT_LIST_BUY_NOW_MULTIPLE':
      $use_of_attributes = true;
            break;
    case 'PRODUCT_LIST_BUY_NOW':
      $use_tr_for_buy_now_button = true;
      break;
    }
}
//eof product listing with attributes
?>
<?php
$listing_split = new splitPageResults($listing_sql, MAX_DISPLAY_SEARCH_RESULTS, 'p.products_id');

if ( ($listing_split->number_of_rows > 0) && ( (PREV_NEXT_BAR_LOCATION == '1') || (PREV_NEXT_BAR_LOCATION == '3') ) ) {
?>
<table border="0" width="100%" cellspacing="0" cellpadding="2">
<tr>  <td class="smallText"><?php echo $listing_split->display_count(TEXT_DISPLAY_NUMBER_OF_PRODUCTS); ?></td>
  <td class="smallText" align="right"><?php echo TEXT_RESULT_PAGE . ' ' . $listing_split->display_links(MAX_DISPLAY_PAGE_LINKS, tep_get_all_get_params(array('page', 'info', 'x', 'y'))); ?> </td>
</tr>
</table>
<?php
}

$list_box_contents = array();
global $cart;

if ($listing_split->number_of_rows > 0) {
   
    //BOF version 2.2 modification
    if (PRODUCT_LIST_NUMCOL <= 0) {
        $colnum = 3;
        $tdsize = floor(100/3);
    } else {
        $colnum = PRODUCT_LIST_NUMCOL;
        $tdsize = floor(100/PRODUCT_LIST_NUMCOL);
    }
    //EOF version 2.2 modification
   
    $row = 0;
    $column = 0;
    $listing_query = tep_db_query($listing_split->sql_query);
// BOF v 2.2.1
  $no_of_listings = tep_db_num_rows($listing_query);
 
  while ($_listing = tep_db_fetch_array($listing_query)) {
    $_listing['total'] = ''; // for number of attributes
    $listing[] = $_listing;
    $list_of_prdct_ids[] = $_listing['products_id'];
  }

// lets save all the separate count queries that check if a product has attributes
// and do it in one (if needed)
  if ($use_of_attributes == true) {
    $products_attributes_count_query = tep_db_query("select count(*) as total, patrib.products_id from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_ATTRIBUTES . " patrib where patrib.products_id in (" . implode(',', $list_of_prdct_ids) . ") and patrib.options_id = popt.products_options_id and popt.language_id = '" . $languages_id . "' group by products_id");
        while ($_products_attributes_count = tep_db_fetch_array($products_attributes_count_query)) {
      $products_attributes_count[] = array('products_id' => $_products_attributes_count['products_id'], 'total' => $_products_attributes_count['total']);
    }
    $no_of_products_with_attributes = count($products_attributes_count);
    for ($x = 0; $x < $no_of_listings; $x++) {
      if (!empty($products_attributes_count)) {
        for ($i = 0; $i < $no_of_products_with_attributes; $i++) {
          if ($listing[$x]['products_id'] == $products_attributes_count[$i]['products_id'] ) {
            $listing[$x]['total'] = $products_attributes_count[$i]['total'];
          }
        }
      }
    } // end for ($x = 0; $x < $no_of_listings; $x++)
  } // end ($use_of_attributes == true)

// an extra query is used for all the specials because joining the table specials in a query
// often results in a slow query if you haven't added additional indexes to that table
// see http://forums.oscommerce.com/index.php?s=&showtopic=119077&view=findpost&p=1118789 and further

  $specials_query = tep_db_query("select products_id, specials_new_products_price from " . TABLE_SPECIALS . " where products_id in (" . implode(',', $list_of_prdct_ids) . ") and status = '1'");
  while ($specials_array = tep_db_fetch_array($specials_query)) {
    $new_s_prices[] = array ('products_id' => $specials_array['products_id'], 'products_price' => '', 'specials_new_products_price' => $specials_array['specials_new_products_price']);
  }

// add the correct specials_new_products_price and replace final_price
  for ($x = 0; $x < $no_of_listings; $x++) {
    if (!empty($new_s_prices)) {
      for ($i = 0; $i < count($new_s_prices); $i++) {
        if ($listing[$x]['products_id'] == $new_s_prices[$i]['products_id'] ) {
          $listing[$x]['specials_new_products_price'] = $new_s_prices[$i]['specials_new_products_price'];
        }
      }
    } // end if (!empty($new_s_prices)
  } // end for ($x = 0; $x < $no_of_listings; $x++)

  $counter = 0;
  $class_for_buy_now = 'class="productListing-data" width="' . $tdsize . '%"';
  for ($x = 0; $x < $no_of_listings; $x++) {

  if ($x % PRODUCT_LIST_NUMCOL == 0) { // start of new row
    if (($counter+1)/2 == floor(($counter+1)/2)) { // start with the background color productListing-odd
// if ($counter/2 == floor($counter/2)) { // if you want to start with the background color productListing-even use this
      $list_box_contents[$row] = array('params' => 'class="productListing-even"');
      $class_for_buy_now_row = 'class="productListing-even"';
    } else {
      $list_box_contents[$row] = array('params' => 'class="productListing-odd"');
      $class_for_buy_now_row = 'class="productListing-odd"';
    }
  } // end if ($x % PRODUCT_LIST_NUMCOL == 0)

        $product_contents = array();
        for ($col=0, $n=sizeof($column_list); $col<$n; $col++) {
            $lc_align = '';

            switch ($column_list[$col]) {
                case 'PRODUCT_LIST_MODEL':
                $lc_align = '';
                $lc_text = ' ' . $listing[$x]['products_model'] . ' ';
                break;
                case 'PRODUCT_LIST_NAME':
                $lc_align = '';
                if (isset($_GET['manufacturers_id'])) {
                    $lc_text = '<a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'manufacturers_id=' . (int)$_GET['manufacturers_id'] . '&products_id=' . $listing[$x]['products_id']) . '">' . $listing[$x]['products_name'] . '</a>';
                } else {
                    $lc_text = ' <a href="' . tep_href_link(FILENAME_PRODUCT_INFO, ($cPath ? 'cPath=' . $cPath . '&' : '') . 'products_id=' . $listing[$x]['products_id']) . '">' . $listing[$x]['products_name'] . '</a> ';
                }
                break;
                case 'PRODUCT_LIST_MANUFACTURER':
                $lc_align = '';
                $lc_text = ' <a href="' . tep_href_link(FILENAME_DEFAULT, 'manufacturers_id=' . $listing[$x]['manufacturers_id']) . '">' . $listing[$x]['manufacturers_name'] . '</a> ';
                break;
                case 'PRODUCT_LIST_PRICE':
                $lc_align = 'right';
                if (tep_not_null($listing[$x]['specials_new_products_price'])) {
                    $lc_text = ' <s>' .  $currencies->display_price($listing[$x]['products_price'], tep_get_tax_rate($listing[$x]['products_tax_class_id'])) . '</s>  <span class="productSpecialPrice">' . $currencies->display_price($listing[$x]['specials_new_products_price'], tep_get_tax_rate($listing[$x]['products_tax_class_id'])) . '</span> ';
                } else {
                    $lc_text = ' ' . $currencies->display_price($listing[$x]['products_price'], tep_get_tax_rate($listing[$x]['products_tax_class_id'])) . ' ';
                }
                break;
                case 'PRODUCT_LIST_QUANTITY':
                $lc_align = 'right';
                $lc_text = ' ' . $listing[$x]['products_quantity'] . ' ';
                break;
                case 'PRODUCT_LIST_WEIGHT':
                $lc_align = 'right';
                $lc_text = ' ' . $listing[$x]['products_weight'] . ' ';
                break;
                case 'PRODUCT_LIST_IMAGE':
                $lc_align = 'center';
                if (isset($_GET['manufacturers_id'])) {
                    $lc_text = '<a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'manufacturers_id=' . (int)$_GET['manufacturers_id'] . '&products_id=' . $listing[$x]['products_id']) . '">' . tep_image(DIR_WS_IMAGES . $listing[$x]['products_image'], $listing[$x]['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) . '</a>';
                } else {
                    $lc_text = ' <a href="' . tep_href_link(FILENAME_PRODUCT_INFO, ($cPath ? 'cPath=' . $cPath . '&' : '') . 'products_id=' . $listing[$x]['products_id']) . '">' . tep_image(DIR_WS_IMAGES . $listing[$x]['products_image'], $listing[$x]['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) . '</a> ';
                }
                break;
                //bof product listing with attributes
                case 'PRODUCT_LIST_BUY_NOW':
        // this button will be in a separate table row for better aligning
          $buy_now_button_array[] = '<a href="' . tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('action','sort')) . 'action=buy_now&products_id=' . $listing[$x]['products_id']) . '">' . tep_image_button('button_buy_now.gif', IMAGE_BUTTON_BUY_NOW, 'style="padding-top: 5px;"') . '</a> ';
          $lc_text = ''; // otherwise the previous $lc_text will be outputted again
                break;
                // Begin Buy Now button with attributes and quantity mod
                // Begin Add Multiple  with attributes Contrib
                case 'PRODUCT_LIST_MULTIPLE':
                $lc_align = 'right';
                $lc_valign = 'top';
                $lc_text = (TABLE_HEADING_MULTIPLE . tep_draw_input_field('Qty_ProdId_' . $listing[$x]['products_id'], '0', 'size="4"'));
        if ((int)$listing[$x]['total'] > 0) {
                    $lc_text .= '<table border="0" cellpadding="0" cellspacing"0">';
                    $products_options_name_query = tep_db_query("select distinct popt.products_options_id, popt.products_options_name from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_ATTRIBUTES . " patrib where patrib.products_id='" . $listing[$x]['products_id'] . "' and patrib.options_id = popt.products_options_id and popt.language_id = '" . $languages_id . "'");
                    while ($products_options_name = tep_db_fetch_array($products_options_name_query)) {
                        $selected_attribute = false;
                        $products_options_array = array();
                        $lc_text .= '<tr><td class="main">' . $products_options_name['products_options_name'] . ':</td><td>' . "\n";
                        $products_options_query = tep_db_query("select pov.products_options_values_id, pov.products_options_values_name, pa.options_values_price, pa.price_prefix, pa.products_attributes_id from " . TABLE_PRODUCTS_ATTRIBUTES . " pa, " . TABLE_PRODUCTS_OPTIONS_VALUES . " pov where pa.products_id = '" . $listing[$x]['products_id'] . "' and pa.options_id = '" . $products_options_name['products_options_id'] . "' and pa.options_values_id = pov.products_options_values_id and pov.language_id = '" . $languages_id . "'");
        $list_of_prdcts_attributes_id = '';
          $products_options = array(); // makes sure this array is empty again
        while ($_products_options = tep_db_fetch_array($products_options_query)) {
              $products_options[] = $_products_options;
          }

  for ($v = 0 ; $v < count($products_options); $v++) {
          $options_text = ''; // make it empty again
          $options_text = $products_options[$v]['products_options_values_name'];
          if ($products_options[$v]['options_values_price'] != '0') {
            $options_text .= ' (' . $products_options[$v]['price_prefix'] . $currencies->display_price($products_options[$v]['options_values_price'], tep_get_tax_rate($listing[$x]['products_tax_class_id'])) .') ';
          }
          $products_options_array[] = array('id' => $products_options[$v]['products_options_values_id'], 'text' => $options_text);
        }

                        $lc_text .= tep_draw_pull_down_menu('id_'.$listing[$x]['products_id'].'[' . $products_options_name['products_options_id'] . ']', $products_options_array, $selected_attribute);
                        $lc_text .= '</td></tr>';
                    }
                    $lc_text .= '</table>';
                }
                break;   
                case 'PRODUCT_LIST_BUY_NOW_MULTIPLE':
                $lc_align = 'right';
                $lc_valign = 'top';
                $lc_text = '<form name="buy_now_' . $listing[$x]['products_id'] . '" method="post" action="' . tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('action','sort')) . 'action=buy_now_form', 'NONSSL') . '">';
                $lc_text .= (TABLE_HEADING_MULTIPLE) . '<input type="text" name="cart_quantity" value="1" maxlength="6" size="4">';
        if ((int)$listing[$x]['total'] > 0) {
                    $lc_text .= '<table border="0" cellpadding="0" cellspacing"0">';
                    $products_options_name_query = tep_db_query("select distinct popt.products_options_id, popt.products_options_name from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_ATTRIBUTES . " patrib where patrib.products_id='" . $listing[$x]['products_id'] . "' and patrib.options_id = popt.products_options_id and popt.language_id = '" . $languages_id . "'");
                    while ($products_options_name = tep_db_fetch_array($products_options_name_query)) {
                        $selected_attribute = false;
                        $products_options_array = array();
                        $lc_text .= '<tr><td class="main">' . $products_options_name['products_options_name'] . ':</td><td>' . "\n";
                        $products_options_query = tep_db_query("select pov.products_options_values_id, pov.products_options_values_name, pa.options_values_price, pa.price_prefix, pa.products_attributes_id from " . TABLE_PRODUCTS_ATTRIBUTES . " pa, " . TABLE_PRODUCTS_OPTIONS_VALUES . " pov where pa.products_id = '" . $listing[$x]['products_id'] . "' and pa.options_id = '" . $products_options_name['products_options_id'] . "' and pa.options_values_id = pov.products_options_values_id and pov.language_id = '" . $languages_id . "'");
        $list_of_prdcts_attributes_id = '';
          $products_options = array(); // makes sure this array is empty again
        while ($_products_options = tep_db_fetch_array($products_options_query)) {
              $products_options[] = $_products_options;
          }

  for ($v = 0 ; $v < count($products_options); $v++) {
          $options_text = ''; // make it empty again
          $options_text = $products_options[$v]['products_options_values_name'];
          if ($products_options[$v]['options_values_price'] != '0') {
            $options_text .= ' (' . $products_options[$v]['price_prefix'] . $currencies->display_price($products_options[$v]['options_values_price'], tep_get_tax_rate($listing[$x]['products_tax_class_id'])) .') ';
          }
          $products_options_array[] = array('id' => $products_options[$v]['products_options_values_id'], 'text' => $options_text);
        }

                        $lc_text .= tep_draw_pull_down_menu('id[' . $products_options_name['products_options_id'] . ']', $products_options_array, $selected_attribute);
                        $lc_text .= '</td></tr>';
                    }
                    $lc_text .= '</table>';
                    $lc_text .= tep_draw_hidden_field('products_id', $listing[$x]['products_id']) . tep_image_submit('button_buy_now.gif', TEXT_BUY . $listing[$x]['products_name'] . TEXT_NOW);
   
                } // end if ((int)$listing[$x]['total'] > 0)
                if ((int)$listing[$x]['total'] == 0) {
                    $lc_text .= '<br> ';
                    $lc_text .= tep_draw_hidden_field('products_id', $listing[$x]['products_id']) . tep_image_submit('button_buy_now.gif', TEXT_BUY . $listing[$x]['products_name'] . TEXT_NOW);
                    $lc_text .= '<br> ';
                    $lc_text .= '<table border="0" cellpadding="0" cellspacing"0"><tr><td class="main"></td><td></td></tr></table>';
                }
                $lc_text .= '</form>';
                break;
                // End Add Multiple mod
            }
            $product_contents[] = $lc_text;
        }
        $lc_text = implode('<br>', $product_contents);
        $list_box_contents[$row][$column] = array('align' => 'center',
                                                //bof product listing with attributes
                                                'valign' => $lc_valign,
                                                //eof product listing with attributes
                                                //2.2 modification ,add width in td
                                              'params' => 'class="productListing-data" width="'.$tdsize.'%"',
                                              'text'  => $lc_text);
   
        $column ++;
 
        if ($x == ($no_of_listings -1)) {
            $last_column = ($x % PRODUCT_LIST_NUMCOL); // x modulus number of columns
            //BOF version 2.2 modification
            // fill up the remainder of the table row with empty cells
            for ($column = ($last_column + 1) ; $column < $colnum; $column++) {
                $list_box_contents[$row][$column] = array('align' => 'center',
                                                //bof product listing with attributes
                                                'valign' => $lc_valign,
                                                //eof product listing with attributes
                                                //2.2 modification ,add width in td
                                              'params' => 'class="productListing-data" width="'.$tdsize.'%"',
                                              'text'  => " ");
            }
        }
       
        if ($column >= $colnum && $x < ($no_of_listings -1)) {
            $row ++; // we start a new tr here  with $list_box_contents unless we already listed all products
            // $list_box_contents[$row] = array('params' => $class_for_buy_now);
            $column = 0;
      $counter++; // counter only goes up after the buy now buttons have been outputted, counts the real rows
      if ($use_tr_for_buy_now_button == true) {
      // make sure all data cells per row are filled
      $last_column = sizeof($buy_now_button_array);
      for ($zz = $last_column ; $zz < PRODUCT_LIST_NUMCOL; $zz++) {
        $buy_now_button_array[] = " ";
      }
      $list_box_contents[$row] = array('params' => $class_for_buy_now_row);
      foreach ($buy_now_button_array as $column1 => $lc_text1) {
        $list_box_contents[$row][$column1] = array('align' => 'center',
                                              'params' => 'class="productListing-data"',
                                              'text'  => $lc_text1);
      }
    unset($buy_now_button_array);
    $row ++;
      } // end if ($use_tr_for_buy_now_button == true)
    // output the last row with buy now buttons if needed
        } elseif ($x == ($no_of_listings -1) && $use_tr_for_buy_now_button == true) {
            $row ++; // we start a new tr here with $list_box_contents for the last row with buy now buttons
      // make sure all data cells per row are filled
      $last_column = sizeof($buy_now_button_array);
      for ($zz = $last_column ; $zz < PRODUCT_LIST_NUMCOL; $zz++) {
        $buy_now_button_array[] = " ";
      }
      $list_box_contents[$row] = array('params' => $class_for_buy_now_row);
      foreach ($buy_now_button_array as $column1 => $lc_text1) {
        $list_box_contents[$row][$column1] = array('align' => 'center',
                                              'params' => 'class="' . $class_for_buy_now . '"',
                                              'text'  => $lc_text1);
      }
      unset($buy_now_button_array);
    } // end elseif ($x == ($no_of_listings -1) && $use_tr_for_buy_now_button == true)
    } // end for ($x = 0; $x < $no_of_listings; $x++)

    new productListingBox($list_box_contents);

} else {
    $list_box_contents = array();

    $list_box_contents[0] = array('params' => 'class="productListing-odd"');
    $list_box_contents[0][] = array('params' => 'class="productListing-data"',
                                'text' => TEXT_NO_PRODUCTS);

    new productListingBox($list_box_contents);
}

  if ( ($listing_split->number_of_rows > 0) && ((PREV_NEXT_BAR_LOCATION == '2') || (PREV_NEXT_BAR_LOCATION == '3')) ) {
?>

<table border="0" width="100%" cellspacing="0" cellpadding="2">
<tr>
  <td class="smallText"><?php echo $listing_split->display_count(TEXT_DISPLAY_NUMBER_OF_PRODUCTS); ?></td>
  <td class="smallText" align="right"><?php echo TEXT_RESULT_PAGE . ' ' . $listing_split->display_links(MAX_DISPLAY_PAGE_LINKS, tep_get_all_get_params(array('page', 'info', 'x', 'y'))); ?></td>
</tr>
<?php if ($add_multiple == true){
?>
  <tr>
    <td align="left" class="main"> </td>
    <td align="right" class="main"><?php echo tep_image_submit('button_in_cart.gif', IMAGE_BUTTON_IN_CART);
    // added end of form here
    ?></form></td>
  </tr>
<?php } ?>
</table>
<?php
  }
}
?>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester