

<?xml version="1.0" encoding="UTF-8"?>
	<rss version="2.0"
		xmlns:content="http://purl.org/rss/1.0/modules/content/"
		xmlns:wfw="http://wellformedweb.org/CommentAPI/"
		xmlns:dc="http://purl.org/dc/elements/1.1/"
		xmlns:atom="http://www.w3.org/2005/Atom"

			>

	<channel>
		<title>LexiConn News &#187; All Posts</title>
		<atom:link href="https://support.lexiconn.com/news/forums/forum/tutorials/feed/" rel="self" type="application/rss+xml" />
		<link>https://support.lexiconn.com/news/forums/forum/tutorials/feed/</link>
		<description></description>
		<pubDate>Sat, 18 Apr 2026 09:01:56 +0000</pubDate>
		<generator>http://bbpress.org/?v=2.5.3-5249</generator>
		<language>en-US</language>

		
		
					
				<item>
					<guid>https://support.lexiconn.com/news/forums/topic/google-global-site-tag-gtag-js-integration-with-shopsite/#post-49461</guid>
					<title><![CDATA[Google Global Site Tag (gtag.js) integration with ShopSite]]></title>
					<link>https://support.lexiconn.com/news/forums/topic/google-global-site-tag-gtag-js-integration-with-shopsite/#post-49461</link>
					<pubDate>Mon, 30 Jul 2018 21:25:53 +0000</pubDate>
					<dc:creator>lexiconn</dc:creator>

					<description>
						<![CDATA[
						<h3>What is Google Global Site Tag?</h3>
<p>Google&#8217;s global site tag (gtag.js) is a javascript library that integrates tracking between several Google products (Analytics, Adwords, etc).  If you add this library to your site, it replaces any existing analytics tracking scripts you have in place, including Analytics code added automatically by ShopSite under Merchandising -&gt; Google Services -&gt; Analytics.  There is no automated integration of gtag.js by ShopSite at this time, but it may be an option in a future update.  At this time, you should only consider changing to the global site tag if it is required by Google for tracking.</p>
<h3>Integration gtag.js with ShopSite:</h3>
<p>1. The first step is to remove any Google Analytics code from your templates, and turn off Google Analytics tracking under Merchandising -&gt; Google Services -&gt; Analytics.  Otherwise you will have duplicate tracking for all of your pages.</p>
<p>2. Next, you will need to add the following code as high in the &lt;head&gt; of the page as possible in the [-- DEFINE PAGE --] section of your page templates, in the [-- DEFINE MORE_INFO_PAGE --] section of your product templates, and in the [-- DEFINE ShoppingCart --] and [-- DEFINE Shipping --] section of your shopping cart template:</p>
<pre style="padding-left: 30px;">&lt;script async src="https://www.googletagmanager.com/gtag/js?id=GA_TRACKING_ID"&gt;&lt;/script&gt;
&lt;script&gt;
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'GA_TRACKING_ID');
 
  ga('send', 'pageview');
 
&lt;/script&gt;</pre>
<p>(of course, replace GA_TRACKING_ID in both locations with your GA tracking id).</p>
<p>3. Add the following code to the [-- DEFINE ThankYou --] section of your shopping cart template:</p>
<pre style="padding-left: 30px;">&lt;script async src="https://www.googletagmanager.com/gtag/js?id=GA_TRACKING_ID"&gt;&lt;/script&gt;
&lt;script&gt;
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'GA_TRACKING_ID');
 
  ga('send', 'pageview');
  ga('require', 'ecommerce');

  ga('ecommerce:addTransaction', {
          'id': ss_ordernum,
          'affiliation': '[-- STORE.Name {JS_ENCODE} --]',
          'revenue': ss_ordertotal,
          'shipping': ss_shipping,
          'tax': ss_tax
   });

   for(n=0; n&lt;ss_sku.length; n++){
           ga('ecommerce:addItem', {
                  'id': ss_ordernum,
                  'name': ss_name[n],
                  'sku': ss_sku[n],
                  'price': ss_price[n],
                  'quantity': ss_quantity[n]
                });
   }

   ga('ecommerce:send');

