How do I add meta tags?

From AbleCommerce Wiki
Revision as of 06:39, 8 September 2008 by Mazhar (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Problem

How do i add meta tags on the static pages?

Solution

In order to add the meta tags easily to AC7.0 first we must customized and provide some GUI support for this feature. For this purpose create a page MetaTags.aspxand its contents would be

<%@ Page Language="C#" MasterPageFile="Product.master" Title="Meta Tags" Inherits="CommerceBuilder.Web.UI.AbleCommerceAdminPage" %>
<%@ Register Assembly="CommerceBuilder.Web" Namespace="CommerceBuilder.Web.UI.WebControls" TagPrefix="cb" %>
<%@ Register Assembly="ComponentArt.Web.UI" Namespace="ComponentArt.Web.UI" TagPrefix="ComponentArt" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<%@ Import Namespace="System.Data" %>
<script runat="server">

    int _ProductId;
    Product _Product;
    
    protected void Page_Load()
    {
        if (!Page.IsPostBack)
        {
            Populate();
        }
    }

    protected void SaveHeader(Object s, EventArgs e)
    {
        _ProductId = AlwaysConvert.ToInt(Request.QueryString["ProductId"]);
        _Product = ProductDataSource.Load(_ProductId);
        _Product.HtmlHead = HTMLBox.Text;
        _Product.Save();
        Populate();
    }

    protected void RegenerateHeader(Object s, EventArgs e)
    {
        String Header = "";
        Header += "<title>" + PageTitle.Text + "</title>" + Environment.NewLine;
        Header += "<meta name='description' content='" + MetaDescription.Text + "'>" + Environment.NewLine;
        Header += "<meta name='keywords' content='" + MetaKeywords.Text + "'>" + Environment.NewLine;
        HTMLBox.Text = Header;
    }

    protected void Populate()
    {
        _ProductId = AlwaysConvert.ToInt(Request.QueryString["ProductId"]);
        _Product = ProductDataSource.Load(_ProductId);
        int titleStart;
        int titleEnd;
        int descStart;
        int descEnd;
        int keyStart;
        int keyEnd;
        String Header = "";
        String TitleTag = "";
        String MetaDesc = "";
        String MetaKey = "";
        Header = _Product.HtmlHead;
        if (Header.Length > 0)
        {
            titleStart = Header.IndexOf("<title>") + 7;
            titleEnd = Header.IndexOf("</title>");
            if (titleStart > 0 && titleEnd > 0 && titleEnd > titleStart)
                TitleTag = Header.Substring(titleStart, titleEnd - titleStart);
            descStart = Header.IndexOf("<meta name='description' content='") + 34;
            descEnd = Header.IndexOf("'>", descStart);
            if (descStart > 0 && descEnd > 0 && descEnd > descStart)
                MetaDesc = Header.Substring(descStart, descEnd - descStart);
            keyStart = Header.IndexOf("<meta name='keywords' content='") + 31;
            keyEnd = Header.IndexOf("'>", keyStart);
            if (keyStart > 0 && keyEnd > 0 && keyEnd > keyStart)
                MetaKey = Header.Substring(keyStart, keyEnd - keyStart);
        }
        HTMLBox.Text = Header;
        PageTitle.Text = TitleTag;
        MetaDescription.Text = MetaDesc;
        MetaKeywords.Text = MetaKey; 
    }
    
    

</script>
<asp:Content ID="Content3" ContentPlaceHolderID="MainContent" Runat="Server">
<div class="pageHeader">
    <div class="caption">
        <h1><asp:Localize ID="Localize1" runat="server" Text="Meta Tags"></asp:Localize></h1>
    </div>
<div class="Content" style="padding:40px; border:1px solid blue;">
    <table width="90%">
        <tr>
            <td width="20%">
                <asp:Label Font-Bold="true" ID="HTMLBoxLabel" runat="server" Text="HTML Header"></asp:Label>
            </td>
            <td>
                <asp:TextBox ID="HTMLBox" TextMode="MultiLine" runat="server" Columns="100" Height="100"></asp:TextBox>
            </td>
        </tr>
        <tr>
            <td width="20%">
                <asp:Label Font-Bold="true" ID="TitleLabel" runat="server" Text="Title Tags"></asp:Label>
            </td>
            <td>
                <asp:TextBox ID="PageTitle" runat="server" Columns="100" Height="20"></asp:TextBox>
            </td>
        </tr>
        <tr>
            <td width="20%">
                <asp:Label Font-Bold="true" ID="MetaDescriptionLabel" runat="server" Text="Meta Description"></asp:Label>
            </td>
            <td>
                <asp:TextBox ID="MetaDescription" runat="server" Columns="100" Height="20"></asp:TextBox>
            </td>
        </tr>
        <tr>
            <td width="20%">
                <asp:Label Font-Bold="true" ID="MetaKeywordsLabel" runat="server" Text="Meta Keywords"></asp:Label>
            </td>
            <td>
                <asp:TextBox ID="MetaKeywords" runat="server" Columns="100" Height="20"></asp:TextBox>
            </td>
        </tr>
    </table>
    <center>
        <asp:Button ID="Regenerate" Text="Regenerate Header" runat="server" OnClick="RegenerateHeader" />
          
        <asp:Button ID="SaveIt" Text="Save" runat="server" OnClick="SaveHeader" />
    </center>
</div>
  
</asp:Content>