Muligheter og tagger i layouts

Layouts benytter ASP.NET MasterPages, og arver dermed de mulighetene som ligger der. Men det er naturligvis lagt til mer eRedaktørspesifikk funksjonalitet som det er nyttig å sette seg inn i.

Vi begynner med et litt omfattende Example som vi plukker fra hverandre lenger nede. Det er fjernet en del html her, slik at vi kan fokusere på mulighetene utover html.

<%@ Master Language="C#" AutoEventWireup="true" Inherits="eR2MasterPage" %>
<%@ Import Namespace="eR2" %>
<!doctype html>
<html>
<head id="Head1" runat="server">
    <meta charset="utf-8" />
    <title><!--e sitename --> - <%:CurrentItem.Title %></title>
    <link rel="stylesheet" href="/site/partner.eredaktor.no/design/layouts/css/style.css" />
    <script defer src="/site/partner.eredaktor.no/design/layouts/js/script.js"></script>
</head>
<body>
    <form id="form1" runat="server">
       <div class="language-top">
            <er:include ID="incSelectLanguage" runat="server" SnippetName="SelectLanguage.ascx" />
       </div>
       <div class="header-col-1">
	<er:link runat="server" LayoutItem="true" Field="redirecturl" AlwaysDisplayContent="true">
	        <er:image runat="server" LayoutItem="true" Field="thumbnail" AltField="title" />
            </er:link>
              </div>
       <div class="header-col-2">
           <er:include ID="SearchSnippet" runat="server" SnippetName="Search.ascx" />
        </div>
        <div class="menu-main">
             <er:include SnippetName="MainMenu.ascx" runat="server" />
        </div>
        <div class="content">
             <asp:ContentPlaceHolder ID="content" runat="server" />
        </div>
        <div class="footer">
             <p><%:eR2.Util.GetSetting("sidetittel") %> &copy; <%=DateTime.Now.Year %></p>
        </div>
     </form>
     <er:include ID="SEOPlugin" SnippetName="SEOPlugin.ascx" runat="server" />
 </body> 
</html>  

 

Her kommer en oversikt over tagger som eRedaktør krever og/eller gir muligheter for.

1. Innholdstag

Alle layouts (og sublayouts) må angi hvor innholdet skal vises. Dette gjøres med en standard tag som ser slik ut:

<asp:ContentPlaceHolder ID="content" runat="server" />

Denne må alltid plasseres mellom form-taggene. Her vises innholdet fra renderingen som brukes til gjeldende element, samt evt. sublayout.

2. Layoutcontent (Nettstedsoppsett)

Layoutcontent er innhold som kommer fra nettstedsoppsettet. Det er ulike nettstedsoppsett per språk, og det er dermed mulig å vise ulike tekster og bilder i designet ut fra språket som er valgt. Det gjør det også lettere for kunden å endre på elementer i designet. På linje 16, 17 og 18  hentes det ut informasjon som er lagret i nettstedsoppsettet. Her kan det brukes funksjonalitet som i en eRedaktør rendering. I Exampleet sjekkes det om thumbnail har en verdi. Dersom den har en verdi vises bildet. Det legges også på en lenke som er angitt i redirecturl-feltet. For å angi at verdien skal hentes fra layoutitem settes LayoutItem="true".

<er:link runat="server" LayoutItem="true" Field="redirecturl" AlwaysDisplayContent="true">
 <er:image runat="server" LayoutItem="true" Field="thumbnail" AltField="title" />
</er:link>

NB! Vær oppmerksom på at det må være minst én <!--e type tag til stede for å bruke denne funksjonaliteten.

3. Snippets

Snippets er WebUserControls (ascx-filer) som settes inn i designet. Det er to måter å gjøre dette på. Enten på den vanlige ASP.NET måten, hvor en først angir stien i toppen av filen, og deretter angir hvor på siden den skal vises. Denne metoden kan gjerne brukes dersom en jobber med siden i Visual Studio og skal gjøre en del utvikling. Den andre måten, som er forenklet for å gjøre det enklere for designere, er å bruke <er:include:

<er:include SnippetName="MainMenu.ascx" runat="server" />

Det er bare å skrive inn navnet på snippeten her for at det skal fungere.

4. Kode / Nuggets

Det er mulig å sette inn kode i en layout på samme måte som en vanlig MasterPage. Det er også mulig å benytte CodeBehind, dersom en skal utvikle en del. Koden som er med i Exampleet her er ganske enkel, og skriver bare ut noen verdier. På linje 7 henter vi ut tittelen til det åpnede elementet, på linje 33 henter vi ut en verdi fra en innstilling, og på linje 35 henter vi ut årstallet. Vær oppmersom på at <%: brukes dersom du ønsker at systemet automatisk skal ta gjøre teksten html-vennlig.

5. Gjeldende element

I avsnittet over ble det nevnt at det er mulig å hente ut tittelen til det åpnede elementet. Det vil si at du kan hente ut tittelen, ingressen eller en annen verdi rett i layouten. Tidligere kunne dette bare gjøres i rendering. For å hente ut verdien til et felt, skriver en for Example slik:

<%:CurrentItem.Title %>

Det er også mulig å hente ut alle andre felt til elementet også. Det vi må være oppmerksomme på her, er at det er forskjell på tabellfelt og attributter. Dersom du bruker VisualStudio med lokal "runtime"-installert eller jobber på en standalone-versjon, vil du automatisk få opp tabellfeltene i intellisense. Tilsvarende får du hjelp dersom du bruker utviklingsverktøyet i eRedaktør. Her vil du også få hjelp til attributtene. Her er et Example på hvordan en henter ut et attributt:

<%:CurrentItem.GetValue("logo") %>

For å kunne bruke GetValue her, krever det at følgende kode står i toppen av siden:

<%@ Import Namespace="eR2" %>