2010-05-08 6 views
0

나는 이것이 드루팔 포럼이 아니라는 것을 알고있다. 나는 거기에 어떤 반응도 보이지 않기 때문에 여기에 그걸 찍기로 결정했다.drupal을 맞춤 콘텐츠를 제출하는 것으로 알려주는 방법

사용자의 맞춤 콘텐츠를 허용하는 웹 사이트를 만들고 있습니다. 따라서이 사이트에는 양식과 사용자 정의 모듈이 있습니다. admin 테마를 사용하는 대신,이 양식은 사용자 정의 템플리트 내에 위치하며 나머지 템플리트와 동일한 모양을 갖도록 작성됩니다. 결과적으로 hook_form을 통해 양식 요소를 만드는 것이 문제가되지 않습니다. 내 문제가있는 곳이 여기에 있습니다. 이 양식은 사용자 정의 테마를 사용하기 때문에 양식을 제출할 때 사용자가 새 컨텐츠 데이터를 제출한다는 것을 drupal이 알 수 있도록하기 위해 내가 할 수있는 일은 확실하지 않습니다.

  • 그 내용 제출 페이지의 같은 쿼리 문자열을 사용해야합니다 관리자 페이지 같은 - HTML 양식의 액션 속성 = 노드/추가/페이지 Q? (OR)

  • 유일한 방법은 내 사용자 지정 함수에 URL을 매핑하고 내부에 후크의 일종을 호출하는 것입니다?

감사

답변

3

당신은 말 그대로 당신이 당신의 양식 원하는 마크 업을 생성 할 수 있습니다, 당신이해야 할 모든 양식을 정의 할 때 #theme 속성을 사용합니다. 이 도구를 사용하여 양식 자체 및 요소에 대한 테마 기능을 설정할 수 있습니다.

매우 드루팔 (Drupal의 FAPI를 사용하지 말 것. 그것은 당신을 위해 많은 문제를 해결하고, 당신이 당신의 위치에 안전 구멍을 열고 싶은 경우에 그것을 가지고 가지 않는 것은 가지고 갈 첫번째 단계 일 것입니다. 드루팔 (Drupal)과 같은 개발 프레임 워크는 API를 사용하지 않으면 큰 가치가 없습니다.

편집 : 할
우선은, 드루팔의 FAPI reference로 이동하는 것입니다. 거기에 FAPI에 관한 거의 모든 것을 배울 수 있습니다.

원하는 경우 템플릿을 사용할 수 있습니다. 단지 기본 드루팔 (Drupal) 테마이지만, 반대하는 것이 좋습니다. 모든 요소에 대해 테마 함수를 작성하고 대신에 모든 요소를 ​​반복하고 Drupal처럼 렌더링 할 수 있다면 템플릿 파일을 편집 할 필요없이 훨씬 더 유지 보수가 가능할 것입니다. 형태. 지금은 더 많은 일이 될지 모르지만, 그 일에 대한 보상이 있습니다 :보다 깨끗하고 유지 보수가 쉬운 코드. 이렇게

$form['item'] = array(
    ... 
    '#theme' => 'theme_function', 
); 

, 요소가 "theme_function"를 사용하여 렌더링됩니다

코드에서는이 같이 보입니다. 그러한 theme function for textfields의 예를 볼 수 있습니다.

+0

함수 대신 템플릿을 사용할 수 있습니까? 내 양식은 내부에 40 개 이상의 요소가있는 방식으로 매우 복잡하고 앞으로는 더 많이 추가해야 할 수도 있습니다. 내가 drupal 사이트에서 찾은 하나의 참조가 #theme에 대해 많이 말해주지 않았다는 것을 당신이 제안한 참조에 대한 포인터를 줄 수 있다면 기쁠 것입니다. – Andrew

관련 문제