&lt;/script&gt;</pre>
<p>(again, replace GA_TRACKING_ID in both locations with your GA tracking id).</p>
<p>4. Regenerate your site (Utilities -&gt; Publish &#8211; Regenerate) to apply the new code to all pages on your site.</p>
						]]>
					</description>

					
					
				</item>

			
				<item>
					<guid>https://support.lexiconn.com/news/forums/topic/shopsite-templates-and-images/#post-49148</guid>
					<title><![CDATA[ShopSite Templates and Images]]></title>
					<link>https://support.lexiconn.com/news/forums/topic/shopsite-templates-and-images/#post-49148</link>
					<pubDate>Thu, 02 Jul 2015 17:15:08 +0000</pubDate>
					<dc:creator>lexiconn</dc:creator>

					<description>
						<![CDATA[
						<p>Interested in all there is to know about using images in ShopSite custom templates?</p>
<p>Check out our latest Knowledgebase article:</p>
<p><span style="text-decoration: underline;"><strong><a href="http://support.lexiconn.com/kb/questions/431/Working%20with%20Images%20in%20ShopSite%20Templates" rel="nofollow">Working with Images in ShopSite Templates</a></strong></span></p>
<p>- LexiConn Support</p>
<p>&nbsp;</p>
						]]>
					</description>

					
					
				</item>

			
				<item>
					<guid>https://support.lexiconn.com/news/forums/topic/manually-adding-universal-analytics-to-your-site/#post-49006</guid>
					<title><![CDATA[Manually Adding Google Universal Analytics To Your Site]]></title>
					<link>https://support.lexiconn.com/news/forums/topic/manually-adding-universal-analytics-to-your-site/#post-49006</link>
					<pubDate>Wed, 21 May 2014 16:40:52 +0000</pubDate>
					<dc:creator>lexiconn</dc:creator>

					<description>
						<![CDATA[
						<p>If you are looking to use Google Universal Analytics to track your ShopSite store and you&#8217;re using ShopSite to generate all your pages you can configure ShopSite to add the tracking code for you automatically (requires version 12.0.2). This can be done in the ShopSite back office under Merchandising &gt; Google Services &gt; Analytics.</p>
<p>The feature has a wizard which will step you through the process of configuring the settings and when you publish your store ShopSite will automatically add (or update existing) tracking code to the store and shopping cart pages.</p>
<p>If you have pages generated outside of ShopSite or you have a need for customized Universal Analytics tracking code you will need to add the code manually to your site. In this tutorial we&#8217;ll step through the details on how to do that and will provide sample tracking code as well.</p>
<p>For an in-depth look at the features included with Universal Anaytics you can visit:</p>
<p><a href="https://support.google.com/analytics/answer/2790010?hl=en" rel="nofollow">https://support.google.com/analytics/answer/2790010?hl=en</a></p>
<p>To upgrade your Google account to Universal Analytics, follow the instructions at:</p>
<p><a href="https://developers.google.com/analytics/devguides/collection/upgrade/" rel="nofollow">https://developers.google.com/analytics/devguides/collection/upgrade/</a></p>
<h2><b>Page View Tracking</b></h2>
<p>If you have your <strong>own SSL certificate</strong> for your domain name, then you will use the following code:</p>
<p><b>Universal Analytics Code</b></p>
<pre>&lt;!-- BEGIN: Google Universal Analytics --&gt;
&lt;script type="text/javascript"&gt;
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
  ga('create', 'UA-XXXXXX-Y', 'auto');
  ga('send', 'pageview');
&lt;/script&gt;
&lt;!-- END: Google Analytics --&gt;
</pre>
<p>If your store is hosted with us and uses our <strong>shared SSL</strong> to secure pages, then you will need to use the following code:</p>
<p><b>Universal Analytics Code</b> (Cross-Domain Tracking)</p>
<pre>&lt;!-- Google Analytics --&gt;
&lt;script type="text/javascript"&gt;
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','//www.google-analytics.com/analytics.js','ga'); function __utmLinkPost(a){return true;}function __utmLinker(a){window.location=a;}
ga('create', 'UA-XXXXXX-Y', 'auto', {'allowLinker': true});
ga('require', 'linker');
ga('linker:autoLink', ['your-domain.com', 'secure-host.com']);
ga('send', 'pageview');
&lt;/script&gt;
&lt;!-- END: Google Analytics --&gt; 
</pre>
<p><b>NOTE</b>: Be sure to change the &#8220;UA-XXXXXX-Y&#8221; text to your &#8220;UA&#8221; tracking code provided by Google. Also, &#8220;your-domain.com&#8221; should be replaced with your domain name.</p>
<p>For further reading about cross-domain tracking, Google has details here:</p>
<p><a href="https://developers.google.com/analytics/devguides/collection/analyticsjs/cross-domain" rel="nofollow">https://developers.google.com/analytics/devguides/collection/analyticsjs/cross-domain</a></p>
<p>The tracking code selected above goes on every page of your site, including cart pages.  For the tracking code to work, it must be placed before the closing &#8220;&lt;/head&gt;&#8221; tag.  For the shopping cart, the tracking code should be added to the following sections only:</p>
<pre lang="php" line="1" escaped="true">[-- DEFINE ShoppingCart --]
[-- DEFINE Shipping --]
[-- DEFINE Confirmation --]
[-- DEFINE ThankYou --]</pre>
<h2><b>Ecommerce Tracking </b>(optional)<b><br />
</b></h2>
<p>In order to track conversion details using Universal Analytics, the following code will need to be added to the [-- DEFINE ThankYou --]  section of your shopping cart template.  The  ecommerce code must be added <strong>after</strong> the page view tracking code and should be located between the opening &#8220;&lt;body&gt;&#8221; and closing &#8220;&lt;/body&gt;&#8221; tags.</p>
<pre>&lt;!-- BEGIN: Google Universal Analytics Ecommerce Tracking Code --&gt;
&lt;script type="text/javascript"&gt;
document.write('&lt;script type=\"text/javascript\"&gt;');
document.write("ga('require', 'ecommerce', 'ecommerce.js');");
document.write("ga('ecommerce:addTransaction', {" + "'id':'" + ss_ordernum +"', 'affiliation':'" + ss_associate + "','revenue':'" + ss_ordertotal + "','shipping':'" + ss_shiptotal + "','tax':'" + ss_taxtotal + "'});");
     for (var p = 0 ; p &lt; number_products ; p++) { 
     document.write("ga('ecommerce:addItem', {" + "'id':'" + ss_ordernum +"', 'name':'" + ss_name[p] + "','sku':'" + ss_sku[p] + "', 'category': 'product', 'price':'" + ss_price[p] + "','quantity':'" + ss_quantity[p] + "'});");      } document.write("ga('ecommerce:send');"); document.write('&lt;\/scr'+'ipt&gt;'); &lt;/script&gt; &lt;!-- END: Google Analytics Ecommerce Tracking Code --&gt;</pre>
<p>Tip:  For conversions to be reported, your Google Analytics account must be upgraded to Universal Analytics <strong>and</strong> Ecommerce Tracking enabled.</p>
<p>Instructions for enabling Ecommerce Tracking in your Google Analytics account can be found at:</p>
<p><a href="https://support.google.com/analytics/answer/1009612?hl=en" rel="nofollow">https://support.google.com/analytics/answer/1009612?hl=en</a></p>
<p>Google has additional details on the eCommerce tracking features of Universal Analytics here:</p>
<p><a href="https://developers.google.com/analytics/devguides/collection/analyticsjs/ecommerce" rel="nofollow">https://developers.google.com/analytics/devguides/collection/analyticsjs/ecommerce</a></p>
						]]>
					</description>

					
					
				</item>

			
				<item>
					<guid>https://support.lexiconn.com/news/forums/topic/make-product-view-selection-global-in-responsive-templates/#post-48883</guid>
					<title><![CDATA[Make Product View Selection Global in Responsive Templates]]></title>
					<link>https://support.lexiconn.com/news/forums/topic/make-product-view-selection-global-in-responsive-templates/#post-48883</link>
					<pubDate>Tue, 10 Dec 2013 16:13:14 +0000</pubDate>
					<dc:creator>Anonymous</dc:creator>

					<description>
						<![CDATA[
						<p>ShopSite V12 provides nine new themes (Brownie, Composer, Content Focus, Deskman, Floating Page, Response, Shower, Stripped Down, and Underline) all built on the same responsive templates (Full-Page/Full-Product.sst). The Full-Page.sst template allows customer to toggle the product layout between grid/image and list/detail view dynamically:</p>
<p><img src="http://support.lexiconn.com/news/images/product_display.png" alt="" /></p>
<p>When a customer selects the product view they prefer, this setting does not persist once they leave the page. Here is a method that will make a customer&#8217;s product-view selection persistent across all of your product pages so that selecting &#8220;View Products By Detail List&#8221; or &#8220;View Products By Image&#8221; changes the view for <em>all</em> of your pages.</p>
<p>1. This method requires some PHP code on all of your product pages, so first you must make certain that .html and .htm pages are parsed for PHP by entering the following line on the .htaccess file in your /www directory (let us know if you need any help with this and we can put this in place for you).</p>
<pre>AddType application/x-httpd-php .php .php3 .htm .html</pre>
<p>2. Add the first include before the opening HTML tag on each page:</p>
<pre>&lt;?php&gt;
if(array_key_exists("listType", $_COOKIE)){
$body_class = $_COOKIE;
} else{
$body_class = 'primg';
}
?&gt;</pre>
<p>In the Full-Page.sst page template, this will look like this:</p>
<pre>[-- DEFINE PAGE --]

&lt;?php&gt;
if(array_key_exists("listType", $_COOKIE)){
$body_class = $_COOKIE;
} else{
$body_class = 'primg';
}
?&gt;

[-- VAR.Type "page" --][-- VAR.Secure "no" --][-- IF PAGE.LinkName --][-- VAR.LinkName PAGE.LinkName --][-- ELSE --][-- VAR.LinkName PAGE.Name --][-- END_IF --][-- VAR.FileName PAGE.FileName --][-- IF PAGE.LinkColumns "Five columns" --][-- VAR.LinkCols "5" --][-- ELSE_IF PAGE.LinkColumns "Four columns" --][-- VAR.LinkCols "4" --][-- ELSE_IF PAGE.LinkColumns "Three columns" --][-- VAR.LinkCols "3" --][-- ELSE_IF PAGE.LinkColumns "Two columns" --][-- VAR.LinkCols "2" --][-- ELSE --][-- VAR.LinkCols "1" --][-- END_IF --][-- IF PAGE.Columns "Five columns" --][-- VAR.Cols "5" --][-- ELSE_IF PAGE.Columns "Four columns" --][-- VAR.Cols "4" --][-- ELSE_IF PAGE.Columns "Three columns" --][-- VAR.Cols "3" --][-- ELSE_IF PAGE.Columns "Two columns" --][-- VAR.Cols "2" --][-- ELSE --][-- VAR.Cols "1" --][-- END_IF --][-- INCLUDE Full-VARs-DOCTYPE.sst PROCESS --][-- IF PAGE.SearchProductField --][-- ELSE --][-- VAR.DisplaySearch "no" --][-- END_IF --]
</pre>
<p>3. Add the following class to the opening body tag in templates:</p>
<pre>&lt;body id="listType" class="&lt;?php echo $body_class; ?&gt;"[-- IF PageLinks.Left --] onload="leftLinks();"[-- END_IF --]&gt;</pre>
<p>In the Full-Page.sst template you will be changing the line:</p>
<p>to:</p>
<pre>&lt;body id="listType"[-- IF PageLinks.Left --] onload="leftLinks();"[-- IF PageLinks.Left --] onload="leftLinks();"[-- END_IF --]&gt;</pre>
<p>4. Add the following javascript before the closingtag in the page templates:</p>
<pre>&lt;script type="text/javascript"&gt; 


function set_cookie(name, value, expirationDays) {
var cookie = name + "=" + value;
var exdate=new Date();
exdate.setDate(exdate.getDate()+expirationDays);
cookie = cookie + (";expires="+exdate.toGMTString());
document.cookie = cookie;
}

function get_cookie(c_name) {
if (document.cookie.length&gt;0)
{
var c_start=document.cookie.indexOf(c_name+"=");
if (c_start != -1)
{
c_start=c_start + c_name.length+1;
var c_end=document.cookie.indexOf(";",c_start);
if (c_end==-1)
c_end=document.cookie.length;
var cookie = unescape(document.cookie.substring(c_start,c_end));
return cookie;
}
}
return null;
}

var list_pref = get_cookie("listType");
if(list_pref != undefined &amp;&amp; list_pref != null){
document.getElementById("listType").setAttribute("class", list_pref);
} else{
document.write('&lt;body id="listType" class="prtxt" onload="leftLinks();"&gt;
}

&lt;/script&gt;</pre>
<p>In the Full-Page.sst template this will look like:</p>
<pre>.
.
.

[-- INCLUDE Full-Footer.sst PROCESS --]

&lt;script type="text/javascript"&gt; 


function set_cookie(name, value, expirationDays) {
var cookie = name + "=" + value;
var exdate=new Date();
exdate.setDate(exdate.getDate()+expirationDays);
cookie = cookie + (";expires="+exdate.toGMTString());
document.cookie = cookie;
}

function get_cookie(c_name) {
if (document.cookie.length&gt;0)
{
var c_start=document.cookie.indexOf(c_name+"=");
if (c_start != -1)
{
c_start=c_start + c_name.length+1;
var c_end=document.cookie.indexOf(";",c_start);
if (c_end==-1)
c_end=document.cookie.length;
var cookie = unescape(document.cookie.substring(c_start,c_end));
return cookie;
}
}
return null;
}

var list_pref = get_cookie("listType");
if(list_pref != undefined &amp;&amp; list_pref != null){
document.getElementById("listType").setAttribute("class", list_pref);
} else{
document.write('&lt;body id="listType" class="prtxt" onload="leftLinks();"&gt;
}

&lt;/script&gt;
 
 
</pre>
<p>&nbsp;</p>
						]]>
					</description>

					
					
				</item>

			
				<item>
					<guid>https://support.lexiconn.com/news/forums/topic/disable-wheel-scroll-in-dropdowns-on-checkout/#post-48875</guid>
					<title><![CDATA[Disable wheel scroll in dropdowns on checkout]]></title>
					<link>https://support.lexiconn.com/news/forums/topic/disable-wheel-scroll-in-dropdowns-on-checkout/#post-48875</link>
					<pubDate>Wed, 25 Sep 2013 18:12:13 +0000</pubDate>
					<dc:creator>Anonymous</dc:creator>

					<description>
						<![CDATA[
						<p>In Internet Explorer, dropdown boxes on the Checkout page (such as the credit card expiration date dropdowns) remain active after making a selection, and when selected, the values may change when you scroll with your mouse wheel.  This can result in a customer inadvertently selecting an invalid expiration date if they try to scroll on the page while the dropdown is still active.</p>
<p>The following script can be used on your Checkout page to force the dropdown boxes on the page to be deselected after a selection is made:</p>
<p>
<pre>
&lt;script type="text/javascript"&gt;
ss_jQuery("select").change(function(e){
e.target.blur()
})
&lt;/script&gt;
</pre>
<p>You can add the script before the closing  tag in the [-- DEFINE Shipping --] section of your Shopping Cart template, or you could add it in Commerce Setup -> Order System -> Checkout Screen &#8211; Text at the bottom<br />
of the Checkout screen, if your template supports it.</p>
						]]>
					</description>

					
					
				</item>

			
				<item>
					<guid>https://support.lexiconn.com/news/forums/topic/update-price-as-ordering-options-are-selected/#post-48802</guid>
					<title><![CDATA[Update Price as Ordering Options are Selected]]></title>
					<link>https://support.lexiconn.com/news/forums/topic/update-price-as-ordering-options-are-selected/#post-48802</link>
					<pubDate>Wed, 28 Sep 2011 17:24:08 +0000</pubDate>
					<dc:creator>Anonymous</dc:creator>

					<description>
						<![CDATA[
						<p>If you are using custom pricing rules for your ordering options, you may want the product price on the MoreInfo page to update as a customer selects various options to reflect the actual price of the product.</p>
<p>An example of this functionality can be found on the following demo page:</p>
<p><a href="http://shopsite-demo.lexiconn.com/product_options_change_price.html" rel="nofollow">http://shopsite-demo.lexiconn.com/product_options_change_price.html</a></p>
<p>This can be accomplished very easily using some javascript on your MoreInfo page:</p>
<p>1. Set or Add the name=&#8221;add_to_cart&#8221; attribute to your Add to Cart form element:</p>
<p>
<pre>
&lt;form name="add_to_cart" action="[path-to-your-shopping-cart]/order.cgi" method="post"&gt;
</pre>
<p></p>
<p>2. Insert a hidden input field into the body of your MoreInfo page template that has an id of &#8220;base_price&#8221; and a value of your product&#8217;s base price:</p>
<p>
<pre>
&lt;input type="hidden" id="base_price" name="base_price" value="[-- PRODUCT.Price --]" /&gt;
</pre>
<p></p>
<p>3. Wrap the ShopSite PRODUCT.Price template tag with a span element with an id of &#8220;product_price&#8221;:</p>
<p>
<pre>
&lt;span id="product_price"&gt;[-- PRODUCT.Price --]&lt;/span&gt;
</pre>
<p></p>
<p>4. Add the following javascript to the body of your MoreInfo page, preferably near the closing body tag:</p>
<p>
<pre>
&lt;script type="text/javascript"&gt;

window.onload = function(){

basePrice = parseFloat(document.getElementById("base_price").value.substr(1).replace(',',''))
modifiedPrice = null
productID = document.add_to_cart.itemnum.value
priceAdjustment = new Array()
var optionCount = 0

var option_regex = /.*:finopt:.*/
var value_regex = /.*;[+*-][0-9]{0,4}.[0-9]{1,2}||.*;[+*-][0-9]{0,4}/
var modifiedPrice_regex = /.*;.*/

var commaFormat = function(amount){
var delimiter = ","; // replace comma if desired
var a = amount.split('.',2)
var d = a[1]
var i = parseInt(a[0])
if(isNaN(i)) { return ''; }
var minus = ''
if(i &lt; 0) { minus = '-'; }
i = Math.abs(i)
var n = new String(i)
var a = []
while(n.length &gt; 3){
var nn = n.substr(n.length-3)
a.unshift(nn)
n = n.substr(0,n.length-3)
}
if(n.length &gt; 0) { a.unshift(n); }
n = a.join(delimiter)
if(d.length &lt; 1) { amount = n; }
else { amount = n + '.' + d; }
amount = minus + amount
return amount
}

var currencyFormat = function(price) {
var i = parseFloat(price)
if(isNaN(i)) { i = 0.00; }
var minus = ''
if(i &lt; 0) { minus = '-'; }
i = Math.abs(i)
i = parseInt((i + .005) * 100)
i = i / 100
s = new String(i)
if(s.indexOf('.') &lt; 0) { s += '.00'; }
if(s.indexOf('.') == (s.length - 2)) { s += '0'; }
s = minus + s
var c_format = commaFormat(s)
return c_format
}

adjustPrice = function(currentPrice, optionValue){
var optionSplit = optionValue.split(";")
var operator = optionSplit[1].charAt(0)
var increment = parseFloat(optionSplit[1].substr(1))

switch(operator){

case '+':
return increment
break

case '-':
return (0 - increment)
break

case '*':
increment = currentPrice * increment
return increment
break

case '/':
currentPrice = currentPrice / increment
return currentPrice
break

default:
return 0
break

}
}


calculateModifiedPrice = function(){
modifiedPrice = basePrice
for(n=0; n&lt;optionCount; n++){
var inc = adjustPrice(basePrice, priceAdjustment["'"+productID+":finopt:"+n+"'"])
modifiedPrice = modifiedPrice + inc
}
}

var s_option = document.getElementsByTagName("select")

//cycle through all &lt;select&gt; elements on page
for(x=0; x&lt;s_option.length; x++){
//If this select matches an ordering option by name (/.*:finopt:.*/)
if(s_option[x].name){
if(option_regex.test(s_option[x].name)){
//increment count of ordering options
optionCount++
//Get current value of this ordering option (on page load)
var s_option_value = s_option[x].options[s_option[x].selectedIndex].value

//If this option has any incremented value
if(modifiedPrice_regex.test(s_option_value) &amp;&amp; s_option_value!=';n'){
priceAdjustment["'"+s_option[x].name+"'"] = s_option_value

} else if(s_option_value!=';n') {
priceAdjustment["'"+s_option[x].name+"'"] = 'n;+0'
} else {
priceAdjustment["'"+s_option[x].name+"'"] = 'n;+0'
}

for(n=0; n&lt;s_option[x].length; n++){

s_option[x].onchange=function(){

var s_option_value = this.options[this.selectedIndex].value

//If this option has any incremented value
if(modifiedPrice_regex.test(s_option_value) &amp;&amp; s_option_value!=';n'){
priceAdjustment["'"+this.name+"'"] = s_option_value

} else if(s_option_value!=';n') {
priceAdjustment["'"+this.name+"'"] = 'n;+0'
} else {
priceAdjustment["'"+this.name+"'"] = 'n;+0'
}
calculateModifiedPrice()
var e_price = "$"+currencyFormat(modifiedPrice)
document.getElementById("product_price").innerHTML = e_price
}
}

} else{
//Do nothing
}
}
}

calculateModifiedPrice()
var e_price = "$"+currencyFormat(modifiedPrice)
document.getElementById("product_price").innerHTML = e_price
}
&lt;/script&gt;
</pre>
<p></p>
<p>Now all that you will need to do is regenerate your site and the prices of your products will update on the moreinfo page as the customer chooses options that raise/lower the price.</p>
						]]>
					</description>

					
					
				</item>

			
				<item>
					<guid>https://support.lexiconn.com/news/forums/topic/lightbox-and-zoom-image-tutorial-for-shopsite/#post-48800</guid>
					<title><![CDATA[Lightbox and Zoom Image Tutorial for ShopSite]]></title>
					<link>https://support.lexiconn.com/news/forums/topic/lightbox-and-zoom-image-tutorial-for-shopsite/#post-48800</link>
					<pubDate>Tue, 27 Sep 2011 18:47:16 +0000</pubDate>
					<dc:creator>Anonymous</dc:creator>

					<description>
						<![CDATA[
						<p>If you would like to implement the Lightbox or the Image-Zoom effect on your MoreInfo pages with multiple MoreInfo images, the following script will make it much easier.</p>
<p>You can view examples of each of these effects on the following demo store pages:</p>
<p><span style="text-decoration: underline;"><strong>Lightbox Example:</strong></span></p>
<p><a href="http://shopsite-demo.lexiconn.com/lightbox_test.html" rel="nofollow">http://shopsite-demo.lexiconn.com/lightbox_test.html</a></p>
<p><span style="text-decoration: underline;"><strong>Zoom-Image Example:</strong></span></p>
<p><a href="http://shopsite-demo.lexiconn.com/zoom_image_test.html" rel="nofollow">http://shopsite-demo.lexiconn.com/zoom_image_test.html</a></p>
<p>We have provided the scripts you will need to make either of these work in a single zip file:</p>
<p><a href="http://support.lexiconn.com/more_info_image.zip" rel="nofollow">http://support.lexiconn.com/more_info_image.zip</a></p>
<p>1. Unzip and upload the contents of this file to your /www directory. If you need to upload the files to another directory on your site, you will need to adjust the path for each of the javascript and CSS includes.</p>
<p>2. Add the following code to theregion of your MoreInfo template (or put the code in a ShopSite include and call that include in the head region):</p>
<p>&nbsp;</p>
<pre>&lt;link media="screen" rel="stylesheet" href="/more_info_image/colorbox.css" /&gt;
&lt;link href="/more_info_image/cloud-zoom.css" rel="stylesheet" type="text/css" /&gt;
&lt;script type="text/javascript" src="/more_info_image/jquery.js"&gt;&lt;/script&gt;
&lt;script src="/more_info_image/jquery.colorbox-min.js"&gt;&lt;/script&gt;
&lt;script type="text/JavaScript" src="/more_info_image/cloud-zoom.1.0.2.min.js"&gt;&lt;/script&gt;

</pre>
<p>&nbsp;</p>
<p>Replace the [-- PRODUCT.MoreInformationGraphic --] and [-- MoreInfoImageRow --] section of your MoreInfo template with the following code (or put the code in a ShopSite include and call that include in place of those tags):</p>
<p>&nbsp;</p>
<pre> [-- VAR.MoreInfoImageType 'Lightbox' --] 
 #set to 'Lightbox' or to 'ZoomBox' 
 &lt;script type="text/javascript"&gt; 
     //override default javascript popup function 
     window.open = function(url, name, props) {} 
 
     var MoreInfoImage = { 
         image_source: '', 
         image_title: '', 
         image_extension: '', 
         image_id: '', 
         image_id_stem: 'more_info_image_', 
         tld_regex: /\.com|\.net|\.org|\.edu|\.biz|\.gov/, 
         img_extension_regex: /\.jpg$|\.jpeg$|\.png$|\.gif$/i, 
         
         zoom_config: { 
             zoom_suffix: '_zoom',  //suffix that your larger images will use, for example, image.jpg and image_zoom.jpg 
             image_class: 'cloud-zoom', 
             gallery_class: 'cloud-zoom-gallery', 
             preview_id: 'zoom1', 
             thumb_image_width: 125, 
             zoom_image_source: '', 
             options:{ 
                 zoomWidth: "auto", 
                 zoomHeight: "auto", 
                 position: "inside", 
                 adjustX: 0, 
                 adjustY: 0, 
                 tint: false, 
                 tintOpacity: 0.5, 
                 lensOpacity: 0.5, 
                 softFocus: false, 
                 smoothMove: 3, 
                 showTitle: true, 
                 titleOpacity: 0.5 
             } 
         }, 
         
         lightbox_config: { 
             default_lightbox_width: 500, 
             options:{ 
                 title: '', 
                 transition: "elastic", //`elastic`, `fade`, or `none` 
                 speed: 350, //transition speed in ms. 
                 initialWidth: 300, //initial width of the Lightbox Window 
                 initialHeight: 100, //initial height of the Lightbox Window 
                 width: false, //force a width of the Lightbox Window (outer width of the entire window) 
                 height: false, //force a height of the Lightbox Window (outer height of the entire window) 
                 innerWidth: false, //force a width of the Lightbox Window (inner width of the entire window) 
                 innerHeight: false, //force a height of the Lightbox Window (inner height of the entire window) 
                 maxWidth: false, //set a maximum width for the window 
                 maxHeight: false, //set a maximum height for the window 
                 scalePhotos: true, //whether to scale images if a maxWidth, maxHeight, innerWidth, innerHeight, width, or height have been defined 
                 scrolling: true, //whether to generate scrolling content if the image size exceed the size of the window 
                 opacity: 0.85, //Opacity of the screen overlay (range: 0 to 1) 
                 loop: true, //whether to allow a next link back to the first image after the last image is reached 
                 slideshow: false, //whether to generate a slideshow 
                 slideshowSpeed: 2500, //transition speed for slideshows in ms. 
                 slideshowAuto: true, //whether the slideshow should automatically begin 
                 slideshowStart: "Start Slideshow", //Text for the Slideshow Start control 
                 slideshowStop: "Stop Slideshow",  //Text for the Slideshow Stop control 
                 previous: "Previous", //Text for the previous image button 
                 next: "Next", //Text for the next image button 
                 close: "Close", //Text to close the window 
                 top: false, //Controls vertical positioning of window 
                 bottom: false, //Controls vertical positioning of window 
                 left: false, //Controls horizontal positioning of window 
                 right: false, //Controls horizontal positioning of window 
                 fixed: false  //Sets a fixed position for the window 
             } 
         }, 
 
         genID: function(){ 
             var rand_id = Math.floor(Math.random()*400); 
             this.image_id = this.image_id_stem + rand_id; 
         }, 
         
         generateID: function(){ 
             this.genID(); 
             if(document.getElementById(this.image_id) != undefined){ 
                 this.genID(); 
             } 
         }, 
         
         parseSource: function(){ 
             var p_image = this.image_source.split(this.img_extension_regex); 
             var p_image = p_image_source.split(this.tld_regex); 
             var p_z_image = p_image_source.split(this.img_extension_regex); 
             this.image_extension = p_image_source.match(this.img_extension_regex); 
             this.zoom_config.zoom_image_source =  p_z_image[0] + this.zoom_config.zoom_suffix + this.image_extension; 
         }, 
         
         generateZoomBoxImage: function(src, title){ 
             this.image_source = src; 
             this.parseSource(); 
             this.generateID(); 
             var output = '&lt;a href="' + this.zoom_config.zoom_image_source + '" class="'  + this.zoom_config.image_class + '" id="' + this.zoom_config.preview_id + '" rel="position: \'' + this.zoom_config.options.position + '\', showTitle: true, adjustX: 10, adjustY:-4\"&gt;[-- PRODUCT.MoreInformationGraphic JS_ENCODE --]&lt;/a&gt;'; 
             return output; 
         }, 
         
         generateZoomThumb: function(src, title){ 
             this.image_source = src; 
             this.image_title = title; 
             this.parseSource(); 
             this.generateID(); 
             var output = '&lt;a href="' + this.zoom_config.zoom_image_source + '" class="'  + this.zoom_config.gallery_class + '" id="' + this.image_id + '" title="' + this.image_title + '" rel="useZoom: \'' + this.zoom_config.preview_id + '\', smallImage: \'' + this.image_source + '\', zoomWidth: \'' + this.zoom_config.options.zoomWidth + '\', zoomHeight: \'' + this.zoom_config.options.zoomHeight + '\', position: \'' + this.zoom_config.options.position + '\', showTitle: \'' + this.zoom_config.options.showTitle + '\', adjustX: ' + this.zoom_config.options.adjustX + ', adjustY:' + this.zoom_config.options.adjustX + ', tint: ' + this.zoom_config.options.tint + ', tintOpacity: \''+ this.zoom_config.options.tintOpacity + '\', lensOpacity: \'' + this.zoom_config.options.lensOpacity + '\', softFocus: \'' + this.zoom_config.options.softFocus + '\', smoothMove: \'' + this.zoom_config.options.smoothMove + '\', titleOpacity: \'' + this.zoom_config.options.titleOpacity + '\'"&gt;&lt;img src="' + this.image_source + '" width="' + this.zoom_config.thumb_image_width + '" title="' + this.image_title + '" /&gt;&lt;/a&gt;'; 
             return output; 
         }, 
 
         generateLightbox: function(){ 
           $(document).ready(function(){ 
               
              $('td[class="small_img"] &gt; a').each(function(e){ 
                   $(this).removeAttr("onmouseover"); 
              }); 
 
               $('td[class="small_img"] &gt; a &gt; img').each(function(i){ 
                     $(this).parent().attr("href", this.src.replace(/ss_size\d\//, "")); 
                     $(this).parent().attr("rel", "16"); 
                     this.image_title = $(this).attr("title") != undefined ? $(this).attr("title") : '[-- PRODUCT.Name --]'; 
                     MoreInfoImage.lightbox_config.options.title = this.image_title; 
                    $(this).parent().colorbox(MoreInfoImage.lightbox_config.options); 
               }); 
                 
               $('img[name="prod_img"]').click(function(){ 
                     var current_src = ($(this).attr("src")); 
                     $('td[class="small_img"] &gt; a').each(function(i){ 
                          if($(this).attr("href") == current_src){ 
                               $(this).click(); 
                          } 
                     }); 
               }); 
       }); 
         } 
     }    
 
 &lt;/script&gt; 
 [-- IF VAR.MoreInfoImageType 'ZoomBox' --] 
 &lt;div class="zoom_image_block" style="width: 550px; height: 425px;"&gt; 
     &lt;div id="zoom_large_image" style="float: left; height: 425px;"&gt; 
       &lt;span id="more_info_graphic" style="display: none;"&gt;[-- PRODUCT.MoreInformationGraphic --]&lt;/span&gt; 
       &lt;script type="text/javascript"&gt; 
         var p_image_source = $("#more_info_graphic &gt; img").attr("src"); 
         var p_image_title = $("#more_info_graphic &gt; img").attr("title"); 
         document.write(MoreInfoImage.generateZoomBoxImage(p_image_source, p_image_title)); 
         &lt;/script&gt; 
     &lt;/div&gt; 
 &lt;div id="zoom_image_row" class="scroll-pane" style="float: right; width: 225px; height: 425px; overflow: auto; border-right: 1px solid #ccc;"&gt; 
 &lt;table align="center" width="175" id="zoom_image_table"&gt; 
 &lt;tr&gt; 
   &lt;td&gt; 
 &lt;div class="preview_image" &gt; 
       &lt;span id="more_info_image_0" style="display: none;"&gt;[-- PRODUCT.MoreInformationGraphic --]&lt;/span&gt; 
       &lt;script type="text/javascript"&gt; 
         var p_image_source = $("#more_info_image_0 &gt; img").attr("src"); 
         var p_image_title = $("#more_info_image_0 &gt; img").attr("title"); 
         document.write(MoreInfoImage.generateZoomThumb(p_image_source,  p_image_title)); 
         &lt;/script&gt; 
 &lt;/div&gt; 
   &lt;/td&gt; 
 &lt;/tr&gt; 
 [-- IF PRODUCT.MoreInfoImage1 --]  
 &lt;tr&gt; 
   &lt;td&gt; 
 &lt;div class="preview_image" &gt; 
       &lt;span id="more_info_image_1" style="display: none;"&gt;[-- PRODUCT.MoreInfoImage1 --]&lt;/span&gt; 
       &lt;script type="text/javascript"&gt; 
         var p_image_source = $("#more_info_image_1 &gt; img").attr("src"); 
         var p_image_title = $("#more_info_image_1 &gt; img").attr("title"); 
         document.write(MoreInfoImage.generateZoomThumb(p_image_source,  p_image_title)); 
         &lt;/script&gt; 
 &lt;/div&gt; 
   &lt;/td&gt; 
 &lt;/tr&gt; 
 [-- END_IF --] 
     
 [-- IF PRODUCT.MoreInfoImage2 --] 
 &lt;tr&gt; 
   &lt;td&gt; 
 &lt;div class="preview_image"&gt; 
    &lt;span id="more_info_image_2" style="display: none;"&gt;[-- PRODUCT.MoreInfoImage2 --]&lt;/span&gt; 
       &lt;script type="text/javascript"&gt; 
         var p_image_source = $("#more_info_image_2 &gt; img").attr("src"); 
         var p_image_title = $("#more_info_image_2 &gt; img").attr("title"); 
         document.write(MoreInfoImage.generateZoomThumb(p_image_source,  p_image_title)); 
         &lt;/script&gt; 
 &lt;/div&gt; 
   &lt;/td&gt; 
 &lt;/tr&gt; 
 [-- END_IF --] 
 [-- IF PRODUCT.MoreInfoImage3 --] 
 &lt;tr&gt; 
   &lt;td&gt; 
 &lt;div class="preview_image"&gt; 
     &lt;span id="more_info_image_3" style="display: none;"&gt;[-- PRODUCT.MoreInfoImage3 --]&lt;/span&gt; 
       &lt;script type="text/javascript"&gt; 
         var p_image_source = $("#more_info_image_3 &gt; img").attr("src"); 
         var p_image_title = $("#more_info_image_3 &gt; img").attr("title"); 
         document.write(MoreInfoImage.generateZoomThumb(p_image_source,  p_image_title)); 
         &lt;/script&gt; 
 &lt;/div&gt; 
   &lt;/td&gt; 
 &lt;/tr&gt; 
 [-- END_IF --] 
 [-- IF PRODUCT.MoreInfoImage4 --] 
 &lt;tr&gt; 
   &lt;td&gt; 
 &lt;div class="preview_image"&gt; 
     &lt;span id="more_info_image_4" style="display: none;"&gt;[-- PRODUCT.MoreInfoImage4 --]&lt;/span&gt; 
     &lt;script type="text/javascript"&gt; 
         var p_image_source = $("#more_info_image_4 &gt; img").attr("src"); 
         var p_image_title = $("#more_info_image_4 &gt; img").attr("title"); 
         document.write(MoreInfoImage.generateZoomThumb(p_image_source,  p_image_title)); 
     &lt;/script&gt; 
 &lt;/div&gt; 
 &lt;/td&gt; 
 &lt;/tr&gt; 
 [-- END_IF --] 
 [-- IF PRODUCT.MoreInfoImage5 --] 
 &lt;tr&gt; 
   &lt;td&gt; 
 &lt;div class="preview_image"&gt; 
     &lt;span id="more_info_image_5" style="display: none;"&gt;[-- PRODUCT.MoreInfoImage5 --]&lt;/span&gt; 
     &lt;script type="text/javascript"&gt; 
         var p_image_source = $("#more_info_image_5 &gt; img").attr("src"); 
         var p_image_title = $("#more_info_image_5 &gt; img").attr("title"); 
         document.write(MoreInfoImage.generateZoomThumb(p_image_source,  p_image_title)); 
     &lt;/script&gt; 
 &lt;/div&gt; 
 &lt;/td&gt; 
 &lt;/tr&gt; 
 [-- END_IF --] 
 [-- IF PRODUCT.MoreInfoImage6 --] 
 &lt;tr&gt; 
   &lt;td&gt; 
 &lt;div class="preview_image"&gt; 
     &lt;span id="more_info_image_6" style="display: none;"&gt;[-- PRODUCT.MoreInfoImage6 --]&lt;/span&gt; 
     &lt;script type="text/javascript"&gt; 
         var p_image_source = $("#more_info_image_6 &gt; img").attr("src"); 
         var p_image_title = $("#more_info_image_6 &gt; img").attr("title"); 
         document.write(MoreInfoImage.generateZoomThumb(p_image_source,  p_image_title)); 
     &lt;/script&gt; 
 &lt;/div&gt; 
 &lt;/td&gt; 
 &lt;/tr&gt; 
 [-- END_IF --] 
 [-- IF PRODUCT.MoreInfoImage7 --] 
 &lt;tr&gt; 
   &lt;td&gt; 
 &lt;div class="preview_image"&gt; 
     &lt;span id="more_info_image_7" style="display: none;"&gt;[-- PRODUCT.MoreInfoImage7 --]&lt;/span&gt; 
     &lt;script type="text/javascript"&gt; 
         var p_image_source = $("#more_info_image_7 &gt; img").attr("src"); 
         var p_image_title = $("#more_info_image_7 &gt; img").attr("title"); 
         document.write(MoreInfoImage.generateZoomThumb(p_image_source,  p_image_title)); 
     &lt;/script&gt; 
 &lt;/div&gt; 
 &lt;/td&gt; 
 &lt;/tr&gt; 
 [-- END_IF --] 
 [-- IF PRODUCT.MoreInfoImage8 --] 
 &lt;tr&gt; 
   &lt;td&gt; 
 &lt;div class="preview_image"&gt; 
     &lt;span id="more_info_image_8" style="display: none;"&gt;[-- PRODUCT.MoreInfoImage8 --]&lt;/span&gt; 
     &lt;script type="text/javascript"&gt; 
         var p_image_source = $("#more_info_image_8 &gt; img").attr("src"); 
         var p_image_title = $("#more_info_image_8 &gt; img").attr("title"); 
         document.write(MoreInfoImage.generateZoomThumb(p_image_source,  p_image_title)); 
     &lt;/script&gt; 
 &lt;/div&gt; 
 &lt;/td&gt; 
 &lt;/tr&gt; 
 &lt;/table&gt; 
     &lt;/div&gt; 
 &lt;/div&gt; 
 [-- END_IF --] 
 [-- IF PRODUCT.MoreInfoImage9 --] 
 &lt;tr&gt; 
   &lt;td&gt; 
 &lt;div class="preview_image"&gt; 
     &lt;span id="more_info_image_9" style="display: none;"&gt;[-- PRODUCT.MoreInfoImage9 --]&lt;/span&gt; 
     &lt;script type="text/javascript"&gt; 
         var p_image_source = $("#more_info_image_9 &gt; img").attr("src"); 
         var p_image_title = $("#more_info_image_9 &gt; img").attr("title"); 
         document.write(MoreInfoImage.generateZoomThumb(p_image_source,  p_image_title)); 
     &lt;/script&gt; 
 &lt;/div&gt; 
 &lt;/td&gt; 
 &lt;/tr&gt; 
 &lt;/table&gt; 
     &lt;/div&gt; 
 &lt;/div&gt; 
 [-- END_IF --] 
 [-- IF PRODUCT.MoreInfoImage10 --] 
 &lt;tr&gt; 
   &lt;td&gt; 
 &lt;div class="preview_image"&gt; 
     &lt;span id="more_info_image_10" style="display: none;"&gt;[-- PRODUCT.MoreInfoImage10 --]&lt;/span&gt; 
     &lt;script type="text/javascript"&gt; 
         var p_image_source = $("#more_info_image_10 &gt; img").attr("src"); 
         var p_image_title = $("#more_info_image_10 &gt; img").attr("title"); 
         document.write(MoreInfoImage.generateZoomThumb(p_image_source,  p_image_title)); 
     &lt;/script&gt; 
 &lt;/div&gt; 
 &lt;/td&gt; 
 &lt;/tr&gt; 
 &lt;/table&gt; 
     &lt;/div&gt; 
 &lt;/div&gt; 
 [-- END_IF --] 
 [-- ELSE_IF VAR.MoreInfoImageType 'Lightbox' --] 
 &lt;div class="zoom_image_block" style="width: 550px; height: 425px;"&gt; 
 [-- MoreInfoImageRow --] 
 &lt;/div&gt; 
 &lt;script type="text/javascript"&gt; 
    MoreInfoImage.generateLightbox(); 
 &lt;/script&gt; 
 [-- END_IF --] 

</pre>
<p>&nbsp;</p>
<p>3. Set the VAR.MoreInfoImageType variable to either &#8216;Lightbox&#8217; or &#8216;ZoomBox&#8217;:</p>
<p>[-- VAR.MoreInfoImageType 'Lightbox' --]</p>
<p>or</p>
<p>[-- VAR.MoreInfoImageType 'ZoomBox' --]</p>
<p>4. Configure options for whichever effect you are using:</p>
<p>=======================================================<br />
<em><strong>For Lightbox,</strong> the following options may be customized in the lightbox_config section of the script (a value of &#8216;false&#8217; should be used if no value is set):</em></p>
<hr class="bbcode_rule" />
<p><strong>default_lightbox_width</strong>: width of the lightbox window (default = 500)<br />
<strong>transition</strong>: elastic|fade|none (default = elastic)<br />
<strong>speed</strong>: transition speed (default = 350ms)<br />
<strong>initialWidth</strong>: initial width of the Lightbox Window [in pixels or percent] <strong>(default = 300px)<br />
<b>initialHeight</b></strong>: initial height of the Lightbox Window [in pixels or percent] (default = 100px)<br />
<strong>width</strong>: force a width of the Lightbox Window using the outer width of the entire window [in pixels or percent] (default = false)<br />
<strong>height</strong>: force a height of the Lightbox Window using the outer height of the entire window [in pixels or percent] (default = false)<br />
<strong>innerWidth</strong>: force a width of the Lightbox Window using the inner width of the entire window [in pixels or percent] (default = false)<br />
<strong>innerHeight</strong>: force a height of the Lightbox Window using the inner height of the entire window [in pixels or percent] (default = false)<br />
<strong>maxWidth</strong>: set a maximum width for the window [in pixels or percent] (default = false)<br />
<strong>maxHeight</strong>: set a maximum height for the window [in pixels or percent] (default = false)<br />
<strong>scalePhotos</strong>: whether to scale images if a maxWidth, maxHeight, innerWidth, innerHeight, width, or height have been defined [true|false] (default = true)<br />
<strong>scrolling</strong>: whether to generate scrolling content if the image size exceed the size of the window [true|false] (default = true)<br />
<strong>opacity</strong>: Opacity of the screen overlay [range: 0 to 1] (default = 0.85)<br />
<strong>loop</strong>: whether to allow a `Next` link back to the first image after the last image is reached (default = true)<br />
<strong>slideshow</strong>: whether to generate a slideshow [true|false] (default = false)<br />
<strong>slideshowSpeed</strong>: transition speed for slideshows in ms. (default = 3500)<br />
<strong>slideshowAuto</strong>: If slideshow is enabled, whether the slideshow should automatically begin [true|false] (default = false)<br />
<strong>slideshowStart</strong>: Text for the Slideshow Start control (default = &#8220;Start Slideshow&#8221;)<br />
<strong>slideshowStop</strong>: Text for the Slideshow Stop control (default = &#8220;Start Slideshow&#8221;)<br />
<strong>previous</strong>: Text to display for the `Previous` image button (default = &#8216;Previous&#8217;)<br />
<strong>next</strong>: Text to display for the `Next` image button (default = &#8216;Next&#8217;)<br />
<strong>close</strong>: Text to display to close the window (default = &#8216;Close&#8217;)<br />
<strong>top</strong>: Set top vertical positioning of window [in pixels] (default = false)<br />
<strong>bottom</strong>: Set bottom vertical positioning of window [in pixels] (default = false)<br />
<strong>left</strong>: Set left horizontal positioning of window [in pixels] (default = false)<br />
<strong>right</strong>: Set right horizontal positioning of window [in pixels] (default = false)<br />
<strong>fixed</strong>: Sets a fixed position for the window [true|false] (default = false)</p>
<p>=======================================================<br />
<em><strong>For ZoomBox,</strong> you will need to create a large version of your products images and name them the same as the corresponding product image but with a particular suffix, for example, using the default suffix &#8220;_zoom&#8221;:</em></p>
<hr class="bbcode_rule" />
<p>the large version of:</p>
<p>product_image.jpg</p>
<p>would be called</p>
<p>product_image_zoom.jpg</p>
<p>If you change this suffix to something other than the default of _zoom, you will need to update the zoom_suffix value zoom_config section of the script:</p>
<p>zoom_suffix: &#8216;_zoom&#8217;</p>
<p>to:</p>
<p>zoom_suffix: &#8216;_your_custom_suffix&#8217;</p>
<p>The following options may be customized in the zoom_config section of the script (a value of &#8216;false&#8217; should be used if no value is set):</p>
<p><strong>zoomWidth</strong>: width of the zoom window in pixels (default = &#8220;auto&#8221;)<br />
<strong>zoomHeight</strong>: height of the zoom window in pixels (default = &#8220;auto&#8221;)<br />
<strong>position</strong>: the position of the zoom window relative to the small image (default = &#8220;inside&#8221;)<br />
<strong>adjustX</strong>: fine tune the x-position of the zoom window in pixels (default = 0)<br />
<strong>adjustY</strong>: fine tune the y-position of the zoom window in pixels (default = 0)<br />
<strong>tint</strong>: set a tint color to cover the small image. Colors should be specified in hex format, such as &#8216;#aa00aa&#8217; (does not work with softFocus)<br />
<strong>tintOpacity</strong>: opacity of the tint [range: 0 to 1] (default = 0.5)<br />
<strong>lensOpacity</strong>: opacity of the mouse pointer lens [range: 0 to 1] (default = 0.5)<br />
<strong>softFocus</strong>: set to true to apply a soft blur to the regions of the image outside of your mouse magnifier [true|false] (default = true)<br />
<strong>smoothMove</strong>: smoothness of the zoom effect as you move your mouse lens over the image [1 = no smoothing, higher integers = more smoothing] (default = 3)<br />
<strong>showTitle</strong>: show the title tag of the image (default = true)<br />
<strong>titleOpacity</strong>: opacity of the title [range: 0 to 1] (default = 0.5)</p>
<p>5. After this code is in place in your template, be sure to regenerate (Utilities -&gt; Publish -&gt; Regenerate). This code supports up to 10 extra product images.</p>
						]]>
					</description>

					
					
				</item>

			
				<item>
					<guid>https://support.lexiconn.com/news/forums/topic/limiting-the-length-of-shopsite-checkout-fields/#post-48797</guid>
					<title><![CDATA[Limiting the Length of ShopSite Checkout Fields]]></title>
					<link>https://support.lexiconn.com/news/forums/topic/limiting-the-length-of-shopsite-checkout-fields/#post-48797</link>
					<pubDate>Mon, 12 Sep 2011 16:33:03 +0000</pubDate>
					<dc:creator>Anonymous</dc:creator>

					<description>
						<![CDATA[
						<p>You can use the following javascript on your checkout page to limit the length of text fields. It can be entered in:</p>
<p><em>Commerce Setup &gt; Order System &gt; Checkout Screen &#8211; Text at the bottom of the Checkout screen:</em></p>
<p>&nbsp;</p>
<pre>&lt;script type="text/javascript"&gt; 
 
 window.onload = function(){ 
   var LimitCheckout = { 
     useBilling: document.billing.usebilling.checked, 
     commentsBox: document.billing.Comments, 
     commentsLimit: 0, 
     billing_fields:[{ 
         Email: 0, 
         Title: 0, 
         First: 0,    
         Middle: 0, 
         Last: 0, 
         Suffix: 0, 
         Company: 0, 
         Address: 0, 
         Address2: 0, 
         City: 0,    
         Zip: 0, 
         Phone: 0 
    }], 
     shipping_fields:[{ 
         ShipTitle: 0,    
         ShipFirst: 0,      
         ShipMiddle: 0, 
         ShipLast: 0, 
         ShipSuffix: 0, 
         ShipCompany: 0,    
         ShipAddress: 0,    
         ShipAddress2: 0,    
         ShipCity: 0, 
         ShipZip: 0,            
         ShipPhone: 0 
     }], 
     limitCommentBox: function(l_val){ 
         document.billing.Comments.onkeyup = function(){ 
           if (document.billing.Comments.value.length &gt; l_val) { 
             document.billing.Comments.value = document.billing.Comments.value.substring(0, l_val); 
           } 
         } 
 
         document.billing.Comments.onkeydown = function(){ 
            if (document.billing.Comments.value.length &gt; l_val) { 
               document.billing.Comments.value = document.billing.Comments.value.substring(0, l_val); 
            } 
         } 
     }, 
     setFieldLimit: function(l_field, f_limit){ 
         var limit_field = document.getElementsByName(l_field); 
         for(m=0; m&lt;limit_field.length; m++){ 
             limit_field[m].maxLength = f_limit; 
         } 
     }, 
     limitFields: function(){ 
         
         for(var b_index in LimitCheckout.billing_fields[0]) { 
           if(LimitCheckout.billing_fields[0][b_index] &gt; 0){ 
                LimitCheckout.setFieldLimit(b_index, LimitCheckout.billing_fields[0][b_index]); 
            } 
         } 
         for(var s_index in LimitCheckout.shipping_fields[0]) { 
           if(LimitCheckout.shipping_fields[0][s_index] &gt; 0){ 
               
                LimitCheckout.setFieldLimit(s_index, LimitCheckout.shipping_fields[0][s_index]); 
            } 
         } 
 
         if(LimitCheckout.commentsBox != undefined){ 
             if(LimitCheckout.commentsLimit &gt; 0){ 
                 LimitCheckout.limitCommentBox(LimitCheckout.commentsLimit); 
             } 
         } 
     } 
         
 } 
 
     LimitCheckout.limitFields(); 
 } 
 &lt;/script&gt; 
</pre>
<p>&nbsp;</p>
<p>You will notice the script contains a list of billing fields (billing_fields) and shipping fields (shipping_fields) with a zero after each. Any field with a value of zero is not limited in length by this script. You can set any fields you would like to be restricted to the maximum number of characters you would like to allow for the field and the field will be restricted. You can also restrict the length of the text in the Customer Comments box (if you are using one on your checkout page) using the:</p>
<p><em>commentsLimit: 0</em></p>
<p>variable in the script.</p>
						]]>
					</description>

					
					
				</item>

			
				<item>
					<guid>https://support.lexiconn.com/news/forums/topic/prevent-entering-po-box-as-shipping-address-in-shopsite/#post-48796</guid>
					<title><![CDATA[Prevent Entering PO Box as Shipping Address in ShopSite]]></title>
					<link>https://support.lexiconn.com/news/forums/topic/prevent-entering-po-box-as-shipping-address-in-shopsite/#post-48796</link>
					<pubDate>Thu, 01 Sep 2011 15:27:30 +0000</pubDate>
					<dc:creator>Anonymous</dc:creator>

					<description>
						<![CDATA[
						<p>Javascript can be used to prevent entering a PO box in the shipping address fields when items cannot be shipped to a post office box.</p>
<p>To prevent entering PO Boxes in the shipping address, you can enter the following script in:</p>
<p>Commerce Setup > Order System > Checkout Screen &#8211; Text at the bottom of the Checkout screen</p>
<p>
<pre>
&lt;script type="text/javascript"&gt;

var post_office_message = "We are unable to offer shipping to Post Office addresses for this order.  Please enter your street address for the shipping address."

var po_regex = /^po.*box.*|^p.o..*box.*/i

function checkShipAddress(address){
if(po_regex.test(address)){
alert(post_office_message)
}
}

window.onload - function(){
document.billing.ShipAddress.onchange = function(){
checkShipAddress(this.value)
}

document.billing.ShipAddress2.onchange = function(){
checkShipAddress(this.value)
}
}

&lt;/script&gt;
</pre>
<p>
and the following code to:</p>
<p>Commerce Setup > Order System > Checkout Screen &#8211; Javascript added at start of built-in CheckIt function</p>
<p>
<pre>
var post_office_message = "We are unable to offer shipping to Post Office addresses for this order.  Please enter your street address for the shipping address."

var po_regex = /^po.*box.*|^p.o..*box.*/i

if(po_regex.test(document.billing.ShipAddress.value)){
alert(post_office_message)
return(false)
}

if(po_regex.test(document.billing.ShipAddress2.value)){
alert(post_office_message)
return(false)
}
</pre>
<p>
This will display the message defined as post_office_message in the script if a PO box is entered in the shipping address 1 or shipping address 2 fields and prevent the customer from checking out until it is removed.  This message can be customized.</p>
<p>If you need to prevent the use of Box as well as PO Box (or P.O. Box) you can replace each instance of the line:</p>
<p>var po_regex = /^po.*box.*|^p.o..*box.*/i;</p>
<p>with:</p>
<p>var po_regex = /^box.*|^po.*box.*|^p.o..*box.*/i;</p>
						]]>
					</description>

					
					
				</item>

			
				<item>
					<guid>https://support.lexiconn.com/news/forums/topic/using-a-pointed-domain-with-shopsite-pages/#post-48775</guid>
					<title><![CDATA[Using a pointed domain with ShopSite pages]]></title>
					<link>https://support.lexiconn.com/news/forums/topic/using-a-pointed-domain-with-shopsite-pages/#post-48775</link>
					<pubDate>Fri, 25 Feb 2011 17:59:29 +0000</pubDate>
					<dc:creator>Anonymous</dc:creator>

					<description>
						<![CDATA[
						<p>ShopSite has the ability to publish files into a folder, and when combined with pointing a domain name to a folder on your hosting account you can use ShopSite to easily create pages for multiple websites at once.</p>
<p><b>Step 1 &#8211; The Pointed Domain</b><br />
To use this method, a folder needs to be created in your /www/ folder (or in the folder ShopSite publishes to) with permissions of &#8220;777&#8243;.  This permission setting allows ShopSite to publish files into the folder.</p>
<p>Example: /home/primary-account/www/new-folder/</p>
<p>You would create the folder and set it&#8217;s permissions using FTP, but if you&#8217;re not familiar with FTP just let us know the name of the folder and we can create it for you.</p>
<p>When you have the folder created just email us it&#8217;s name along with the name of the new domain name and we&#8217;ll configure the domain to point to the new folder.</p>
<p><b>NOTE</b>: For the new domain to point to your account with us, the domain&#8217;s name servers will need to be updated to the following:  ns.serverhost.net, ns2.serverhost.net, ns3.serverhost.net.  That change would be made at the registrar where you purchased the domain name.  We can assist with this change if you&#8217;re unfamiliar with how to do it.</p>
<p><b>Step 2 &#8211; Publishing Files</b><br />
ShopSite can publish files into a folder just by changing the filename for the page.  Whether it&#8217;s a regular page (Edit Page Content > Advanced Info > File Name field) or a More Information page (Edit Product Info> More Info Pages > More Info Page File Name field) you can insert the folder name before the filename.</p>
<p>Example: new-folder/filename.html</p>
<p><b>TIP</b>: Use just the folder name and a &#8220;/&#8221; after it, do not put a &#8220;/&#8221; at the beginning of the folder name.</p>
<p>Now when you publish your site, pages with a folder in front of their name will be created in the specified folder.</p>
<p><b>TIP</b>: Be sure one of your pages has a filename of &#8220;new-folder/index.html&#8221; so when someone visits your domain name a default home page appears.  (Otherwise a filename will need to be entered when they visit the URL.)</p>
<p><b>Step 3 &#8211; Extra Files &#038; Links</b></p>
<p>When you have a domain running from a folder on your account that folder doesn&#8217;t have any of your additional folders inside of it such as the /media/ or /published/ folders.  The HTML code for your pages may try to load images or CSS files from these folders that do not exist.</p>
<p>A way to get around this is to sym-link these folders from your main /www/ folder into the pointed domain folder.  We can setup these sym-links for you upon request.  Additional folders may be needed as well, and your website designer will be able to tell you if your design uses any additional folders which should be sym-linked.</p>
<p><b>Advanced Options</b><br />
If you&#8217;re going to use ShopSite&#8217;s &#8220;Assign Items&#8221; feature and let it build links to pages or products, your templates would need to be updated because ShopSite will use your primary domain name and the folder name when it builds links.</p>
<p>For example: <a href="http://www.primary-account.com/new-folder/file-name.html" rel="nofollow">http://www.primary-account.com/new-folder/file-name.html</a><br />
But you want it to use:  <a href="http://www.pointed-domain.com/file-name.html" rel="nofollow">http://www.pointed-domain.com/file-name.html</a></p>
<p>An option to avoid this is to use a custom page template for the pages on your pointed domain and change this line in the &#8220;[--DEFINE LINK_TO_PAGE--]&#8221; section:</p>
<p><a href="[-- OUTPUT_DIRECTORY_URL --]/[-- PAGE.FileName --]" rel="nofollow"></p>
<p>Change it to use your pointed domain name and an extra Page Field for the filename:</p>
<p></a><a href="http://www.pointed-domain.com/[-- PAGE.Field1 --]" rel="nofollow"></p>
<p>In this example we&#8217;re using Extra Page Field #1 to store the filename (be sure to fill it in when you create the page) and that will allow links to be built correctly when ShopSite publishes.</p>
<p>If you assign products with More Info pages to pages on your pointed domain the same can be done with a custom product template and an extra product field.</p>
<p>Another option would be to use a custom perl script which strips the folder-name out of the URL at the time the page is created and call the script in the template.  This would require the creation of a perl script and a custom template but you would no longer need to use an extra field to store the filename.  We can provide the script and syntax if you choose to go that route.</p>
<p>&#8230;</p>
<p>That&#8217;s all it takes &#8211; a pointed domain, folders in your filenames, and a sym-link or two &#8211; and now you can use ShopSite to publish pages under a different domain name.  You can use this method to create a landing page highlighting a specific product, some regular content pages for a small website, or anything that comes to mind which you want to create with ShopSite.</a></p>
						]]>
					</description>

					
					
				</item>

					
		
	</channel>
	</rss>

