任何人都知道如何以编程方式设置页面的标题和描述?
我已经从Telerik实施了这个解决方案:
public class InternalPageCustom : InternalPage
{
public InternalPageCustom()
{
}
protected override void SetTitle(Telerik.Cms.ICmsPage page)
{
//base.SetTitle(page);
this.Title = "somevalue";
}
}
唯一的问题是基础对象InternalPage只提供属性Title,没有其他元字段如描述或关键字?
此致 雅克
答案 0 :(得分: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集合中的那些标签并删除/替换它们。
答案 1 :(得分:0)
我为您提供解决方案,您无需实施&#34; InternalPageCustom&#34;,只需在母版页中使用代码内联。
例如:
<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;
}
==&GT;将此代码推送到您的母版页。希望这能帮助你。