Jump to content



Photo
- - - - -

[Contribution] Extra Fields


  • Please log in to reply
225 replies to this topic

#221   maxemus

maxemus
  • Members
  • 106 posts
  • Real Name:Raphael Muscarelle
  • Gender:Male

Posted 15 January 2009 - 00:27

Hello I installed extra_fields_v2_0j and now the extra field is in the where the name should be in the category list How do I get the product name back in there

#222   kurjam

kurjam
  • Members
  • 1 posts
  • Real Name:Ainar

Posted 02 April 2009 - 20:17

Hello I installed extra_fields_v2_0j and now the extra field is in the where the name should be in the category list How do I get the product name back in there


I do have same question. I were able to move extra fields on top of description, but it wouldn't blend with it.
It look like this:
[img]http://img13.imageshack.us/img13/4994/81241034.jpg[/img]
And wanted solution is marked with black.

Current product info looks like this:
<?php
/*
  $Id: product_info.php 1739 2007-12-20 00:52:16Z hpdl $

  osCommerce, Open Source E-Commerce Solutions
  http://www.oscommerce.com

  Copyright (c) 2003 osCommerce

  Released under the GNU General Public License
*/

  require('includes/application_top.php');

  require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_PRODUCT_INFO);

  $product_check_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_status = '1' and p.products_id = '" . (int)$HTTP_GET_VARS['products_id'] . "' and pd.products_id = p.products_id and pd.language_id = '" . (int)$languages_id . "'");
  $product_check = tep_db_fetch_array($product_check_query);
