2016-11-17 7 views
0

면책 조항 : Drupal에 대한 경험이 전혀없는 Drupal 7.44 사이트를 상속 받았습니다.여러 환경을 가진 웹 폼에 Drupal 템플릿을 묶는 방법은 무엇입니까?

비즈니스는 새로운 웹 폼을 만들기 위해 노력하고 있으며 기존 웹 폼과 똑같이 보이기를 원합니다. 주변을 살펴본 후 webform에 템플릿이 묶여 있음을 발견했습니다. 문서에서 더 많은 템플릿 파일을 webform-form-[nid].tpl.php 형식으로 생성해야하는데, [nid]은 webform 노드 ID입니다.

우리는 모든 변경 사항이 - dev, test 및 finally prod를 통과해야하는 여러 환경이 있습니다. 새로 생성 된 웹 폼의 모든 환경에서 노드 ID가 다를 수 있습니까? 또한 여러 웹 폼에 동일한 템플릿을 적용하려면 여러 개의 동일한 템플릿 파일을 만들어야합니까?

또한 기존 웹 폼에 대한 CSS 스타일을 발견했으며 .webform-client-form-25 button.webform-submit과 같은 모양입니다. 그 25는 노드 ID입니다. 나는 거의 CSS 경험이 없지만, 이것은 정말로 나쁘다. CSS의 블록을 복사하고 노드 ID를 반복해서 변경하고 싶지 않습니다. 재사용 가능한 CSS 클래스를 웹 폼에 할당하는 적절한 방법은 무엇입니까? 양식을 편집 할 때 "표시 관리"에서 "사용자 지정 클래스"를 보았지만 양식의 실제 HTML은 변경되지 않았습니다. 내가 옳은 길에 있었는지, 나는 그것에 대해 몇 가지 문서를 읽어야 하는가?

답변

1

귀하는이 재사용 가능한 레이아웃을 이해하지 못합니다.

각 webform HTML 양식은 기본 클래스 인 .webform-client-form (일반)과 webform의 nid #webform-client-form-<nid>을 포함한 ID를 가져옵니다.

따라서 #webform-client-form-25을 위에서 언급 한 등급으로 변경할 수 있습니다. 이 경우 모두 웹 양식에 영향을 미칩니다.

레이아웃 설정을 모든 웹 폼이 아닌 여러 폼으로 설정하려면 나머지 웹 폼과 구분할 수 있도록 이러한 웹 폼에 클래스를 지정해야합니다. 슬프게도, 웹 양식 모듈 자체는 그렇게 할 수있는 옵션을 제공하지 않습니다,하지만 당신은 양식을 추가 테마의 template.php에 훅을 변경할 수 있습니다 : .my-custom-class

function mytheme_form_alter(&$form, &$form_state, $form_id) { 
    $affected_forms = array('webform_client_form_25', 'webform_client_form_37', [...]); 
    if (in_array($form_id, $affected_forms)) { 
    $form['#attributes']['class'][] = 'my-custom-class'; 
    } 
} 

당신이 다음 단지의 그룹에 대한 CSS를 정의 할 수 있습니다 webform 양식은 $affected_forms입니다.

는 템플릿 파일에 관해서는, 웹 양식 자체가 상태 :

이 파일은 사이트의 "웹 양식 - 형상 - [꾸벅 꾸벅] .tpl.php"대상으로 특정 웹 양식의 이름을 변경 할 수있다. 또는 "webform-form.tpl.php"을 남겨두면 사이트의 모든 웹 폼에 영향을 미칠 수 있습니다.

그래서, 다시는 옵션을 제공하지 않습니다 아웃 - 오브 - 박스,하지만 당신은 페이지 전처리 기능에 $vars['theme_hook_suggestions']을 확장하여 template.php에 테마 제안을 만들 수 있습니다.

+0

감사합니다. 그래도 내가 미리 폼의 코 드를 알아야만하는 것 같습니다. 그 맞습니까? 따라서 향후 웹 양식을 위해 비즈니스 사용자가 다시 사용할 수있는 템플릿을 제공 할 방법이 없습니다. 약간 직관력이없는 것처럼 보입니다. 일반적으로 템플릿은 새로운 특정 인스턴스를 기반으로 할 수있는 일반적인 것으로 생각합니다. – Egor

+0

죄송합니다, 나는 CSS 클래스가 실제로 미리 지정 될 수 없다는 것을 의미한다고 생각합니다. 테마를 사용하여 템플릿을 일반화 할 수있는 것처럼 보입니다. CSS를 무시하거나 양식 변경 후크를 제외하고 다른 방법을 찾으면됩니다. – Egor

+0

음, 사전에 알지 못하도록하는 방법이 있지만 Webform 자체에서는 제공되지 않습니다. Drupal UI를 통해 웹 양식의 "유형"을 선택하는 웹 양식 콘텐츠 유형에 선택 필드를 추가 할 수 있습니다. 그런 다음 해당 필드의 값을 기반으로 테마 제안을 만들 수 있습니다. 그렇게하면 특정 유형에 속하는 다양한 웹 폼을 만들 수 있고 테마 제안을 통해 'webform-form- [type] .tpl.php'와 같은 템플릿을 사용할 수 있습니다. 따라서 양식 ID를 확인하는 대신 웹 양식 유형 필드를 확인하십시오. – Paul