theme_support: Rails 응용 에 theme 지원 추가

theme_support: Rails 응용 에 theme 지원 추가
from LetRails by
yuanyi
theme_슈퍼 port 는 Matt McCray 레일 스 애플 리 케 이 션 에 Typo 와 유사 한 theme 관 리 를 추가 하 는 플러그 인 으로 Typo, 지원 liquid 과 erb 템 플 릿 과 유사 합 니 다.
설치 하 다.
$ script/plugin install http://mattmccray.com/svn/rails/plugins/theme_support
쓰다
1. 테마 생 성
$ script/generate theme [theme_name]
이것 은 Rails 응용 프로그램 과 디 렉 터 리 아래 themes 폴 더 를 만 듭 니 다:
app_root   themes/     [theme_name]       layouts/ <- layout .rhtml or .liquid templates       images/       stylesheets/       javascripts/       views/ <- you can override application views       about.markdown       preview.png
2. 그리고 app / views 디 렉 터 리 에 있 던 템 플 릿 파일 을 themes / [theme name] / views 로 옮 기 고 layots 에 있 는 파일 도 템 플 릿 으로 옮 겨 야 합 니 다. 물론 관련 CSS, JS, 그림 등 도 있 습 니 다.
3. 테마 에 있 는 JS, CSS, 이미지 인용 을 다음 경로 로 변경 해 야 합 니 다.
Image: /theme/:theme_name/images/:image_file JS: /theme/:theme_name/javascripts/:image_file CSS: /theme/:theme_name/stylesheets/:image_file
erb 를 사용 하면 아래 helper 를 사용 할 수 있 습 니 다:
  • theme_image_tag(filename)
  • theme_image_path(filename)
  • theme_javascript_include_tag(filename)
  • theme_javascript_path(filename)
  • theme_stylesheet_link_tag(filename)
  • theme_stylesheet_path(filename)

  • liquid 에 도 helper: themeitem 이 있 습 니 다.

    다음 으로 변 환 됩 니 다:

    4. 사용 할 테 마 를 지정 합 니 다:
    class ApplicationController
      layout 'fire'
      theme 'demo'
    end

    filter 에서 현재 사용자 의 설정 에 따라 그 theme 를 동적 으로 결정 할 수 있 습 니 다.
    class ApplicationController
      before_filter :set_theme
      def set_theme
        theme current_user.theme
      end
    end

    Rails 2.1
    만약 당신 이 Rails 2.1 을 사용한다 면, 당신 은 일 을 좀 더 해 야 합 니 다.
    1. 우선 routeset 수정ex. rb, draw 와 createtheme_routes 는 다음 과 같은 정의 로 바 뀌 었 습 니 다.
    def draw
      old_routes = @routes
      @routes = []
      begin
        create_theme_routes
        yield Mapper.new(self)
        install_helpers
      rescue
        @routes = old_routes
        raise
      end
    end
    def create_theme_routes
      # Added patch from D.J. Vogel that changes :filename to *filename … allowing sub-folders
      add_named_route ‘theme_images’, “/themes/:theme/images/*filename”, :controller=>’theme’, :action=>’images’
      add_named_route ‘theme_stylesheets’, “/themes/:theme/stylesheets/*filename”, :controller=>’theme’, :action=>’stylesheets’
      add_named_route ‘theme_javascript’, “/themes/:theme/javascript/*filename”, :controller=>’theme’, :action=>’javascript’
      add_route “/themes/*whatever”, :controller=>’theme’, :action=>’error’
    end

    2. 그리고 actionview 수정ex. rb, renderfile 을 다음 과 같이 정의 합 니 다.
    def render_file(template_path, use_full_path = true, local_assigns = {})
      ["#{RAILS_ROOT}/themes/#{controller.current_theme}/views", # for normal views
        "#{RAILS_ROOT}/themes/#{controller.current_theme}" # for layouts
       ].each do |prefix|
        @finder.prepend_view_path(prefix)
      end
      __render_file(template_path, use_full_path, local_assigns)
    end

    3. 질문 이 있 으 면 댓 글 을 환영 합 니 다. 제 가 뭘 빠 뜨 렸 나 봐 요.

    좋은 웹페이지 즐겨찾기