ProductInfo.ascx
<%@ Control Language="C#" AutoEventWireup="True" Inherits="NopSolutions.NopCommerce.Web.Modules.ProductInfoControl"
CodeBehind="ProductInfo.ascx.cs" %>
<%@ Register TagPrefix="nopCommerce" TagName="ProductShareButton" Src="~/Modules/ProductShareButton.ascx" %>
<script language="javascript" type="text/javascript">
function UpdateMainImage(url, bigurl) {
var imgMain = document.getElementById('zoom1');
imgMain.href = url;
}
function showHref(elementID) {
document.getElementById('fullview').href = document.getElementById(elementID).href;
document.getElementById('fullview').title = document.getElementById(elementID).title;
}
</script>
<script src="../Scripts/cloud-zoom.1.0.2.min.js" type="text/javascript"></script>
<link href="../App_Themes/Majige_custom/cloud-zoom.css" rel="stylesheet" type="text/css" />
<div class="product-details-info">
<div class="picture">
<%-- <a href="" class='cloud-zoom' id="zoom1" rel="position: 'inside' , showTitle: false, adjustX:0, adjustY:0 " runat="server">
</a--%>
<asp:HyperLink ClientIDMode="Static" NavigateUrl="" CssClass='cloud-zoom' ID="zoom1" runat="server">
<asp:Image ID="defaultImage" runat="server" />
</asp:HyperLink>
</div>
<div class="overview">
<h1 class="productname">
<asp:Literal ID="lProductName" runat="server" />
</h1>
<div class="shortdescription">
<asp:Literal ID="lShortDescription" runat="server" />
</div>
<div class="clear">
</div>
<asp:PlaceHolder runat="server" ID="phManufacturers">
<div class="manufacturers">
<asp:Literal ID="lManufacturersTitle" runat="server" />
<asp:Repeater runat="server" ID="rptrManufacturers">
<ItemTemplate>
<asp:HyperLink ID="hlManufacturer" runat="server" Text='<%#Server.HtmlEncode(Eval("LocalizedName").ToString()) %>'
NavigateUrl='<%#SEOHelper.GetManufacturerUrl((Manufacturer)(Container.DataItem)) %>' />
</ItemTemplate>
<SeparatorTemplate>
,
</SeparatorTemplate>
</asp:Repeater>
</div>
</asp:PlaceHolder>
<div class="clear">
</div>
<a id="fullview" href="" rel="lightbox-p" title="">View Full Size Image</a>
<asp:ListView ID="lvProductPictures" runat="server" GroupItemCount="3">
<LayoutTemplate>
<div class="thumbnails">
<asp:PlaceHolder runat="server" ID="groupPlaceHolder"></asp:PlaceHolder>
</div>
</LayoutTemplate>
<GroupTemplate>
<asp:PlaceHolder runat="server" ID="itemPlaceHolder"></asp:PlaceHolder>
</GroupTemplate>
<ItemTemplate>
<a id="" onclick="showHref(this.id);" href="<%#this.PictureService.GetPictureUrl((Picture)Container.DataItem)%>"
class="cloud-zoom-gallery" title='<%= lProductName.Text%>' rel="useZoom: 'zoom1', smallImage: '<%#this.PictureService.GetPictureUrl((Picture)Container.DataItem, 350)%>' ">
<img src="<%#this.PictureService.GetPictureUrl((Picture)Container.DataItem, 50)%>"
alt="Product image" /></a>
</ItemTemplate>
</asp:ListView>
<div class="clear">
</div>
<div class="fulldescription">
<asp:Literal ID="lFullDescription" runat="server" />
</div>
<nopCommerce:ProductShareButton ID="ctrlProductShareButton" runat="server" />
</div>
<script type="text/javascript">
var i = 1;
$(".thumbnails a").each(function () {
$(this).attr('id', '' + i + '');
i++;
});
$(document).ready(function () {
$('#1').click();
});
</script>
</div>
Code Behind
//------------------------------------------------------------------------------
// The contents of this file are subject to the nopCommerce Public License Version 1.0 ("License"); you may not use this file except in compliance with the License.
// You may obtain a copy of the License at https://www.nopcommerce.com/License.aspx.
//
// Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.
// See the License for the specific language governing rights and limitations under the License.
//
// The Original Code is nopCommerce.
// The Initial Developer of the Original Code is NopSolutions.
// All Rights Reserved.
//
// Contributor(s): _______.
//------------------------------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration;
using System.Data;
using System.Text;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using NopSolutions.NopCommerce.BusinessLogic;
using NopSolutions.NopCommerce.BusinessLogic.Configuration.Settings;
using NopSolutions.NopCommerce.BusinessLogic.Manufacturers;
using NopSolutions.NopCommerce.BusinessLogic.Media;
using NopSolutions.NopCommerce.BusinessLogic.Products;
using NopSolutions.NopCommerce.Common.Utils;
using NopSolutions.NopCommerce.BusinessLogic.Infrastructure;
namespace NopSolutions.NopCommerce.Web.Modules
{
public partial class ProductInfoControl : BaseNopFrontendUserControl
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
zoom1.Attributes.Add("rel", "position: 'inside' , showTitle: false, adjustX:0, adjustY:0 ");
BindData();
}
protected void BindData()
{
var product = this.ProductService.GetProductById(this.ProductId);
if (product != null)
{
lProductName.Text = Server.HtmlEncode(product.LocalizedName);
lShortDescription.Text = product.LocalizedShortDescription;
lFullDescription.Text = product.LocalizedFullDescription;
//manufacturers
List<Manufacturer> manufacturers = new List<Manufacturer>();
foreach (var pm in product.ProductManufacturers)
{
var manufacturer = pm.Manufacturer;
if (manufacturer != null)
manufacturers.Add(manufacturer);
}
if (manufacturers.Count > 0)
{
if (manufacturers.Count == 1)
{
lManufacturersTitle.Text = GetLocaleResourceString("Products.Manufacturer");
}
else
{
lManufacturersTitle.Text = GetLocaleResourceString("Products.Manufacturers");
}
rptrManufacturers.DataSource = manufacturers;
rptrManufacturers.DataBind();
}
else
{
phManufacturers.Visible = false;
}
//pictures
var pictures = this.PictureService.GetPicturesByProductId(product.ProductId);
if (pictures.Count > 1)
{
defaultImage.ImageUrl = this.PictureService.GetPictureUrl(pictures[0], this.SettingManager.GetSettingValueInteger("Media.Product.DetailImageSize", 300));
defaultImage.ToolTip = String.Format(GetLocaleResourceString("Media.Product.ImageAlternateTextFormat"), product.LocalizedName);
defaultImage.AlternateText = String.Format(GetLocaleResourceString("Media.Product.ImageAlternateTextFormat"), product.LocalizedName);
lvProductPictures.DataSource = pictures;
lvProductPictures.DataBind();
}
else if (pictures.Count == 1)
{
defaultImage.ImageUrl = this.PictureService.GetPictureUrl(pictures[0], this.SettingManager.GetSettingValueInteger("Media.Product.DetailImageSize", 300));
defaultImage.ToolTip = String.Format(GetLocaleResourceString("Media.Product.ImageAlternateTextFormat"), product.LocalizedName);
defaultImage.AlternateText = String.Format(GetLocaleResourceString("Media.Product.ImageAlternateTextFormat"), product.LocalizedName);
lvProductPictures.Visible = false;
}
else
{
defaultImage.ImageUrl = this.PictureService.GetDefaultPictureUrl(this.SettingManager.GetSettingValueInteger("Media.Product.DetailImageSize", 300));
defaultImage.ToolTip = String.Format(GetLocaleResourceString("Media.Product.ImageAlternateTextFormat"), product.LocalizedName);
defaultImage.AlternateText = String.Format(GetLocaleResourceString("Media.Product.ImageAlternateTextFormat"), product.LocalizedName);
lvProductPictures.Visible = false;
}
if (this.SettingManager.GetSettingValueBoolean("Media.Product.DefaultPictureZoomEnabled", false))
{
var picture = product.DefaultPicture;
if (picture != null)
{
//lnkMainLightbox.Attributes["href"] = this.PictureService.GetPictureUrl(picture);
//lnkMainLightbox.Attributes["rel"] = "lightbox-pd";
zoom1.Attributes.Add("rel", "position: 'inside' , showTitle: false, adjustX:0, adjustY:0 ");
zoom1.Attributes["href"] = this.PictureService.GetPictureUrl(picture);
}
}
}
else
this.Visible = false;
}
protected override void OnPreRender(EventArgs e)
{
BindJQuery();
string slimBox = CommonHelper.GetStoreLocation() + "Scripts/slimbox2.js";
Page.ClientScript.RegisterClientScriptInclude(slimBox, slimBox);
base.OnPreRender(e);
}
public int ProductId
{
get
{
return CommonHelper.QueryStringInt("ProductId");
}
}
}
}