Sitefinity - Установить заголовок и описание программно - PullRequest
3 голосов
/ 25 марта 2011

Кто-нибудь знает, как программно установить заголовок и описание страницы?

Я реализовал это решение от Telerik:

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

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

Единственная проблема заключается в том, что базовый объект InternalPageпредоставляет только свойство Title, ничего для других мета-полей, таких как описание или ключевые слова?

С уважением, Жак

Ответы [ 2 ]

4 голосов
/ 31 марта 2011

В настоящее время мы делаем это как можно позже на странице, чтобы убедиться, что мы можем быть уверены, особенно для тега заголовка, что мы можем заменить или добавить заголовок, если это будет необходимо.

    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 голосов
/ 16 декабря 2014

У меня есть решение для вас, что вам не нужно реализовывать «InternalPageCustom», просто используя код Inline на главной странице.

Пример:

<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;
}

==> Нажмите этот код на своей главной странице.Надеюсь, это поможет вам.

...