?>
<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">
<html <?php echo HTML_PARAMS; ?>>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=<?php echo CHARSET; ?>">
<title><?php echo TITLE; ?></title>
<base href="<?php echo (($request_type == 'SSL') ? HTTPS_SERVER : HTTP_SERVER) . DIR_WS_CATALOG; ?>">
<link rel="stylesheet" type="text/css" href="stylesheet.css">
<script language="javascript"><!--
function popupWindow(url) {
  window.open(url,'popupWindow','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,res
izable=yes,copyhistory=no,width=100,height=100,screenX=150,screenY=150,top=150,le
ft=150')
}
//--></script>
<script type="text/javascript" src="lightbox/prototype.js"></script>
<script type="text/javascript" src="lightbox/scriptaculous.js?load=effects"></script>
<link rel="stylesheet" href="lightbox/lightbox.css" type="text/css" media="screen">
<script type="text/javascript" src="lightbox/builder.js"></script>
<script type="text/javascript" src="lightbox/lightbox.js"></script>

</head>
<body marginwidth="0" marginheight="0" topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0">
<div id="nolap_container">
<!-- header //-->
<?php require(DIR_WS_INCLUDES . 'header.php'); ?>
<!-- header_eof //-->

<!-- body //-->
<table border="0" width="100%" cellspacing="3" cellpadding="3" class="main_table">
  <tr>
	<td width="<?php echo BOX_WIDTH; ?>" valign="top"><table border="0" width="<?php echo BOX_WIDTH; ?>" cellspacing="0" cellpadding="2">
<!-- left_navigation //-->
<?php require(DIR_WS_INCLUDES . 'column_left.php'); ?>
<!-- left_navigation_eof //-->
	</table></td>
<!-- body_text //-->
	<td width="100%" valign="top"><?php echo tep_draw_form('cart_quantity', tep_href_link(FILENAME_PRODUCT_INFO, tep_get_all_get_params(array('action')) . 'action=add_product')); ?><table border="0" width="100%" cellspacing="0" cellpadding="0">
<?php
  if ($product_check['total'] < 1) {
?>
	  <tr>
		<td class="infoBoxContents"><?php new contentBox(array(array('text' => TEXT_PRODUCT_NOT_FOUND))); ?></td>
	  </tr>
	  <tr>
		<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
	  </tr>
	  <tr>
		<td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBox">
		  <tr class="infoBoxContents">
			<td><table border="0" width="100%" cellspacing="0" cellpadding="2">
			  <tr>
				<td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
				<td align="right"><?php echo '<a href="' . tep_href_link(FILENAME_DEFAULT) . '">' . tep_image_button('button_continue.gif', IMAGE_BUTTON_CONTINUE) . '</a>'; ?></td>
				<td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
			  </tr>
			</table></td>
		  </tr>
		</table></td>
	  </tr>
<?php
  } else {
	$product_info_query = tep_db_query("select p.products_id, pd.products_name, pd.products_description, p.products_model, p.products_quantity, p.products_image, pd.products_url, p.products_price, p.products_tax_class_id, p.products_date_added, p.products_date_available, p.manufacturers_id from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_status = '1' and p.products_id = '" . (int)$HTTP_GET_VARS['products_id'] . "' and pd.products_id = p.products_id and pd.language_id = '" . (int)$languages_id . "'");
	$product_info = tep_db_fetch_array($product_info_query);

	tep_db_query("update " . TABLE_PRODUCTS_DESCRIPTION . " set products_viewed = products_viewed+1 where products_id = '" . (int)$HTTP_GET_VARS['products_id'] . "' and language_id = '" . (int)$languages_id . "'");

	if ($new_price = tep_get_products_special_price($product_info['products_id'])) {
	  $products_price = '<s>' . $currencies->display_price($product_info['products_price'], tep_get_tax_rate($product_info['products_tax_class_id'])) . '</s> <span class="productSpecialPrice">' . $currencies->display_price($new_price, tep_get_tax_rate($product_info['products_tax_class_id'])) . '</span>';
	} else {
	  $products_price = $currencies->display_price($product_info['products_price'], tep_get_tax_rate($product_info['products_tax_class_id']));
	}

	if (tep_not_null($product_info['products_model'])) {
	  $products_name = $product_info['products_name'] . '<br><span class="smallText">[' . $product_info['products_model'] . ']</span>';
	} else {
	  $products_name = $product_info['products_name'];
	}
?>
	  <tr>
		<td><table border="0" width="100%" cellspacing="0" cellpadding="0">
		  <tr>
			<td class="pageHeading" valign="top"><?php echo $products_name; ?></td>
			<td class="pageHeading" align="right" valign="top"><?php echo $products_price; ?></td>
		  </tr>
		</table></td>
	  </tr>
	  <tr>
		<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
	  </tr>
<!--bof stock announcement-->
<?php
if ((STOCK_CHECK == 'true')&&($product_info['products_quantity'] < 1)) {
?>
<tr>
  <td><span class="markProductOutOfStock"><?php echo TEXT_OUT_OF_STOCK; ?></span></td>
 <?php  include(DIR_WS_BOXES . 'product_notifications.php'); ?>  
</tr>
<tr>
  <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
</tr>
<?php
} elseif ((STOCK_CHECK == 'true')&&($product_info['products_quantity'] > 0)) {
?>
<tr>
  <td><span class="markProductOutOfStock"><?php echo TEXT_IN_STOCK; ?></span></td>
</tr>
<tr>
  <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
</tr>
<?php
}
?>
<!--eof stock announcement-->
<?php
		  // START: Extra Fields Contribution v2.0b - mintpeel display fix
		  
					  $extra_fields_query = tep_db_query("
					  SELECT pef.products_extra_fields_status as status, pef.products_extra_fields_name as name, ptf.products_extra_fields_value as value
					  FROM ". TABLE_PRODUCTS_EXTRA_FIELDS ." pef
			 LEFT JOIN  ". TABLE_PRODUCTS_TO_PRODUCTS_EXTRA_FIELDS ." ptf
			ON ptf.products_extra_fields_id=pef.products_extra_fields_id
			WHERE ptf.products_id=". (int)$HTTP_GET_VARS['products_id'] ." and ptf.products_extra_fields_value<>'' and (pef.languages_id='0' or pef.languages_id='".(int)$languages_id."')
			ORDER BY products_extra_fields_order");

		echo '<tr>
	  <td>
	  <table border="0" width="50%" cellspacing="0" cellpadding="2px">';
  while ($extra_fields = tep_db_fetch_array($extra_fields_query)) {
		if (! $extra_fields['status'])  // show only enabled extra field
		   continue;
	 echo'<tr><td class="main" align="left" valign="middle"><font size="1" color="#666666"><b>'.$extra_fields['name'].': </b>' . stripslashes($extra_fields['value']).'</font></td></tr>';
  }
	 echo' </table>
	  </td>
	  </tr>'; 
	   // END: Extra Fields Contribution - mintpeel display fix
?>
	  <tr>
		<td class="main">
<?php
	if (tep_not_null($product_info['products_image'])) {
?>
		  <table border="0" cellspacing="0" cellpadding="2" align="right">
			<tr>
			  <td align="center" class="smallText">
<script language="javascript"><!--
document.write('<?php echo '<a href="' . tep_href_link(DIR_WS_IMAGES . $product_info['products_image']) . '" target="_blank" rel="lightbox" title="'.$product_info['products_name'].'" >' . tep_image(DIR_WS_IMAGES . $product_info['products_image'], $product_info['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT, 'hspace="5" vspace="5"') . '<br>' . TEXT_CLICK_TO_ENLARGE . '</a>'; ?>');
//--></script>
<noscript>
<?php echo '<a href="' . tep_href_link(DIR_WS_IMAGES . $product_info['products_image']) . '" target="_blank">' . tep_image(DIR_WS_IMAGES . $product_info['products_image'], $product_info['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT, 'hspace="5" vspace="5"') . '<br>' . TEXT_CLICK_TO_ENLARGE . '</a>'; ?>
</noscript>
			  </td>
			</tr>
		  </table>
<?php
	}
?>
		  <p><?php echo stripslashes($product_info['products_description']); ?></p>
<?php
	$products_attributes_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_ATTRIBUTES . " patrib where patrib.products_id='" . (int)$HTTP_GET_VARS['products_id'] . "' and patrib.options_id = popt.products_options_id and popt.language_id = '" . (int)$languages_id . "'");
	$products_attributes = tep_db_fetch_array($products_attributes_query);
	if ($products_attributes['total'] > 0) {
?>
		  <table border="0" cellspacing="0" cellpadding="2">
			<tr>
			  <td class="main" colspan="2"><?php echo TEXT_PRODUCT_OPTIONS; ?></td>
			</tr>
<?php
	  $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='" . (int)$HTTP_GET_VARS['products_id'] . "' and patrib.options_id = popt.products_options_id and popt.language_id = '" . (int)$languages_id . "' order by popt.products_options_name");
	  while ($products_options_name = tep_db_fetch_array($products_options_name_query)) {
		$products_options_array = array();
		$products_options_query = tep_db_query("select pov.products_options_values_id, pov.products_options_values_name, pa.options_values_price, pa.price_prefix from " . TABLE_PRODUCTS_ATTRIBUTES . " pa, " . TABLE_PRODUCTS_OPTIONS_VALUES . " pov where pa.products_id = '" . (int)$HTTP_GET_VARS['products_id'] . "' and pa.options_id = '" . (int)$products_options_name['products_options_id'] . "' and pa.options_values_id = pov.products_options_values_id and pov.language_id = '" . (int)$languages_id . "'");
		while ($products_options = tep_db_fetch_array($products_options_query)) {
		  $products_options_array[] = array('id' => $products_options['products_options_values_id'], 'text' => $products_options['products_options_values_name']);
		  if ($products_options['options_values_price'] != '0') {
			$products_options_array[sizeof($products_options_array)-1]['text'] .= ' (' . $products_options['price_prefix'] . $currencies->display_price($products_options['options_values_price'], tep_get_tax_rate($product_info['products_tax_class_id'])) .') ';
		  }
		}

		if (isset($cart->contents[$HTTP_GET_VARS['products_id']]['attributes'][$products_options_name['products_options_id']])) {
		  $selected_attribute = $cart->contents[$HTTP_GET_VARS['products_id']]['attributes'][$products_options_name['products_options_id']];
		} else {
		  $selected_attribute = false;
		}
?>
			<tr>
			  <td class="main"><?php echo $products_options_name['products_options_name'] . ':'; ?></td>
			  <td class="main"><?php echo tep_draw_pull_down_menu('id[' . $products_options_name['products_options_id'] . ']', $products_options_array, $selected_attribute); ?></td>
			</tr>
<?php
	  }
?>
		  </table>
<?php
	}
?>
		</td>
	  </tr>
	  <tr>
		<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
	  </tr>
<?php
	$reviews_query = tep_db_query("select count(*) as count from " . TABLE_REVIEWS . " where products_id = '" . (int)$HTTP_GET_VARS['products_id'] . "'");
	$reviews = tep_db_fetch_array($reviews_query);
	if ($reviews['count'] > 0) {
?>
	  <tr>
		<td class="main"><?php //echo TEXT_CURRENT_REVIEWS . ' ' . $reviews['count']; ?></td>
	  </tr>
	  <tr>
		<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
	  </tr>
<?php
	}

	if (tep_not_null($product_info['products_url'])) {
?>
	  <tr>
		<td class="main"><?php echo sprintf(TEXT_MORE_INFORMATION, tep_href_link(FILENAME_REDIRECT, 'action=url&goto=' . urlencode($product_info['products_url']), 'NONSSL', true, false)); ?></td>
	  </tr>
	  <tr>
		<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
	  </tr>
<?php
	}

	if ($product_info['products_date_available'] > date('Y-m-d H:i:s')) {
?>
	  <tr>
		<td align="center" class="smallText"><?php echo sprintf(TEXT_DATE_AVAILABLE, tep_date_long($product_info['products_date_available'])); ?></td>
	  </tr>
<?php
	} else {
?>
	  <tr>
		<td align="center" class="smallText"><?php echo sprintf(TEXT_DATE_ADDED, tep_date_long($product_info['products_date_added'])); ?></td>
	  </tr>
<?php
	}
?>
	  <tr>
		<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
	  </tr>
	  <tr>
		  <td align="center"><?php product_names(); ?></td>
	  </tr>
	  <tr>
		<td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBox">
		  <tr class="infoBoxContents">
			<td><table border="0" width="100%" cellspacing="0" cellpadding="2">
			  <tr>
				<td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
				<td class="main"><?php echo '<a href="' . tep_href_link(FILENAME_DEFAULT, tep_get_all_get_params()) . '">' . tep_image_button('button_back.gif', IMAGE_BUTTON_BACK) . '</a>'; ?></td>
				<td class="main"><?php //echo '<a href="' . tep_href_link(FILENAME_PRODUCT_REVIEWS, tep_get_all_get_params()) . '">' . tep_image_button('button_reviews.gif', IMAGE_BUTTON_REVIEWS) . '</a>'; ?></td>
<!--bof remove add to cart button-->
  <td class="main" align="right"><?php
if (((STOCK_CHECK == "true")&&($product_info['products_quantity'] > 0)) or (STOCK_CHECK == "false")) {
  echo tep_draw_hidden_field('products_id', $product_info['products_id']) . tep_image_submit('button_in_cart.gif', IMAGE_BUTTON_IN_CART);
} else {
  echo tep_draw_separator('pixel_trans.gif', '1', '19');
}
?></td>
<!--eof remove add to cart button-->
				<td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
			  </tr>
			</table></td>
		  </tr>
		</table></td>
	  </tr>
	  <tr>
		<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
	  </tr>
	  <tr>
		<td>
<?php
	if ((USE_CACHE == 'true') && empty($SID)) {
	  echo tep_cache_also_purchased(3600);
	} else {
	  include(DIR_WS_MODULES . FILENAME_ALSO_PURCHASED_PRODUCTS);
	}
  }
?>
		</td>
	  </tr>
	</table></form></td>
<!-- body_text_eof //-->
  </tr>
</table>
<!-- body_eof //-->
<!-- footer //-->
<?php require(DIR_WS_INCLUDES . 'footer.php'); ?>
<!-- footer_eof //-->
<br>
</div>
</body>
</html>
<?php require(DIR_WS_INCLUDES . 'application_bottom.php'); ?>


#223   chrissmith

chrissmith
  • Members
  • 10 posts
  • Real Name:Christian Schmidt
  • Gender:Male

Posted 07 October 2009 - 15:40

Hello,

i get an error on catalog side:

Warning: Invalid Argument supplied for foreach() in....

on index.php and on product_listing.pgp

What can be the reason?

Thanks
chrissmith

#224   northshore

northshore
  • Members
  • 12 posts
  • Real Name:Todd

Posted 29 September 2010 - 03:07

Hi,

I am trying to display the Extra Fields in the product_listing_tpl.php file, but the contribution only gives instructions for doing this in the product_listing.php. The suggested replace line does not exist in product_listing_tpl.php. Does anyone know how to accomplish this??

Any help is appeciated.

13. Extra Fields in product listing (optional)
In catalog/includes/modules/product_listings.php

FIND

$lc_text = '&nbsp;<a href="' . tep_href_link(FILENAME_PRODUCT_INFO, ($cPath ? 'cPath=' . $cPath . '&' : '') . 'products_id=' . $listing['products_id']) . '">' . $listing['products_name'] . '</a>&nbsp;';
            }
            break;




REPLACE WITH
//PRODUCT EXTRA FIELDS IN PRODUCT LISTING - BEGINING

//PRODUCT EXTRA FIELDS IN PRODUCT LISTING - BEGINING

//$lc_text = '&nbsp;<a href="' . tep_href_link(FILENAME_PRODUCT_INFO, ($cPath ? 'cPath=' . $cPath . '&' : '') . 'products_id=' . $listing['products_id']) . '">' . //$listing['products_name'] . '</a>&nbsp;';

//            }
//            break;

$extra_fields_text = '';
                  $extra_fields_query = tep_db_query("
					SELECT pef.languages_id, pef.products_extra_fields_status as status, pef.products_extra_fields_name as name, ptf.products_extra_fields_value as value
					FROM ". TABLE_PRODUCTS_EXTRA_FIELDS ." pef
					LEFT JOIN ". TABLE_PRODUCTS_TO_PRODUCTS_EXTRA_FIELDS ." ptf
					ON ptf.products_extra_fields_id=pef.products_extra_fields_id
					WHERE ptf.products_id=". (int) $listing[$x]['products_id'] ." and pef.languages_id=" . (int)$languages_id . " and ptf.products_extra_fields_value<>''
					ORDER BY products_extra_fields_order");

while ($extra_fields = tep_db_fetch_array($extra_fields_query)) {
if (! $extra_fields['status'])
continue;
$extra_fields_text = $extra_fields_text.
'<font color="#000000">'.$extra_fields['name'].': </font>' .
'<font color="#006600">' .$extra_fields['value'].'<BR></font>';

}

$lc_text = '&nbsp;<b><a href="' . tep_href_link(FILENAME_PRODUCT_INFO, ($cPath ? 'cPath=' . $cPath . '&' : '') . 'products_id=' . $listing[$x]['products_id']) . '">' . $listing[$x]['products_name'] . '</a></b><br>&nbsp;&nbsp;' . $extra_fields_text . '<br>';

}
break;

// PRODUCT EXTRA FIELDS IN PRODUCT LISTING - END


#225   youngs_gifts

youngs_gifts
  • Members
  • 18 posts
  • Real Name:Adam Young
  • Gender:Male
  • Location:Madison, Maine USA

Posted 20 July 2012 - 01:34

Hi All I just installed this on top of a very moded shop and was getting the error :

Warning: Invalid argument supplied for foreach().... in template_top.php at line 34

after about 2 hours i found this error is caused by this code:

foreach ($epf as $e) {

$mt = ($e['uses_list'] && !$e['multi_select'] ? ($pname[$e['field']] == 0) : !tep_not_null($pname[$e['field']]));
if ($e['keyword'] && !$mt) {
if ($e['uses_list']) {
if ($e['multi_select']) {
$values = explode('|', trim($pname[$e['field']], '|'));
foreach ($values as $val) {
$keywords[] = tep_output_string(tep_get_extra_field_list_value($val));
}
} else {
$keywords[] = tep_output_string(str_replace(' | ', ', ', tep_get_extra_field_list_value($pname[$e['field']], $e['show_chain'])));
}
} else {
$keywords[] = tep_output_string($pname[$e['field']]);
}
}
}


This is most likely because the foreach hates it when the returned data is not an data array. so the fix to get rid of that pesky warning while page loads is to replace said code with this...


if(is_array($epf))
{
foreach ($epf as $e) {
$mt = ($e['uses_list'] && !$e['multi_select'] ? ($pname[$e['field']] == 0) : !tep_not_null($pname[$e['field']]));
if ($e['keyword'] && !$mt) {
if ($e['uses_list']) {
if ($e['multi_select']) {
$values = explode('|', trim($pname[$e['field']], '|'));
foreach ($values as $val) {
$keywords[] = tep_output_string(tep_get_extra_field_list_value($val));
}
} else {
$keywords[] = tep_output_string(str_replace(' | ', ', ', tep_get_extra_field_list_value($pname[$e['field']], $e['show_chain'])));
}
} else {
$keywords[] = tep_output_string($pname[$e['field']]);
}
}
}
}

Now the page loads with no errors, all this did was look to see if the data is an array before it loads the loop, if not than nothing so no error...

I am in hopes this post saves some one some time...

Thanks
Adam

#226   Clau123

Clau123
  • Members
  • 90 posts
  • Real Name:Claudia
  • Gender:Female
  • Location:Netherlands

Posted 15 November 2012 - 13:48

I wanted to copy the extra fields also if I'm copying a products to another place. I found this in my old files,it's working for me:


To Copy extra fields
Look for (in catalog/admin/categories.php):
$dup_products_id = tep_db_insert_id();

Add after it:
// BOF: Extra fields to database on duplicate
$xf_query = tep_db_query("select products_id, products_extra_fields_id, products_extra_fields_value from " . TABLE_PRODUCTS_TO_PRODUCTS_EXTRA_FIELDS . " where products_id = '" . (int)$products_id . "'");
while($xfield = tep_db_fetch_array($xf_query)) {

tep_db_query("insert into " . TABLE_PRODUCTS_TO_PRODUCTS_EXTRA_FIELDS . " (products_id, products_extra_fields_id, products_extra_fields_value) values ('" . (int)$dup_products_id . "', '" . tep_db_input($xfield['products_extra_fields_id']) . "', '" . tep_db_input($xfield['products_extra_fields_value']) . "')");
}
// EOF: Extra fields to database on duplicate