Snippets
Snippets er mindre filer som kan legges inn i designet og tilføre funksjonalitet og innhold. De er i praksis WebUserControls (ascx-filer) som arver eR2UserControl.
For å lage snippets krever det en viss kjennskap til programmering i ASP.NET. Men det er ofte mulig å gjøre endringer i dem uten å kunne programmere annet enn html.
Her er et Example på en snippet som heter ut hovedmenyen til et nettsted. Den benytter seg av innebygget funksjonalitet i eRedaktør for å hente ut hovedmenyen.
<%@ Control Language="C#" Inherits="eR2UserControl" %>
<%@ Import Namespace="eR2"%>
<ul id="menulist" class="menu">
<%=Renderer.GetMenu(Util.GetSetting<int>("standardmeny"), 2, null, CurrentLanguage) %>
</ul>
Linje 1 er en standardlinje som alltid må være der. Den vil i noen tilfeller inneholde mer informasjon, blant annet når en snippet er delt opp i en kodefil og en designfil.
Linje 2 gir tilgang til innebygd eRedaktør-funksjonalitet.
Linje 3 og 5 er bare html.
Linje 4 kjører en funksjon fra Renderer-klassen og en fra Util-klassen for å hente ut standardmenyen til nettstedet inn i <ul>-listen.
Skille kode og design i samme fil
For å skille kode og design, kan en legge koden i én del av filen og designet i en annen del. Her er et Example som fyller inn tekst og tittelen i en label via kode.
<%@ Control Language="C#" Inherits="eR2UserControl" %>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
lbl.Text = "Her er tittelen til åpnet side: " + CurrentItem.Title;
}
</script>
<div class="infobox">
<div class="infobox-content">
<p>
<asp:Label ID="lbl" runat="server" />
</p>
</div>
</div>
Skille kode og design i to filer
Dersom en har en del kode som skal skrives, og for å gjøre løsningen mest mulig ryddig og oversiktlig, skiller en kode og design i hver sine filer. Her er et Example
OpenGraphPlugin.ascx
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="OpenGraphPlugin.ascx.cs" Inherits="OpenGraphPlugin" %>
OpenGraphPlugin.ascx.cs
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.Common;
using System.Linq;
using eR2;
using System.Web.UI.HtmlControls;
public partial class OpenGraphPlugin : eR2UserControl
{
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
this.Page.PreRender += new EventHandler(Page_PreRender);
}
void Page_PreRender(object sender, EventArgs e)
{
SetTags();
}
protected void Page_Load(object sender, EventArgs e)
{
this.Visible = false;
}
private void SetTags()
{
//Sjekker om det er valgt at denne siden ikke skal indekseres
if (CurrentItem.HasValue("og-meta-description") || CurrentItem.HasValue("og-meta-image"))
{
AddHeaderMetaTagToHeader("og:title", CurrentItem.Title);
AddHeaderMetaTagToHeader("og:type", CurrentItem.GetValue("og-meta-type"));
AddHeaderMetaTagToHeader("og:description", CurrentItem.GetValue("og-meta-description"));
AddHeaderMetaTagToHeader("og:url", CurrentItem.GetValue("og-meta-url"));
AddHeaderMetaTagToHeader("og:image", CurrentItem.GetValue("og-meta-image"));
AddHeaderMetaTagToHeader("og:site_name", Util.GetSetting("sidetittel"));
}
}
private void AddHeaderMetaTagToHeader(string Name, string Content)
{
HtmlGenericControl metaTag = new HtmlGenericControl("meta");
metaTag.Attributes.Add("name", Name);
metaTag.Attributes.Add("content", Content);
this.Page.Header.Controls.Add(metaTag);
}
}