3

ページのタイトルと説明をプログラムで設定する方法を知っている人はいますか?

Telerik からこのソリューションを実装しました。

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

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

唯一の問題は、ベース オブジェクト InternalPage がプロパティ Title のみを提供し、説明やキーワードなどの他のメタ フィールドには何も提供しないことです。

よろしく、ジャック

4

2 に答える 2

5

現在、これはページのできるだけ遅い方で行っており、特にタイトル タグについては、必要に応じてタイトルを置き換えたり追加したりできることを確認できます。

    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 コレクションをチェックし、それらを削除/置換することができます。

于 2011-03-31T14:57:08.800 に答える
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;
}

==> このコードをマスター ページにプッシュします。これがお役に立てば幸いです。

于 2014-12-16T07:36:40.433 に答える