Lev-IT-áció

Ez a kis Blog IT fejlesztéshez kapcsolódó témaköröket fog boncolgatni, amelyeket igyekezni fogok gyakorlatiasan megfogalmazni, elemelkedve az elméleti síkról.

Rólam azt kell tudni, hogy már évek óta fejlesztek nagyvállalati, banki egyedi szoftvereket és hát mit mondjak szeretem ezt a szakmát.

A blog témájába beleesik a szembejövő kisebb-nagyobb probléma körök tárgyalása ugyanúgy mint a különböző példakód jellegű „móriczka” kódolás, egyes technológiák bemutatásáról. Így bizony felfog tűnni a blogban az érdeklődési körömbe eső összes technológia – előbb utóbb ;). Ezek a teljesség igénye nélkül (mire is lehet itt számítani):
- .Net programozás. (VB.Net, C#.Net, ASP.NET)
- SQL programozás
- Ismertebb adatbázis kezelők (MS SQL Server, Oracle)
- Kissé egzotikusabb (kevésbé elterjedt) adatbázis kezelők (PostgreSQL, FireBird)
- Java
- Fejlesztési módszertanok


Fogjátok azt is látni, hogy a fenti témákban vannak nálam jártasabb emberek is, de a magyar nyelvű blog szféra szerintem annyira szegényes ezekben a témakörökben, hogy én még simán beférek ide ;D

Remélem mindenkinek tetszeni fog! :)

Címkék

.net (8) adatbázis (3) ajax (1) asp.net (4) c# (6) debian (1) firebird (1) hash (1) java (1) linux (2) masterpage (1) mono (1) monodevelop (1) ms sql (1) mysql (1) oracle (1) postgresql (4) SHA256 (1) sql (5) szekvencia (1) tomcat (1) tools (1) üzemeltetés (1) visual basic (5) Címkefelhő

ASP.NET - Metaadat és MasterPage

2011.03.30. 10:25 :: apriliars

Biztos más is találkozott már azzal a problémával, hogy a kereső optimalizációban alul/túl értékelt (mindenki ízlése szerint választhat) metaadatokat nem is olyan egyszerű az ASP.NET oldalhoz adni, ha MasterPage-t használunk (az esetek kb 90%) és oldalanként eltérő metaadatot kellene kezelni.

A .Net 4 alatt már megoldották a problémát, a Page direktíva okosításával, de a korábbi verziókban (amelyek még rengeteg helyen futnak) ez még gondot okoz.

Mi lehet a megoldás?

1) Adjuk a master page head szakaszában a következőket:

<asp:ContentPlaceHolder id="MetaDescription" runat="server" Visible="false"></asp:ContentPlaceHolder>
<asp:ContentPlaceHolder ID="MetaKeywords" runat="server" Visible="false"></asp:ContentPlaceHolder>


2) Ennyivel még nem hagyjuk békén a master page-t! Váltsunk kód nézetre, és írjuk a következő kis laza kódot.

Private description As HtmlMeta
Private keywords As HtmlMeta

Protected Overrides Sub OnInit(ByVal e As EventArgs)
MyBase
.OnInit(e)

    'Esemény kezelők létrehozása
    AddHandler Me.MetaDescription.Load, New EventHandler(AddressOf MetaDescriptionLoad)
    AddHandler Me.MetaKeywords.Load, New EventHandler(AddressOf MetaKeywordsLoad)
    AddHandler Me.Page.LoadComplete, New EventHandler(AddressOf PageLoadComplete)

End Sub

'Felolvassuk a PlaceHolderbe megadott szöveget
Private Function GetContent(ByVal holder As ContentPlaceHolder) As String
    If holder Is Nothing OrElse holder.Controls.Count = 0 Then
        Return String.Empty
    End If

    Dim control As LiteralControl = TryCast(holder.Controls(0), LiteralControl)
    If control Is Nothing OrElse String.IsNullOrEmpty(control.Text) Then
        Return String.Empty
    End If

    Return control.Text.Trim()

End Function

'Description Meta adatok összeállítása
Private Sub MetaDescriptionLoad(ByVal sender As Object, ByVal e As EventArgs)

    Dim content As String = Me.GetContent(Me.MetaDescription)

    If String.IsNullOrEmpty(content) Then
        Return
    End If

    Me.description = New HtmlMeta()
    Me.description.Name = "description"
    Me.description.Content = content

End Sub

'Keywords adatok összeállítása
Private Sub MetaKeywordsLoad(ByVal sender As Object, ByVal e As EventArgs)

    Dim content As String = Me.GetContent(Me.MetaKeywords)

    If String.IsNullOrEmpty(content) Then
        Return
    End If

    Me.keywords = New HtmlMeta()
    Me.keywords.Name = "keywords"
    Me.keywords.Content = content

End Sub

'Page-hez hozzáadása
Private Sub PageLoadComplete(ByVal sender As Object, ByVal e As EventArgs)

    Dim page As Page = TryCast(sender, Page)

    If page Is Nothing Then
        Return
    End If

    If Me.description IsNot Nothing Then
        page.Header.Controls.Add(
Me.description)
    End If

    If Me.keywords IsNot Nothing Then
        page.Header.Controls.Add(
Me.keywords)
    End If

End Sub

Ja ami még fontos! Importok:

Imports System.Web.UI.WebControls
Imports
System.Web.UI.HtmlControls

3) Na. De az egészet azért csináltuk, hogy oldalanként megadható legyen. Szóval a fogjuk a Web Content Form-unkat és adjuk meg a kívánt meta tagek-et a PlaceHolderek-ben.

<asp:Content ID="Content1" ContentPlaceHolderID="MetaDescription" runat="server">Jó kis szöveges leírás jön az oldalról</asp:Content>
<
asp:Content ID="Content2" ContentPlaceHolderID="MetaKeywords" runat="server">itt a kifejezések, vesszővel elválasztva, felsorolva</asp:Content>

Más dolgunk nincs, mint a megjelenő oldal forrás nézetében ellenőrízni, hogy jól dolgoztunk-e :)

Hát ennyi! Remélem hasznos volt! :)

Szólj hozzá!

Címkék: asp.net visual basic masterpage

A bejegyzés trackback címe:

https://lev-it-acio.blog.hu/api/trackback/id/tr432784413

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása