Blog にアップロードしたイメージファイルを自動でサムネイル化してくれる Thumbnailer ですが
デフォルトではすべてのサムネイルが \AppData\files\Thumbnails\ フォルダに保存されてしまいます

これではサムネイルが同じフォルダにひたすらたまってしまって困るので
コードを少しいじって普通のイメージのように保存した年月ごとにフォルダ分けされるようにコードを書き換えます

書きかえる個所は static Thumbnailer() にある absoluteThumbnailPath のパス取得設定です。
ここは通常 "/files/" + ThumbnailPath になっているのですが、これを以下のように年月を付け加えるように変更します。 
また作例されたサムネイルを参照するタグの生成部分も、同様に年月を加えるように変更します。

    static Thumbnailer()
    {
        absoluteThumbnailPath = HttpContext.Current.Server.MapPath(BlogSettings.Instance.StorageLocation + "/files/" + DateTime.Now.ToString("yyyy/MM") + "/" + ThumbnailPath + "/");
    }

    private static HtmlImageTag CreateThumbnail(HtmlImageTag tag, Dictionary<string, string> thumbnailSettings)
    {
    //....
        thumbnailTag.Source = Utils.RelativeWebRoot + "image.axd?picture=/" + DateTime.Now.ToString("yyyy/MM") + "/" + ThumbnailPath + "/" + HttpUtility.UrlEncode(newFilename);
    //....
    }

これでめでたくサムネイルを保存するパスが変更されて
元のイメージが保存されているフォルダのサブフォルダとしてサムネイルを管理できます

Currently rated 5.0 by 1 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Thumbnail Extension

2008-11-09

BlogEngine.NET 定番な感じの自動サムネイル作成エクステンションを入れてみました。

インストール方法は Extension のコードファイルを \AppCode\Extension\ にコピーするだけです。
あとはイメージをアップしたときにイメージの html を編集して、

<a href="ファイル名.jpg[thumb:height=200,link=original]" />

といったように href 属性内にサムネイルのサイズやリンク方法を指定すると
自動的にサムネイルを作成して \AppData\files\Thumbnail\ に保存、
そのサムネイルを本文に表示して、元のイメージへリンクしてくれます。

http://blog.data-worx.de/page/Extension-Thumbnailer.aspx

Currently rated 5.0 by 1 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Indigo テーマを使っていると、日付の表示がなじみのない形式になってしまうので、
テーマを直接書き換えて表示される日付フォーマットを変更しました。

/themes/indigo/ に PostView.ascx と CommentView.ascx があるので、

// 日本では使われない形式
DateCreated.ToString("MMMM yyyy dd, HH:mm") 

// 標準的な24時間表示
DateCreated.ToString("yyyy-MM-dd HH:mm")

と変更して、日付の表示を変えてみました。

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

BlogEngine.NET 1.4.5.7 だと、Indigo テーマにバグがあってタイトル名の表示が変になってしまいます

これはテーマの中で呼び出しているめそっとが間違っているので、
ここを1箇所直せばひとまずタイトルは問題なく表示されます。

直すコードは /themes/indigo/PostView.ascx です

<!-- Post.Title が UrlEncode() されている -->
<h1><a class="postheader taggedlink" href="<%=Post.RelativeLink %>"><%=Server.UrlEncode(Post.Title) %></a></h1>


<!-- Post.Title を HtmlEncode() に変更する -->
<h1><a class="postheader taggedlink" href="<%=Post.RelativeLink %>"><%=Server.HtmlEncode(Post.Title) %></a></h1>

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

BlogEngine.NET 1.4.5.7 は、なぜか Web.Config で CustomErrors Mode="Off" なため、
デフォルトで用意されているエラーハンドリング用ページが使われていません

そこで Web.Config を書き変えてカスタムエラーを有効にし、
さらに .Text からの移行で起きている /archive/ 配下のエラーをハンドルするため、
コードを少し書き変えました。

書き変えたのは error404.aspx.cs で、
PageLoad() メソッドの最初で "/post/" を調べているところを、OR条件で "/archive" も調べるようにして、
これにヒットしたらダイレクトにサーチをかけて、該当トピックの候補が表示されるようにしました。

// 元のメソッド
if (Request.QueryString["aspxerrorpath"] != null && Request.QueryString["aspxerrorpath"].Contains("/post/"))

