2014-02-27 10 views
1

Drupal 모듈을 개발 중입니다. 그 중 일부는 팝업 창을 열고, 일부 요소를 표시하며, JavaScript를 사용하여 입력을 기본 페이지로 다시 전송합니다.Drupal 7 모듈의 컨텐츠에 사용자 정의 페이지 템플릿 적용

작은 창이기 때문에 사이트의 테마에서 전체 테마 테두리를 표시하지 않으려합니다.

드루팔 6에서 I는 다음으로 이것을 달성 할 수 있었다 : 그러나

function MyPopupPageHandler() { 
    @content = "Content..."; 
    //Add additional content to @content; 
    print theme("page", @content); 
} 

드루팔 7 테마() 함수의 두번째 파라미터 I '는 예 배열 및 유료 것으로 예상 본 페이지의 주요 내용을 설정하는 방법을 보여줍니다.

모듈의 사용자 지정 페이지 서식 파일이 제공되면 사이트 테마에 의해 재정의 될 수 있습니다.

내가 알고 싶습니다 :

  1. 어떤 요소 나는 주제() 함수에 전달 배열에 넣어해야합니까?
  2. 템플릿 파일은 무엇이라고해야합니까?
  3. 기본적으로 모듈에 있어야하므로 Drupal에 내 템플릿을 어디에서 찾을 수 있습니까?

제공 할 수있는 도움을 주시면 감사하겠습니다.

제임스

+0

나는이 알아 낸 것 같아요. –

+0

지난 밤에 드루팔 (Drupal)을 프로그래밍하는 방법을 다시 배웠고 D6 기반 접근 방식을 취소하고 다시 시작해야했습니다. 페이지 핸들러는 양식 요소의 배열을 반환해야하며 직접 호출하지 않고 호출하는 함수에 반환해야하므로 theme() 함수를 직접 호출 할 필요가 없습니다. hook_theme 함수에서 필자는 사용할 템플릿을 설정할 수있었습니다. 나는 누군가에게 도움이 될 경우에 대비하여 더 자세한 설명을 게시 할 것입니다. –

답변

0

1) theme() 두번째 파라미터 연관 배열해야한다. 함수는 다음과 같아야합니다.

function MYMODULE_custom_function() { 
    $content = "Some stuff"; 
    return theme('MYMODULE_custom_output', array('content' => $content)); 
} 

2) "템플릿 파일을 어디에 호출해야합니까?" 당신 같은 .module 파일의 hook_theme() 함수에서 :

function MYMODULE_theme() { 
    return array(
    'MYMODULE_custom_output' => array(
     'variables' => array('content' => array()), 
     // You can also use template file here : 'template' => 'MYMODULE-template' 
     // OR use the following theme_function() if you don't want to create a new file 
    ), 
); 
} 

// If you don't use template file 
function theme_MYMODULE_custom_output($variables) { 
    $output = // Arrange your html output here 
    return $output; 
} 

3) 하나를 사용하기로 결정한 경우 사용자 지정 서식 파일을 찾을 위치를 알려, 당신이 이것을 읽을 수 있습니다 https://drupal.org/node/715160 그리고 그것이 도움이되기를 바랍니다. 내가 드루팔 여전히 새로운 그리고 난 여기에 내 최선을 다하려고 않았기 때문에

관대하게 유지하십시오 : O) 모든 .module 파일 메뉴를 만들의

2

이 먼저 시도

function MYMODULE_menu() 
{ 
    $items['Demo'] =array(
      'title' => 'Demo Page', 
      'page callback' => 'demo_page', // call a function 
      'access arguments' => array('access content'), 
    ); 
    return $items; 

} 

당신은 내가 테마 기능을 만들도록 한 후 함수를

function demo_page() 
{ 
    $select = db_select('node', 'n'); 
    $select = $select->fields('n', array('id')) 
    ->extend('PagerDefault'); 

    $queried_nodes = $select->execute() 
    ->fetchAllAssoc('id'); 
    $pager = theme('pager'); 

    return theme('demo_template', array('nodes' => $queried_nodes , 'pager' => $pager)); // call a theme or you have no pass any argument in theme to change a 'nodes'=> NULL or 'pager'=>NULL 
} 

을 만들도록 한 후

function MYMODULE_theme() 
{ 
    return array(
     'demo_template' => array(
     'template' => 'demo-page',//this is file name of template file 
     'variables' => array('nodes' => NULL,'pager' => NULL), //this is pass avarible of templates file 
     'path' => drupal_get_path('module', 'MYMODULE_NAME').'/template' // set a path of file 
    ), 
); 

} 

당신이 사이트에서 데모 page.tpl.php 같은 파일 이름을 만들도록 한 후/모든/모듈/MYMODULENAME/템플릿/

분명 캐시는