You are viewing this forum as a guest. Login to an existing account, or create a new account, to reply to topics and to create new topics.
Pages: 1
My site is kind of confusing. All products fall into multiple categories. I want to be able to show and link to the other categories that each product falls in. How would I do that?
Offline
In fact, I could set it up so there are top categories and list something like:
Occasion: (all are links) Birthday, Anniversary, Christmas
Recipient: (all are links) Family, Friends, Anyone
Etc...
Last edited by jensme (02-10-2011 11:03:57)
Offline
Here's what I have so far, but it's looping weird. IT keeps looping back to categories every time I click on a product:
<?php
// +--
// | Get variables we need to draw this display.
// +--
$ns = $this->globals('core.namespace');
$eol = $this->globals('core.eol');
$proddisp = $this->globals('ecom.prod_proddetail');
$xid = $proddisp['id'];
$id = $this->xhtml_encode($xid);
//$usethumb = $this->globals('core_settings.ecom.imguseprodthumb');
//$imgwidthth = $this->globals('core_settings.ecom.imgsizeprodlgth');
$usethumb = '0';
$imgwidthth = '50';
$catdisp = $this->globals('ecom.cat_catdisp');
// +--
// | Create the tags name and link.
// +--
$catname = $this->xhtml_encode($catdisp['name']);
$catlink = $this->link_namespace('ecom','catshow',$catdisp['id']);
$tags = $proddisp['xcat'];
$cattag = '';
$cattag .= '<script type="text/javascript">' . $eol;
$cattag .= '<!--' . $eol;
$cattag .= 'if(document.links) { // create an array of catlinks' . $eol;
$cattag .= 'var links = new Array();' . $eol;
foreach ($tags as $num => $cat) {
$cattag .= 'links[' . $num . '] = new Link();' . $eol;
$cattag .= '<a href="' . $catlink . '"><?php print $catname; ?></a>, ';
} // End of if statement.
} // End of foreach statement.
// +---
// | END TAGS
// +---
if ($ns == 'addcart') {$ns = 'prodshow';}
// +---
// | SLP edited
// +---
if ($ns == 'addinvitembuild'){$ns = 'prodshow';}
$prodtype = $this->xhtml_encode($proddisp['prodtype']);
$prodnum = $this->xhtml_encode($proddisp['prodnum']);
$proddet = $proddisp['proddet'];
$minibio = $proddisp['minibio'];
$proddesc_intro = $proddisp['proddesc_intro'];
//+----------------
$this->globals('ecom.prod_proddisp',$proddisp);
$this->globals('ecom.prod_priceinfo',$proddisp['core.priceinfo']);
// +--
// | Create the product name and description.
// +--
$prodname = $this->xhtml_encode($proddisp['name']);
$proddesc = $proddisp['desclong'];
$desc_has_tags = $this->has_tags($proddesc);
if (empty($desc_has_tags)) {$proddesc = '<p>' . $this->xhtml_encode($proddesc) . '</p>';}
if (empty($proddesc)) {
$proddesc = $proddisp['descshort'];
$desc_has_tags = 0;
} // End of if statement.
if (empty($desc_has_tags)) {$proddesc = '<p>' . $this->xhtml_encode($proddesc) . '</p>';}
// +--
// | Create the image tag(s).
// +--
$imglistlg = $proddisp['imglg'];
if (empty($imglistlg)) {$imglistlg = 'none.png';}
$imglistlg = $this->make_list($imglistlg);
$imgwidth = $this->globals('core_settings.ecom.imgsizeprodlg');
$imgtag = '';
if (empty($imgwidth)) {$imgwidth = 180;}
$count = 0;
$multilg = 0;
foreach ($imglistlg as $num => $name) {
if ($count == 0) { $lgimname = $name; }
$count++;
} // End of foreach statement.
if ($count > 1) {
// We have multi large images.
$multilg = 0;
} // End of if statement.
if (($multilg) && ($usethumb)) {
$imgtag .= '<script type="text/javascript">' . $eol;
$imgtag .= '<!--' . $eol;
$imgtag .= 'if(document.images) { // create an array of prodImages' . $eol;
$imgtag .= 'document.prodImages = new Array();' . $eol;
}
foreach ($imglistlg as $num => $img) {
if (($multilg) && ($usethumb)) {
$imgurl = 'media/ecom/prodlg/' . $img;
$imgtag .= 'document.prodImages[' . $num . '] = new Image();' . $eol;
$imgtag .= 'document.prodImages[' . $num . '].src = "' . $imgurl . '";' . $eol;
$imgtag .= 'document.prodImages[' . $num . '].pop = "' . $imgurl . '";' . $eol;
} else {
$imgurl = 'media/ecom/prodlg/' . $img;
$imgtag .= '<a class="thumbnail" href="#thumb"><img src="' . $imgurl . '" width="180" alt="' . $prodname . '"><span><img src="' . $imgurl . '" width="400"/></a></span>';
} // End of if statement.
} // End of foreach statement.
if (($multilg) && ($usethumb)) {
$imgtag .= '//-->' . $eol;
$imgtag .= '}' . $eol;
$imgtag .= '</script>' . $eol;
$imgurl = 'media/ecom/prodlg/' . $lgimname;
$imgtag .= '<img src="' . $imgurl . '" ';
if ($imgwidth) {$imgtag .= 'width="180" ';}
$imgtag .= 'alt="' . $prodname . '" id="prodImage" border="0" />';
} // End of if statement.
// +--
// | Print the display.
// +--
?>
<!-- ///// BEGIN PRINT AREA ///// -->
<!-- IMAGES, PRICE, ADD -->
<div id="blockit" style="height: 240px; width: 995px;">
<div id="images">
<?php print $imgtag; ?>
</div>
<div id="priceplus">
<?php $this->include_file('ecom','pricedisp.php'); ?>
<?php
// +--
// | Print the product options if we can add the item to the
// | shopping cart or wish list and we're on the prodshow
// | namespace.
// +--
$add_ok = 1;
if (($proddisp['useinv']) && (!($proddisp['invlevel'] > 0))) {$add_ok = 0;}
if ($proddisp['pricestatus'] == 'D') {$add_ok = 0;}
if (($ns == 'prodshow') && ($add_ok)) {
print '<p class="ultablesp"> </p>' . $eol . $eol;
$this->include_namespace('ecom','prodshowopt',array());
} // End of if statement.
?>
</div> <!-- END PRICEPLUS -->
</div> <!-- END BLOCKIT -->
<!-- TITLE, DETAILS -->
<div id="blockit">
<div id="prodtitle">
<?php print $prodname; ?>
</div>
<div id="minidetails">
<?php print $prodtype; ?>, #<?php print $prodnum; ?>
</div>
</div>
<!-- DESCRIPTION, ABOUT, TAGS -->
<div id="blockit">
<div id="description"><?php print $proddesc; ?></div>
<div id="about"><?php print $proddet; ?></div>
<div id="tags">Tags<br/> <br/>
Occasion: [automated]<br/>
Recipient: Mom, Dad, Brother, Sister, Family, Friends, Strangers<br/>
Attitude: Nice, Sarcastic, Clever<br/><br/>
<a href="<?php print $catlink; ?>" title="<?php print $catname; ?>"><?php print $catname; ?></a>
</div>
</div>
<!-- <table id="proddetail--<?php print $id; ?>" cellspacing="0" cellpadding="10" style="width: 100%;">
<tr style="text-align: left;"><td>-->Offline
Now it's not looping, but the categories aren't showing up. I guess I don't know how to call up the xcat field in the database and... help this thing along. Thoughts? I'll pay anyone who helps.
<?php
// +--
// | Get variables we need to draw this display.
// +--
$ns = $this->globals('core.namespace');
$eol = $this->globals('core.eol');
$proddisp = $this->globals('ecom.prod_proddetail');
$xid = $proddisp['id'];
$id = $this->xhtml_encode($xid);
//$usethumb = $this->globals('core_settings.ecom.imguseprodthumb');
//$imgwidthth = $this->globals('core_settings.ecom.imgsizeprodlgth');
$usethumb = '0';
$imgwidthth = '50';
$catdisp = $this->globals('ecom.cat_catdisp');
// +--
// | Create the tags name and link.
// +--
$catname = $this->xhtml_encode($catdisp['name']);
$catlink = $this->link_namespace('ecom','catshow',$catdisp['id']);
$tags = $proddisp['xcat'];
$cattag = '';
$cattag .= '<script type="text/javascript">' . $eol;
$cattag .= 'var links = new Array();' . $eol;
foreach ($tags as $num => $cat) {
$cattag .= 'links[' . $num . '] = ' . $catname . '>' . $eol;
$cattag .= 'var linkURL = new Array();' . $eol;
$cattag .= 'linkURL[' . $num . '] = http://www.shopflytrap.com/ecom-catshow/' . $catlink . '>' . $eol;
$cattag .= 'for (i=0; i<links.length; i++) {// create an array of catlinks' . $eol;
$cattag .= 'document.write("<li>"+links[i].link(linkURL[i])+"</li>");' . $eol;
$cattag .= '}' . $eol;
$cattag .= '</script>' . $eol;
} // End of foreach statement.
// +---
// | END TAGS
// +---
if ($ns == 'addcart') {$ns = 'prodshow';}
// +---
// | SLP edited
// +---
if ($ns == 'addinvitembuild'){$ns = 'prodshow';}
$prodtype = $this->xhtml_encode($proddisp['prodtype']);
$prodnum = $this->xhtml_encode($proddisp['prodnum']);
$proddet = $proddisp['proddet'];
$minibio = $proddisp['minibio'];
$proddesc_intro = $proddisp['proddesc_intro'];
//+----------------
$this->globals('ecom.prod_proddisp',$proddisp);
$this->globals('ecom.prod_priceinfo',$proddisp['core.priceinfo']);
// +--
// | Create the product name and description.
// +--
$prodname = $this->xhtml_encode($proddisp['name']);
$proddesc = $proddisp['desclong'];
$desc_has_tags = $this->has_tags($proddesc);
if (empty($desc_has_tags)) {$proddesc = '<p>' . $this->xhtml_encode($proddesc) . '</p>';}
if (empty($proddesc)) {
$proddesc = $proddisp['descshort'];
$desc_has_tags = 0;
} // End of if statement.
if (empty($desc_has_tags)) {$proddesc = '<p>' . $this->xhtml_encode($proddesc) . '</p>';}
// +--
// | Create the image tag(s).
// +--
$imglistlg = $proddisp['imglg'];
if (empty($imglistlg)) {$imglistlg = 'none.png';}
$imglistlg = $this->make_list($imglistlg);
$imgwidth = $this->globals('core_settings.ecom.imgsizeprodlg');
$imgtag = '';
if (empty($imgwidth)) {$imgwidth = 180;}
$count = 0;
$multilg = 0;
foreach ($imglistlg as $num => $name) {
if ($count == 0) { $lgimname = $name; }
$count++;
} // End of foreach statement.
if ($count > 1) {
// We have multi large images.
$multilg = 0;
} // End of if statement.
if (($multilg) && ($usethumb)) {
$imgtag .= '<script type="text/javascript">' . $eol;
$imgtag .= '<!--' . $eol;
$imgtag .= 'if(document.images) { // create an array of prodImages' . $eol;
$imgtag .= 'document.prodImages = new Array();' . $eol;
}
foreach ($imglistlg as $num => $img) {
if (($multilg) && ($usethumb)) {
$imgurl = 'media/ecom/prodlg/' . $img;
$imgtag .= 'document.prodImages[' . $num . '] = new Image();' . $eol;
$imgtag .= 'document.prodImages[' . $num . '].src = "' . $imgurl . '";' . $eol;
$imgtag .= 'document.prodImages[' . $num . '].pop = "' . $imgurl . '";' . $eol;
} else {
$imgurl = 'media/ecom/prodlg/' . $img;
$imgtag .= '<a class="thumbnail" href="#thumb"><img src="' . $imgurl . '" width="180" alt="' . $prodname .
'"><span><img src="' . $imgurl . '" width="400"/></a></span>';
} // End of if statement.
} // End of foreach statement.
if (($multilg) && ($usethumb)) {
$imgtag .= '//-->' . $eol;
$imgtag .= '}' . $eol;
$imgtag .= '</script>' . $eol;
$imgurl = 'media/ecom/prodlg/' . $lgimname;
$imgtag .= '<img src="' . $imgurl . '" ';
if ($imgwidth) {$imgtag .= 'width="180" ';}
$imgtag .= 'alt="' . $prodname . '" id="prodImage" border="0" />';
} // End of if statement.
// +--
// | Print the display.
// +--
?>
<!-- ///// BEGIN PRINT AREA ///// -->
<!-- IMAGES, PRICE, ADD -->
<div id="blockit" style="height: 240px; width: 995px;">
<div id="images">
<?php print $imgtag; ?>
</div>
<div id="priceplus">
<?php $this->include_file('ecom','pricedisp.php'); ?>
<?php
// +--
// | Print the product options if we can add the item to the
// | shopping cart or wish list and we're on the prodshow
// | namespace.
// +--
$add_ok = 1;
if (($proddisp['useinv']) && (!($proddisp['invlevel'] > 0))) {$add_ok = 0;}
if ($proddisp['pricestatus'] == 'D') {$add_ok = 0;}
if (($ns == 'prodshow') && ($add_ok)) {
print '<p class="ultablesp"> </p>' . $eol . $eol;
$this->include_namespace('ecom','prodshowopt',array());
} // End of if statement.
?>
</div> <!-- END PRICEPLUS -->
</div> <!-- END BLOCKIT -->
<!-- TITLE, DETAILS -->
<div id="blockit">
<div id="prodtitle">
<?php print $prodname; ?>
</div>
<div id="minidetails">
<?php print $prodtype; ?>, #<?php print $prodnum; ?>
</div>
</div>
<!-- DESCRIPTION, ABOUT, TAGS -->
<div id="blockit">
<div id="description"><?php print $proddesc; ?></div>
<div id="about"><?php print $proddet; ?></div>
<div id="tags">Tags<br/> <br/>
Occasion: [automated]<br/>
Recipient: Mom, Dad, Brother, Sister, Family, Friends, Strangers<br/>
Attitude: Nice, Sarcastic, Clever<br/><br/>
<a href="<?php print $catlink; ?>" title="<?php print $catname; ?>"><?php print $catname; ?></a>
</div>
</div>
<!-- <table id="proddetail--<?php print $id; ?>" cellspacing="0" cellpadding="10" style="width: 100%;">
<tr style="text-align: left;"><td>-->Here's the page I'm working with. Please ignore the screwed up images for a moment:
http://www.shopflytrap.com/ecom-prodshow/TEST001.html
Last edited by jensme (02-10-2011 13:49:28)
Offline
I don't believe any of those category variables are defined there. You're going to need to call them.
Also, you can't use foreach against a comma separated list. You're going to need to split that up into an array.
Offline
Thanks. I removed the foreach in the second version because I don't need it. I don't think... I'm following this:
function linkDisplay() {
/* Enter the link name below. Each entry must have
a unique number in the "[]" brackets. */
var links = new Array();
links[0]="Google";
links[1]="Yahoo";
links[2]="Web Reference";
links[3]="JavaScript Forum";
var linkURL = new Array();
linkURL[0]="http://www.google.com";
linkURL[1]="http://www.yahoo.com";
linkURL[2]="http://www.webreference.com";
linkURL[3]="http://www.webdeveloper.com/forum/forumdisplay.php?f=3";
for (i=0; i<links.length; i++) {
document.write("<li>"+links[i].link(linkURL[i])+"</li>");
}
}
Offline
Without reading all of your code, why are you using php to generate javascript to do a document.write in the browser when php has the print function?
Offline
Hell if I know!
Honestly, I'm a hack with all code and learn by looking at other people's code. I don't know what goes with what, what conflicts with what, etc. It's just a crapshoot with me.
Offline
To be more clear, I was stealing the code that creates the image list in the product detail display. That seems to be JS.
Offline
Pages: 1