// 書き変えたメソッド
if (Request.QueryString["aspxerrorpath"] != null && (Request.QueryString["aspxerrorpath"].Contains("/post/") || Request.QueryString["aspxerrorpath"].Contains("/archive/")))

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

BlogEngine.NET 付属の BlogML インポートアプリがかなりバカなんじゃないか疑惑

BlogEngine.NET でエクスポートしたちゃんとした BlogML を再度読み込ませると
BlogML で指定されているいろいろな設定を全部無視してインポートするようだ

Slug や Tags もしっかり全部無視するし、Last Modified なんかは西暦1年だし
なんかかなりいやーんな状態になることが判明

しょうがないので直接 Posts の XML ファイルをなめて書きかえるコードを書いてしまった(死

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

BlogML

2008-09-09

BlogEngine.Net に移行するために .Text のデータベースを
無理やり BlogML に変換して、BlogEngine に取り込んでみました

どうやって BlogML にするか悩んだ結果、
.Text のデータベースを SQL Server 2005 に入れていたので、
T-SQL 1本勝負で強引に BlogML 直接出力をしてみました(爆
# 細かく言うと、CDATA がうまく出なかったので、ちょっとC#コードで変換しましたが

Single Blog なことを前提にしているとか、いくつか決め打ちにしているところがあるのですが
とりあえずちゃんと BlogML な形で XML がでてきます(笑
# 探りながら作った手抜きコードなので汚いのはご愛敬...

/**
[PostType]
1 = Entry
2 = Article
3 = Comment
4 = Trackback
**/

DECLARE @BlogID int
DECLARE @AuthorPrefix int
DECLARE @CategoryPrefix int
DECLARE @RootUrl nvarchar(100)

SET @BlogID = 0
SET @AuthorPrefix = 0
SET @CategoryPrefix = 20000

SET @RootUrl = '/blog/'

SELECT @RootUrl As [root-url], GETDATE() As [date-created],
'http://www.w3.org/2001/XMLSchema' As [xmlns:xs],
(SELECT 1 As [Tag], NULL As [Parent], site.Title As [title!1!!cdata] FROM blog_Config site WHERE site.BlogID = @BlogID FOR XML EXPLICIT, TYPE),
(SELECT 1 As [Tag], NULL As [Parent], subtitle.SubTitle As [sub-title!1!!cdata] FROM blog_Config subtitle WHERE subtitle.BlogID = @BlogID FOR XML EXPLICIT, TYPE),
(SELECT BlogID + @AuthorPrefix As [id], LastUpdated As [date-modified], 'true' As approved, Email As [email],
(SELECT 1 As [Tag], NULL As [Parent], Author As [title!1!!cdata] FROM blog_Config authortitle WHERE author.BlogID = authortitle.BlogID FOR XML EXPLICIT, TYPE)
FROM blog_Config As author
FOR XML AUTO, TYPE) As [authors],
(SELECT category.CategoryID + @CategoryPrefix As [id],
(SELECT 1 As [Tag], NULL AS [Parent], Title As [title!1!!cdata] FROM blog_LinkCategories c2
WHERE c2.Active = 1 AND category.CategoryID = c2.CategoryID
FOR XML EXPLICIT, TYPE)
FROM blog_LinkCategories As category
WHERE category.CategoryType = 1
FOR XML AUTO, TYPE) As categories,
(
SELECT post.ID As id, post.DateAdded As [date-created],
 post.DateUpdated As [date-modified],
 @RootUrl + 'post/' + CAST(post.ID as nvarchar(1000)) + '.aspx' As [post-url],
 'true' As approved,
 CASE WHEN PostType = 2 THEN 'article' ELSE 'normal' END As [type], 'false' As [hasexcerpt],
(SELECT (vc.WebCount + vc.AggCount) As [views] FROM blog_EntryViewCount As vc WHERE vc.EntryID = post.ID AND vc.BlogID = @BlogID) As [views],
(SELECT 1 As Tag, NULL AS Parent, title.Title As 'title!1!!cdata' FROM blog_Content As title WHERE title.ID = post.ID FOR XML EXPLICIT, TYPE),
(SELECT 1 As Tag, NULL AS Parent, contents.Text As 'content!1!!cdata' FROM blog_Content As contents WHERE contents.ID = post.ID FOR XML EXPLICIT, TYPE),
(SELECT 1 As Tag, NULL AS Parent, title.Title As 'post-name!1!!cdata' FROM blog_Content As title WHERE title.ID = post.ID FOR XML EXPLICIT, TYPE),
ISNULL((SELECT category.CategoryID + @CategoryPrefix As ref FROM blog_Links As category WHERE category.PostID = post.ID FOR XML AUTO, TYPE), (SELECT MIN(CategoryID) + @CategoryPrefix As ref FROM blog_LinkCategories As category FOR XML AUTO)) As categories,
ISNULL((SELECT tag.Title As ref FROM blog_Links As category INNER JOIN blog_LinkCategories As tag ON category.CategoryID = tag.CategoryID WHERE category.PostID = post.ID FOR XML AUTO, TYPE), (SELECT tag.Title As ref FROM blog_LinkCategories As tag WHERE tag.CategoryID IN (SELECT MIN(CategoryID) As ref FROM blog_LinkCategories) FOR XML AUTO)) As tags,
(SELECT comment.ID As id, DateAdded As [date-created], DateUpdated As [date-modified], 'true' As approved, Author As [user-name], Email As [user-email], TitleUrl As [user-url], (SELECT 1 As Tag, NULL AS Parent, title.Title As 'title!1!!cdata' FROM blog_Content As title WHERE title.ID = comment.ID FOR XML EXPLICIT, TYPE), (SELECT 1 As Tag, NULL AS Parent, contents.Text As 'content!1!!cdata' FROM blog_Content As contents WHERE contents.ID = comment.ID FOR XML EXPLICIT, TYPE) FROM blog_Content As comment WHERE comment.ParentID = post.ID AND PostType = 3 FOR XML AUTO, TYPE) As comments,
(SELECT trackback.ID As id, DateAdded As [date-created], DateUpdated As [date-modified], 'true' As approved, TitleUrl As [url], (SELECT 1 As Tag, NULL AS Parent, title.Title As 'title!1!!cdata' FROM blog_Content As title WHERE title.ID = trackback.ID FOR XML EXPLICIT, TYPE) FROM blog_Content As trackback WHERE trackback.ParentID = post.ID AND PostType = 4 FOR XML AUTO, TYPE) As trackbacks,
(SELECT authorid.BlogID + @AuthorPrefix As ref FROM blog_config As authorid WHERE authorid.BlogID = @BlogID FOR XML RAW('author'), TYPE) As authors
FROM blog_Content As post
WHERE (PostType IN (1, 2))
FOR XML AUTO, ROOT('posts'), TYPE
)
FOR XML RAW('blog')

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

青柳さんのメモを参考に導入してみました
http://www.divakk.co.jp/blog/aoyagi/archive/2005/06/28/6911.aspx

でも導入は完了したんですが
なぜか他の部分でエラーが出ているらしく
.Text があまりうまく動いていない模様...

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

すでに時間がたってしまっていますが
4/2に発売された翔泳社の Windows Developer Magazine 5月号で
この Blog が p.213 にて紹介されました

今月はいろいろ忙しくて更新できていませんが
今後ともどうぞよろしくお願いします

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

2005/02 の PageView を集計してみました

合計PVは 74311pv でした
28日間しかないので多少少なめかもしれませんね

いずれにしろみなさまご利用ありがとうございます

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Gree User

2004-12-12

いまさらいうことでもないのですが
GREE からこの Blog を見ていただいている方が
Referer を見ていると意外に多いようですね

この Blog でいうのもなんですが
たぶん期待している内容は mixi にあります(笑)

一応こちらはテクノロジ系がメインなので...

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

.Text 復旧

2004-11-01

サーバ側の問題ではなくクライアントのアドインの問題でした(爆)
なんともお騒がせいたしました...

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

.Text 故障中

2004-10-30

いまだにサーバのローカルコンソール以外からは
.Text に投稿できない状況が継続中です

リモートホストから書き込みしようとしてEdit Postページをだして
そこでAdvanced Option のペインを開こうとすると別のページに飛ばされそうになり
そのままページを移動すると /admin/UserControls/ に移動して
"このページの表示が認められていません"という403エラーが発生してます...

う~んなぜに突然こんなことに...

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

.Text 障害発生

2004-10-25

なぜか .Text に書き込みできないという問題が発生中
特にエラーが起きているわけではないのですが...

と思ったらなぜかサーバのローカルコンソールからBlogにアクセスすると
特に問題なく記事を追加できることを発見...

意味不明だ(爆)

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

9月のページビューは 96,649pv でした

cham-reo.com をご覧いただきどうもありがとうございます

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5