it-swarm-ko.tech

프로그래밍 방식으로 주석 양식 첨부

사용자 정의 모듈에서 프로그래밍 방식으로 주석 모듈의 주석 양식을 어떻게 추가합니까?
달리 말하면, (코멘트 핵심 모듈의) 완전한 "Post New Comment"양식을 추가하기 위해 모듈 코드에 어떤 적절한 코드를 추가해야합니까?

즉, 자신의 모듈을 설치하여 주석 모듈을 강제로 설치하려면 어떻게해야합니까?


나는 도달 한 몇 가지 새로운 결과로 편집 된 버전으로 내 질문을 다시하고 있습니다. :).

물론 내 모듈로 사용자 정의 메뉴를 만들었습니다.
내 항목이 표시되는 페이지에 (주석 모듈의) 주석 양식을 추가하고 싶습니다.
문제는 내가 리디렉션 된 페이지가 노드가 아니라 'page_arguments'에 따라 데이터를 표시하는 렌더링 가능한 페이지라는 것입니다.
다음과 같습니다.


$items['car/%'] = array(
        'title' => 'Cars',
        'page callback' => 'car_page',
        'page arguments' => array(1),
        'access callback' => TRUE,
        'type' => MENU_CALLBACK,
);

해당 페이지에 의견 양식 (주석 모듈)을 첨부하고 싶습니다.
다음 코드를 사용했습니다.


module_load_include('module', 'contact');

$build = array(
    'header_text' => array(
        '#type' => 'markup',
        '#markup' => 'Building comments in page.',
    ),
    'the_form' => drupal_get_form('comment_form', ''),
);

return $build;

모두 올바른 코드입니다.

그러나 문제는 주석 양식과 게시 된 주석이 노드 ID (nid)에 따라로드되고 내 경우에는 노드 ID (nid)가 없다는 것입니다!

주석 양식이 올바르게 작동하고 해당 페이지와 관련된 주석이 올바르게로드되도록 해당 사용자 정의 페이지의 특정 식별자를 어떻게 할당 할 수 있습니까?!

그리고 위 코드에서 drupal_get_form ()을 사용하여 양식을 호출하고 빈 두 번째 인수를 할당했습니다! 나는 그것이 옳지 않다고 생각합니다.

어떤 아이디어!?

4
Peter

comment_form()은 매개 변수가 배열이 아닌 객체 일 것으로 예상하므로 다음과 같이해야합니다.

$comment = new stdClass;
$comment->nid = $row->nid;
$form = drupal_get_form('comment_form', $comment);

Drupal_get_form ()에 전달 된 3 번째 매개 변수가 없으면 comment_form ()은 제목을 추가하려는 경우 주석을 매개 변수로만 승인합니다. 제목을 추가하려면 별도로 인쇄해야합니다.

마지막으로 drupal_get_form ()은 문자열이 아닌 렌더 배열을 반환하므로 render () 함수를 통해 전달해야합니다.

print render($form);

발생하는 추가 오류는 객체가 아닌 배열을 comment_form () 함수에 전달하는 부작용입니다.

3
Kirill

무엇에 의견을 첨부 하시겠습니까? 주석은 노드에만 첨부 할 수 있습니다.

주석 저장을위한 API 함수는 comment_save () 입니다. 전달하고자하는 $ comment 객체에 어떤 속성이 필요한지 알아 내야합니다. 적어도 nid, subjectbody['und'][0]['value'].

즉, 자신의 모듈을 설치하여 주석 모듈을 강제로 설치하는 방법은 무엇입니까?

Thtat은 별도의 질문이므로 한 번에 하나의 질문 만하십시오. .info 파일에 dependencies[] = comment를 추가해야합니다.

2
Berdir