1

我已經開始構建一個完全不合理的博客引擎,並且本意不被任何​​人使用。所以,用簡單的英語來說,我不能說你自己去爲自己運行,你會很高興。使用ASP.NET MVC編寫的Blog引擎的主題選擇器想法

您可能會看到到目前爲止,我已經寫了完整代碼:

https://github.com/tugberkugurlu/MvcBloggy

雖然現在我在DAL工作,我也試着放下什麼,我需要做的。我卡在這裏的一點是我如何處理博客引擎的主題選擇。

  • 我應該如何開始構建基礎知識?我應該創建一個骨架HTML並讓其他人編寫CSS並基本選擇它嗎?或者是其他東西?
  • 就ASP.NET MVC結構而言,處理此功能的最佳方法是什麼。

我不確定你們有沒有做過這樣的事情。如果您能提供一種方式,我將不勝感激。

回答

1

,我建議你看看NBlog temable博客引擎

https://github.com/ChrisFulstow/NBlog

尤其是看類ThemeableRazorViewEngine.cs

https://github.com/ChrisFulstow/NBlog/blob/master/NBlog.Web/Application/Infrastructure/ThemeableRazorViewEngine.cs

using System.Web.Mvc; 
using NBlog.Web.Application.Service; 

namespace NBlog.Web.Application.Infrastructure 
{ 
public class ThemeableRazorViewEngine : RazorViewEngine 
{ 
    private readonly IThemeService _themeService; 

    public ThemeableRazorViewEngine(IThemeService themeService) 
    { 
     _themeService = themeService; 

     base.ViewLocationFormats = new[] 
     { 
      _themeService.Current.BasePath + "/Views/{1}/{0}.cshtml", 
      _themeService.Current.BasePath + "/Views/Shared/{0}.cshtml", 
      "~/Themes/Default/Views/{1}/{0}.cshtml"     
     }; 

     base.PartialViewLocationFormats = new string[] { 
      _themeService.Current.BasePath + "/Views/{1}/{0}.cshtml", 
      _themeService.Current.BasePath + "/Views/Shared/{0}.cshtml", 
      "~/Themes/Default/Views/Shared/{0}.cshtml" 
     }; 
    } 

    public override ViewEngineResult FindView(ControllerContext controllerContext, string viewName, string masterName, bool useCache) 
    {   
     // bypass the view cache, the view will change depending on the current theme 
     const bool useViewCache = false; 

     return base.FindView(controllerContext, viewName, masterName, useViewCache); 
    } 
} 
} 
0

完全主題網絡應用是一個非常複雜的問題。在你有一個功能性的博客引擎之前,你甚至不應該試圖解決它。

一個簡單而合理的定製實現,允許用戶選擇.css文件,並確保頁面中的所有元素都可以通過適當的ID /類輕鬆地進行尋址/選擇。