WebSurfer's Home

トップ > Blog 2   |   ログイン
APMLフィルター

「アーカイブ」ページの修正

by WebSurfer 2013年7月31日 12:20

久々の BlogEngine.NET 2.0 の不具合修正の話です。

「アーカイブ」ページのメニュー

「アーカイブ」のページには、上の画像(IE9 とその開発者ツールを重ねて表示)のようにページの上部にハイパーリンク(html の a 要素)でメニューが表示され、これをクリックすると同じページ内の一覧のヘッダまでスクロールするようになっています。

その仕掛けは、上の画像の開発者ツールの html コードを見てください。例えば、メニューの a 要素で href="#cat-AKB48" と設定し、一覧のヘッダの h2 要素で id="cat-AKB48" と設定されているのが分かるでしょうか。

上の画像の html コードは修正後のものなので a 要素の href も h2 要素の id も正しく設定されていますが、修正前は a 要素の href が "#AKB48" となっていた(cat- がない)という不具合がありました。

それを以下のように cat- を追加するようにして修正しました。

archive.aspx.cs の AddCategoryToMenu メソッド

public partial class archive : 
    BlogEngine.Core.Web.Controls.BlogBasePage
{

  // ・・・中略・・・

  private void AddCategoryToMenu(string title)
  {
    HtmlAnchor a = new HtmlAnchor();
    a.InnerHtml = Server.HtmlEncode(title);

    // 2013/7/31 修正
    // バージョン 2.0 の CreateRowHeader メソッドで、
    //
    // h2.Attributes["id"] = 
    //   "cat-" + Utils.RemoveIllegalCharacters(name);
    //
    // と cat- をカテゴリー名の頭に追加したにもかかわらず、
    // ここでは cat- を追加してないので、メニューをクリック
    // しても動かないという不具合あり。以下のように修正:
    //
    // a.HRef = "#" + Utils.RemoveIllegalCharacters(title);
    //          ↓
    a.HRef = "#cat-" + Utils.RemoveIllegalCharacters(title);

    a.Attributes.Add("rel", "directory");

    HtmlGenericControl li = new HtmlGenericControl("li");
    li.Controls.Add(a);
    ulMenu.Controls.Add(li);
  }

  // ・・・中略・・・

}

Tags:

BlogEngine.NET 2.0

About this blog

ここブログ2は日々の出来事、ブログ1はプログラミング関係のトピックスになっています。

Calendar

<<  2024年4月  >>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

View posts in large calendar