2011-03-25 100 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; 
} 

==>推此代码到你的母版页。希望这对你有所帮助。