Идея выбора темы для блогового движка, написанного на ASP.NET MVC - PullRequest
1 голос
/ 26 октября 2011

Я начал создавать блог-движок, который абсолютно непрофессиональный и предназначен для использования никем. Поэтому, говоря простым языком, я не могу сказать, что вы продолжаете и запускаете это для себя, и вы будете счастливы.

Вы можете увидеть полный код, который я написал до сих пор:

https://github.com/tugberkugurlu/MvcBloggy

Пока я работаю над DAL , я также пытаюсь определить, что мне нужно сделать. Здесь я застрял в одном месте: как я могу справиться с выбором темы для движка блога.

  • Как мне начать строить основы? Должен ли я создать скелет HTML и позволить другим писать CSS и в основном выбрать это? Или что-то еще?
  • С точки зрения структуры ASP.NET MVC, каков наилучший подход для работы с этой функцией.

Я не уверен, что кто-нибудь из вас, ребята, когда-либо делал что-то подобное. Буду признателен, если вы предоставите способ.

Ответы [ 2 ]

1 голос
/ 26 октября 2011

Я предлагаю вам взглянуть на NBlog изменяемый движок блога

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 голосов
/ 27 октября 2011

Полностью тематическое веб-приложение - очень сложная проблема. Вы даже не должны пытаться решить ее, прежде чем у вас будет функциональный движок блога.

Простая и достаточно простая настройка, позволяющая пользователю выбирать файл .css и обеспечивающая легкую адресацию / выбор всех элементов на странице с помощью соответствующих идентификаторов / классов.

...