2011-03-25 105 views
3

任何人都知道如何以編程方式設置頁面的標題和描述?Sitefinity - 以編程方式設置標題和描述

我實現了這個解決方案從Telerik的:

public class InternalPageCustom : InternalPage 
{ 
    public InternalPageCustom() 
    { 
    } 

    protected override void SetTitle(Telerik.Cms.ICmsPage page) 
    { 
     //base.SetTitle(page); 
     this.Title = "somevalue"; 
    } 
} 

唯一的問題是,基本對象InternalPage只提供了屬性Title,沒有像描述或關鍵字等元字段?

問候, 雅克

+0

您可以編輯發送給SetTitle的Page對象,然後在調用base.SetTitle(page)之前編輯pageTitle。 ? – Younes 2011-03-25 09:10:26

+0

不幸的是,如果我嘗試設置頁面對象說明屬性,我得到以下錯誤:「您不能更改不在交易中的對象的值」 – Jacques 2011-03-25 09:26:23

回答

4

目前,我們在頁面做到這一點儘可能晚,以保證可以確保特別是對於標題標籤,我們可以更換或添加標題如果需要的話。

protected override void OnPreRender(EventArgs e) 
    { 
     var cmsPage = this.Page as CmsPageBase; 
     if (cmsPage != null) 
     { 
      cmsPage.Title = "My Title"; 
      cmsPage.Header.Controls.Add(new LiteralControl("<meta name=\"keywords\" content=\"my key words" /><meta name=\"description\" content=\"My description\" />")); 
     } 

     base.OnPreRender(e); 
    } 

這種方法唯一的問題是,如果有人在Sitefinity後端任何說明或關鍵字填充,那麼這將增加兩個。但是,以上方法可以擴展爲檢查這些標記的Header.Controls集合並刪除/替換它們。

+0

感謝您的答案肖恩。我們選擇使用CreateChildControls覆蓋,我們使用foreach循環來查找標題標記並替換它們的值。我很驚訝Sitefinity廣泛的API不包含這樣的基本需求。 – Jacques 2011-04-04 16:56:32

0

我有你的解決方案,你不需要實現「InternalPageCustom」,只需使用代碼在您的母版頁內聯。

例:

<script runat="server"> 
protected void Page_Load(object sender, EventArgs e) 
{ 
    if (Request.QueryString["id"] == null) 
    { 
     return; 
    } 

    var id = Request.QueryString["id"]; 

    var pageTitle = string.Empty; 
    var pageDescription = string.Empty; 
    var pageKeyword = string.Empty; 

    var propertyId = Guid.Parse(id); 
    if (propertyId != Guid.Empty) 
    { 
     const string culture = "en"; 

     //Method use for get dynamic title, Description and Keyword. 
     PropertyHelper.SetPageInfo(propertyId, culture, out pageTitle, out pageDescription, out pageKeyword); 
    } 

    Page.Title = pageTitle; 
    Page.MetaDescription = pageDescription; 
    Page.MetaKeywords = pageKeyword; 
} 

==>推此代碼到你的母版頁。希望這對你有所幫助。