I need some help im stuck at the end of a big project..
Using 1.9
What I'm trying to do is this:
I want to display the related manufacturers in each product box (ProductBox1).
I want to display the product's manufacturers + the manufacturers logos(picture).
In Default, in Manufacturers.aspx there is exactly what I'm trying to achive, only I need to implement this dynamicly for each product and it's own manufacturers.
I tried almost everything, I read every topic in here related to manufacturers...
PLEASE HELP ME :(
Here are the pages codes, may be helpful:
Manufacturers.aspx
<%@ Page Language="C#" AutoEventWireup="true" MasterPageFile="~/MasterPages/ThreeColumn.master"
CodeBehind="Manufacturers.aspx.cs" Inherits="NopSolutions.NopCommerce.Web.ManufacturersPage"
%>
<%@ Register TagPrefix="nopCommerce" TagName="MiniShoppingCartBox" Src="~/Modules/MiniShoppingCartBox.ascx" %>
<%@ Register TagPrefix="nopCommerce" TagName="CategoryNavigation" Src="~/Modules/CategoryNavigation.ascx" %>
<%@ Register TagPrefix="nopCommerce" TagName="ManufacturerNavigation" Src="~/Modules/ManufacturerNavigation.ascx" %>
<%@ Register TagPrefix="nopCommerce" TagName="RecentlyViewedProducts" Src="~/Modules/RecentlyViewedProductsBox.ascx" %>
<asp:Content runat="server" ContentPlaceHolderID="cph1">
<div class="manufacturerlist-page">
<div class="page-title">
<h1>
<%=GetLocaleResourceString("Common.ManufacturerList")%></h1>
</div>
<div class="clear">
</div>
<div class="manufacturer-grid">
<asp:DataList ID="dlManufacturers" runat="server" RepeatColumns="3" RepeatDirection="Horizontal"
RepeatLayout="Table" OnItemDataBound="DlManufacturers_OnItemDataBound" ItemStyle-CssClass="item-box">
<ItemTemplate>
<div class="manufacturer-item">
<h2 class="man-title">
<asp:HyperLink ID="hlManufacturer" runat="server" />
</h2>
<div class="picture">
<asp:HyperLink ID="hlImageLink" runat="server" />
</div>
</div>
</ItemTemplate>
</asp:DataList>
</div>
</div>
</asp:Content>
Manufacturers.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using NopSolutions.NopCommerce.BusinessLogic.Manufacturers;
using NopSolutions.NopCommerce.BusinessLogic.SEO;
using NopSolutions.NopCommerce.BusinessLogic.Media;
using NopSolutions.NopCommerce.BusinessLogic.Configuration.Settings;
using NopSolutions.NopCommerce.BusinessLogic.Infrastructure;
namespace NopSolutions.NopCommerce.Web
{
public partial class ManufacturersPage : BaseNopFrontendPage
{
protected void Page_Load(object sender, EventArgs e)
{
SEOHelper.RenderTitle(this, GetLocaleResourceString("PageTitle.Manufactures"), true);
if(!IsPostBack)
{
dlManufacturers.DataSource = this.ManufacturerService.GetAllManufacturers();
dlManufacturers.DataBind();
}
}
protected void DlManufacturers_OnItemDataBound(object sender, DataListItemEventArgs e)
{
if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
var manufacturer = e.Item.DataItem as Manufacturer;
string manufacturerURL = SEOHelper.GetManufacturerUrl(manufacturer);
var hlImageLink = e.Item.FindControl("hlImageLink") as HyperLink;
if(hlImageLink != null)
{
hlImageLink.ImageUrl = this.PictureService.GetPictureUrl(manufacturer.PictureId, this.SettingManager.GetSettingValueInteger("Media.Manufacturer.ThumbnailImageSize", 125), true);
hlImageLink.NavigateUrl = manufacturerURL;
hlImageLink.ToolTip = String.Format(GetLocaleResourceString("Media.Manufacturer.ImageLinkTitleFormat"), manufacturer.LocalizedName);
hlImageLink.Text = String.Format(GetLocaleResourceString("Media.Manufacturer.ImageAlternateTextFormat"), manufacturer.LocalizedName);
}
var hlManufacturer = e.Item.FindControl("hlManufacturer") as HyperLink;
if(hlManufacturer != null)
{
hlManufacturer.NavigateUrl = manufacturerURL;
hlManufacturer.ToolTip = String.Format(GetLocaleResourceString("Media.Manufacturer.ImageLinkTitleFormat"), manufacturer.LocalizedName);
hlManufacturer.Text = Server.HtmlEncode(manufacturer.LocalizedName);
}
}
}
}
}
ProductBox1.aspx
<%@ Control Language="C#" AutoEventWireup="true" Inherits="NopSolutions.NopCommerce.Web.Modules.ProductBox1Control"
CodeBehind="ProductBox1.ascx.cs" %>
<%@ Register TagPrefix="nopCommerce" TagName="ProductPrice2" Src="~/Modules/ProductPrice2.ascx" %>
<%@ Register TagPrefix="nopCommerce" TagName="ProductInfo" Src="~/Modules/ProductInfo.ascx" %>
<div class="tooltip"><asp:Image ID="Image1" runat="server" /></div>
<div class="product-item">
<h2 class="product-title">
<asp:HyperLink ID="hlProduct" runat="server" />
</h2>
<div class="picture">
<asp:HyperLink ID="hlImageLink" runat="server" />
</div>
<div class="description">
<asp:Literal runat="server" ID="lShortDescription"></asp:Literal>
</div>
<div class="add-info">
<table class="hpptable">
<tr align="center">
<td align="center">
<div class="prices">
<nopCommerce:ProductPrice2 ID="ctrlProductPrice" runat="server" ProductID='<%#Eval("ProductId") %>' />
</div>
</td>
<td align="center">
<div class="buttons">
<asp:Button runat="server" ID="btnProductDetails" OnCommand="btnProductDetails_Click" Text=""
ValidationGroup="ProductDetails"
CommandArgument='<%# Eval("ProductId") %>' CssClass="productgridproductdetailbutton" /><br />
<asp:Button runat="server" ID="btnAddToCart" OnCommand="btnAddToCart_Click" Text=""
ValidationGroup="ProductDetails" CommandArgument='<%# Eval("ProductId") %>' CssClass="productgridaddtocartbutton" />
</div>
</td>
</tr>
</table>
</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>
ProductBox1.aspx.cs
//------------------------------------------------------------------------------
// 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.Threading;
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.Directory;
using NopSolutions.NopCommerce.BusinessLogic.Localization;
using NopSolutions.NopCommerce.BusinessLogic.Manufacturers;
using NopSolutions.NopCommerce.BusinessLogic.Media;
using NopSolutions.NopCommerce.BusinessLogic.Orders;
using NopSolutions.NopCommerce.BusinessLogic.Products;
using NopSolutions.NopCommerce.BusinessLogic.SEO;
using NopSolutions.NopCommerce.BusinessLogic.Tax;
using NopSolutions.NopCommerce.Common.Utils;
using NopSolutions.NopCommerce.BusinessLogic.Infrastructure;
namespace NopSolutions.NopCommerce.Web.Modules
{
public partial class ProductBox1Control: BaseNopFrontendUserControl
{
Product product = null;
public override void DataBind()
{
base.DataBind();
this.BindData();
}
private void BindData()
{
if (product != null)
{
string productURL = SEOHelper.GetProductUrl(product);
hlProduct.NavigateUrl = productURL;
hlProduct.Text = Server.HtmlEncode(product.LocalizedName);
var picture = product.DefaultPicture;
if (picture != null)
{
hlImageLink.ImageUrl = this.PictureService.GetPictureUrl(picture, this.ProductImageSize, true);
hlImageLink.ToolTip = String.Format(GetLocaleResourceString("Media.Product.ImageLinkTitleFormat"), product.LocalizedName);
hlImageLink.Text = String.Format(GetLocaleResourceString("Media.Product.ImageAlternateTextFormat"), product.LocalizedName);
}
else
{
hlImageLink.ImageUrl = this.PictureService.GetDefaultPictureUrl(this.ProductImageSize);
hlImageLink.ToolTip = String.Format(GetLocaleResourceString("Media.Product.ImageLinkTitleFormat"), product.LocalizedName);
hlImageLink.Text = String.Format(GetLocaleResourceString("Media.Product.ImageAlternateTextFormat"), product.LocalizedName);
}
hlImageLink.NavigateUrl = productURL;
lShortDescription.Text = product.LocalizedShortDescription;
var productVariantCollection = product.ProductVariants;
if (productVariantCollection.Count > 0)
{
if (!product.HasMultipleVariants)
{
var productVariant = productVariantCollection[0];
btnAddToCart.Visible = (!productVariant.DisableBuyButton);
if (!this.SettingManager.GetSettingValueBoolean("Common.HidePricesForNonRegistered") ||
(NopContext.Current.User != null &&
!NopContext.Current.User.IsGuest))
{
//nothing
}
else
{
btnAddToCart.Visible = false;
}
}
else
{
btnAddToCart.Visible = false;
}
}
else
{
btnAddToCart.Visible = false;
}
}
}
protected void btnProductDetails_Click(object sender, CommandEventArgs e)
{
int productId = Convert.ToInt32(e.CommandArgument);
string productURL = SEOHelper.GetProductUrl(productId);
Response.Redirect(productURL);
}
protected void btnAddToCart_Click(object sender, CommandEventArgs e)
{
int productId = Convert.ToInt32(e.CommandArgument);
int productVariantId = 0;
if (this.ProductService.DirectAddToCartAllowed(productId, out productVariantId))
{
var addToCartWarnings = this.ShoppingCartService.AddToCart(ShoppingCartTypeEnum.ShoppingCart,
productVariantId, string.Empty, decimal.Zero, 1);
if (addToCartWarnings.Count == 0)
{
bool displayCart = true;
if (this.RedirectCartAfterAddingProduct.HasValue)
displayCart = this.RedirectCartAfterAddingProduct.Value;
else
displayCart = this.SettingManager.GetSettingValueBoolean("Display.Products.DisplayCartAfterAddingProduct");
if (displayCart)
{
//redirect to shopping cart page
Response.Redirect(SEOHelper.GetShoppingCartUrl());
}
else
{
//display notification message
this.DisplayAlertMessage(GetLocaleResourceString("Products.ProductHasBeenAddedToTheCart"));
}
}
else
{
string productURL = SEOHelper.GetProductUrl(productId);
Response.Redirect(productURL);
}
}
else
{
string productURL = SEOHelper.GetProductUrl(productId);
Response.Redirect(productURL);
}
}
public Product Product
{
get
{
return product;
}
set
{
product = value;
}
}
public int ProductImageSize
{
get
{
if (ViewState["ProductImageSize"] == null)
return this.SettingManager.GetSettingValueInteger("Media.Product.ThumbnailImageSize", 125);
else
return (int)ViewState["ProductImageSize"];
}
set
{
ViewState["ProductImageSize"] = value;
}
}
/// <summary>
/// Gets or sets a value whether we redirects a customer to shopping cart page after adding a product to the cart (overrides "Display.Products.DisplayCartAfterAddingProduct" settings)
/// </summary>
public bool? RedirectCartAfterAddingProduct
{
get
{
if (ViewState["RedirectCartAfterAddingProduct"] == null)
return null;
else
return (bool)ViewState["RedirectCartAfterAddingProduct"];
}
set
{
ViewState["RedirectCartAfterAddingProduct"] = value;
}
}
}
}