2017-09-15 14 views
1

2sxcブログアプリのブログ投稿はFacebookの共有ボタンで適切なタイトルと共有されていません。現在のブログ投稿剃刀はjavascriptでタイトル変更を処理します。 Facebookと検索エンジンはそれを好まない。結果として、彼らは親ページからデフォルトタイトルを得ることになります。修正するには、C#Razorファイル "_Post Details.cshtml"でページタイトルを変更する必要があります。また、og:titleとog:imageメタを追加するとボーナスになります。タイトルを変更してFacebookに追加Facebook OG Meta in Razor

私は十分メタ簡単に構築することができます:

// build facebook meta 
HtmlMeta metaOGTitle = new HtmlMeta(); 
metaOGTitle.Attributes.Add("property", "og:title");  
metaOGTitle.Content = post.Title; 
HtmlMeta metaOGImage = new HtmlMeta(); 
metaOGImage.Attributes.Add("property", "og:image");  
metaOGImage.Content = post.Image.ToLower(); 

トリックは、ページのヘッダへの参照を取得しています。私はいくつかの古い記事を見てきました。私はクリスハモンドから、このコードをしようとしたときに「「DotNetNuke.Framework.CDefaultに型 『System.Dynamic.DynamicObject』を変換することはできません」を取得:

Page.HeaderまたはPage.FindControl( 『ヘッド』)を使用して
DotNetNuke.Framework.CDefault tp = (DotNetNuke.Framework.CDefault)this.Page; 
tp.Title = "This is my page title"; 

参照例外がnullになります。

答えて

3

OK Birsky89 https://gist.github.com/birksy89/c755fd83d0943b5ab94bとPola Edward Change Page Title in DNN Programatically from Razorで、私は合理的に簡潔な解決策をまとめることができました。

"私の投稿Details.cshtml"の先頭にコードを追加しました。それは魅力的です。

@using System.Web.UI.HtmlControls; 

    // build facebook meta 
    HtmlMeta metaOGTitle = new HtmlMeta(); 
    metaOGTitle.Attributes.Add("property", "og:title");  
    metaOGTitle.Content = post.Title; 
    HtmlMeta metaOGImage = new HtmlMeta(); 
    metaOGImage.Attributes.Add("property", "og:image");  
    metaOGImage.Content = post.Image.ToLower(); 

    // change the title and add facebook meta  
    var pageObj = Context.CurrentHandler as Page; 
    pageObj.Title = post.Title; 
    pageObj.FindControl("Head").Controls.Add(metaOGTitle); 
    pageObj.FindControl("Head").Controls.Add(metaOGImage); 
+0

嬉しいです。この質問に答えてマークを付けると、ユーザーはメリットが得られます。 – iJungleBoy