CakePHP - 뷰 - 테마

PHP 2015. 5. 13. 18:22

테마

테마는 페이지의 모양을 쉽고 빠르게 전환 할 수있게된다는 장점이 있습니다.

테마를 사용하기 위해서는 컨트롤러에서 테마 이름을 지정하십시오.

  class ExampleController extends AppController {
     public $theme = 'Example';
 }

버전 2.1에서 변경 : 버전 2.1 이전에서는 $ this-> viewClass = ‘Theme’라는 설정이 필요했습니다. 2.1이 설정은 필요없고, 일반 View 클래스가 테마를 지원합니다.

또한 테마의 설정이나 변경은 액션 또는 beforeFilter과 beforeRender 등의 콜백 함수 내에서 할 수 있습니다.

  $this -> theme = 'AnotherExample';

테마보기 파일은 /app/View/Themed/ 폴더에 배치해야합니다. Themed 폴더에 테마 이름의 폴더를 작성하십시오. 위의 예에서 말하는 테마는 /app/View/Themed/AnotherExample에 배치하는 형태입니다. 이것은 중용합니다만, CakePHP는 CamelCase 테마 이름을 기대하고 있다는 것을 기억하십시오. 또한 /app/View/Themed/Example/ 아래 /app/View/ 와 똑같은 구조로 하십시오.

예를 들어, Posts 컨트롤러의 edit 액션을위한 뷰 파일은 /app/View/Themed/Example/Posts/edit.ctp입니다. 또한 레이아웃 파일은 /app/View/Themed/Example/Layouts/ 배치됩니다.

뷰 파일을 테마로 찾지 못하면 CakePHP는 /app/View/ 폴더를 찾습니다. 따라서 마스터 뷰 파일을 작성하여 테마 폴더에 덮어 쓰기가 필요한 파일 만 배치하면 잘됩니다.

테마 어셋

테마는 뷰 파일처럼 정적 어셋을 포함 할 수 있습니다. 테마는 webroot 디렉토리에있는 어셋을 얼마든지 필요한만큼 가져올 수 있습니다. 그 결과, 테마 패키징과 배포는 간단하게되어 있습니다. 개발에도 테마 자산에 대한 요청은 Dispatcher에 의해 처리됩니다. 프로덕션 환경에서의 성능을 개선하기 위해 테마의 어셋을 애플리케이션의 webroot 디렉토리에 복사하거나 심볼릭 링크를 붙이는 것이 좋습니다. 자세한 내용은 다음을 참조하십시오.

새로운 테마의 webroot를 사용하려면 app/View/Themed/<themeName>/webroot<path_to_file>과 같은 디렉토리를 테마에 작성하십시오. 디스패쳐 뷰 패스로 부터 올바른 테마 어셋을 검색을 핸들링합니다.

CakePHP의 모든 내장 헬퍼는 테마에 대응하여 자동으로 올바른 경로가 생성됩니다. 뷰 파일처럼 테마 폴더에 파일이없는 경우 기본 webroot 폴더가 기본이 됩니다.

  // 'purple_cupcake'라는 이름의 테마일 경우
 $this -> Html -> css ('main.css');

 // 경로 생성은 다음과 같다
/theme/purple_cupcake/css/main.css

 // 링크
 app/View/Themed/PurpleCupcake/webroot/css/main.css

플러그인과 테마 어셋의 성능을 개선하기

PHP를 통해 어셋을 제공하면 PHP를 통하지 않고 어셋을 제공 한 경우보다 확실히 느리다고 알려져 있습니다. 코어 팀은 최대한 빠른 플러그인과 테마의 자산을 제공하고자 꾸준히 노력하고 있습니다만, 더 고성능이 요구되는 상황이 있을지도 모릅니다. 그런 상황에서 심볼릭 링크를 걸거나 플러그인과 테마의 어셋을 CakePHP에 의해 사용되고있는 app/webroot 경로와 일치하는 디렉터리로 복사하는 것을 추천합니다.

  • app/Plugin/DebugKit/webroot/js/my_file.jsapp/webroot/debug_kit/js/my_file.js가 됩니다.
  • app/View/Themed/Navy/webroot/css/navy.cssapp/webroot/theme/Navy/css/navy.css가 됩니다.

'PHP' 카테고리의 다른 글

CakePHP- View - Helper  (0) 2015.05.14
CakePHP - View - Json 과 XML 뷰  (0) 2015.05.13
CakePHP - View  (0) 2015.05.12
[CakePHP] Controller - Components  (0) 2015.05.08
[CakePHP] Controller - PageController  (0) 2015.05.08
Posted by dewnine
,