2017-09-12 14 views
0

사용자 지정 모듈에서 만든 사용자 지정 양식을 템플릿으로 만들려고했으나 .tpl.php를 호출 할 수 없습니다.Drupal 7 테마가 호출되지 않았습니까?

내 테마 template.php 파일에있는 내 함수는 다음과 같습니다. drupal/사이트/모든/테마/atheme) :

function atheme_theme() { 
return array(
    // Defines the form ID as a theme hook. 
    'agendize_multistep_form' => array(
    // Specifies 'form' as a render element. 
    'render element' => 'form', 
    'path' => drupal_get_path('theme', 'atheme') . '/templates', 
'template' => 'agendize_multistep_form', 
), 
); 
} 

내 폼 ID는 다음과 같습니다 agendize_multistep_form (나는 drupal_set_message로 확인)

내 템플릿 파일은 아래에 있습니다 :

드루팔/사이트/모든/테마 /atheme/templates/agendize_multistep_form.tpl.php

공백 양식을 표시하려면 빈 tpl을 intentionnaly로 입력하십시오. 그러나이 테마를 재정의 한 적이없는 경우처럼 모든 요소가 표시된 상태로 내 양식에 여전히 캐시 된 캐시가 있습니다.

당신의 도움을위한 Thx

답변

1

아래의 코드가 도움이되기를 바랍니다.

atheme/template.php :

function atheme_theme($existing, $type, $theme, $path) { 
    $items['agendize_multistep_form'] = array(
     'render element' => 'form', 
     'template' => 'agendize_multistep_form', 
     'path' => drupal_get_path('theme', 'atheme') . '/template', 
    ); 

    return $items; 
} 

agendize_multistep_form()

function agendize_multistep_form($form, &$form_state) { 
    $form['first_name'] = array(
     '#type' => 'textfield', 
     '#attributes' => array('placeholder' => t('First name')), 
    ); 
    $form['last_name'] = array(
     '#type' => 'textfield', 
     '#attributes' => array('placeholder' => t('Last name')), 
    ); 
    $form['submit'] = array(
     '#type' => 'submit', 
     '#value' => 'Submit', 
    ); 
    return $form; 
} 

atheme/템플릿/agendize_multistep_form.tpl.php :

<div class="agendize-form"> 
    <div class="firstname"> 
     <?php print render($form['first_name']); ?> 
    </div> 
    <div class="lastname"> 
     <?php print render($form['last_name']); ?> 
    </div> 
    <div class="submit"> 
     <?php print render($form['submit']); ?> 
    </div> 
</div> 

<!-- Render any remaining elements, such as hidden inputs (token, form_id, etc). --> 
<?php print drupal_render_children($form); ?> 

캐시를 지우고 확인하십시오.

+0

당신이 주었던 유일한 차이점은 theme 메소드에 주어진 매개 변수에 관한 것입니다. 나는 캐시를 지운 후에도 테마가 적용되지 않은 채로 이것을 그대로 두었다. 실제로 tpl.php에 아무 것도 넣지 않으면 내 구성 요소가 표시됩니다. tpl이 비어있을 때 공백 페이지를 표시해야합니다. –