it-swarm-ko.tech

동일한 페이지에 테이블보기와 추가 / 편집 양식을 표시하는 방법은 무엇입니까?

사용자가 새 프로젝트를 만들고 (프로젝트에 제목/설명을 제공하기 위해 몇 개의 텍스트 상자를 작성), 모든 프로젝트 목록을보고, 해당 프로젝트를 편집 할 수있는 페이지를 사이트에 구축하려고합니다. .

새 프로젝트를 만드는 데 필요한 모든 텍스트 필드를 포함하는 "프로젝트"라는 새 콘텐츠 형식을 만들었습니다. 그리고 뷰를 사용하여 사용자 프로젝트 목록을 표시하는 방법을 알아 냈습니다. 패널을 사용하여이 두 요소를 함께 표시하려고 시도했지만, 이는 Node View 및 Node Edit) 모두에 대해 새 변형을 만들어야 함을 의미합니다. 개발 측면에서 서투른 페이지입니다. 그리고 웹 사이트의 최종 결과는 약간 다른 3 개의 페이지입니다 (하나는 새 프로젝트 생성, 하나는 특정 프로젝트를 클릭하여 볼 때, 하나는 프로젝트를 편집 할 때). 그러나 이상적으로는 하나의 매끄러운 페이지처럼 느껴질 것입니다.

패널을 사용하는 데 올바른 접근 방식을 취하고 있습니까? 아니면 더 나은 다른 모듈이나 접근 방식이 있습니까?

3
Erin

Erin, 확실히 사용자 정의 된 페이지를 만드는 좋은 방법은 패널 대신 컨텍스트 모듈을 사용하는 것입니다 ... (컨텍스트를 사용하면 사이트의 여러 부분에 대한 컨텍스트 조건과 반응을 관리 할 수 ​​있습니다. 각 컨텍스트를 "섹션"을 나타내는 것으로 생각할 수 있습니다. 각 컨텍스트에 대해이 컨텍스트가 활성화되도록 트리거하는 조건을 선택하고이 활성 컨텍스트에 반응해야하는 Drupal의 다른 측면을 선택할 수 있습니다. 링크 : 컨텍스트 ).

또한 블록을 생성하고 (PHP 필터를 활성화해야 함)) 다음 코드를 포함 할 수 있습니다.

기존 노드 편집 양식의 경우 :

//you should have your nid (May be loaded by a custom arg or even a given GET variable)
$nid = 99;
$node = node_load($nid);
//load needed file from node module
module_load_include('inc','node','node.pages');
//load node edit form
$form = drupal_get_form($new_node->type . '_node_form', $node);
//print the form you have loaded
echo($form);

Node_load로 노드를로드하는 대신 새 노드 추가 양식을로드하려는 경우 stdClass 객체를 만들고 다음과 같이 유형 이름을 지정해야합니다.

//load the current user info
global $user;
//empty object for node
$new_node = new stdClass();
// your machine name content type
$node->type = 'page';
// set the author for the node to be created
$node->name=  $user->name;
//load needed file from node module
module_load_include('inc','node','node.pages');
//load node edit form
$form = drupal_get_form($node->type . '_node_form', $node);
//print the form you have loaded
echo($form);

실제로 이것이 최선의 방법은 아니지만 확실히 기능적인 방법입니다.

1
lnunesbr