2012-06-29 2 views
1

.install (.install에서 완료 됨) 노드를 만드는 데 사용되는 모듈이 있습니다. 괜찮아. 문제는 이러한 노드에 xml, json, jsonp 컨텐트가 포함되어 있으므로 테마, 헤더, 바닥 글 없음, 스타일 지정 없음, 노드 -> 컨텐트없이 렌더링 할 수 있기를 원합니다. 이 모듈은 다른 여러 Drupal 사이트와 공유되므로 테마 개발을 통해이 작업을 수행 할 수 없으며 템플릿을 만들거나 수정해야하는 사람이 필요하지 않습니다.모듈에서 테마가없는 노드 렌더링 (테마 편집 안 함)

모듈 내부에서 후크를 사용하여이를 수행하는 방법이 있습니까? 기본적으로 노드 제목이나 노드 별칭 (또는 무언가)을 감지 한 다음 테마가 렌더링되지 않도록하고 내용 만 렌더링합니다. .install에서 노드를 생성하기 때문에 노드의 제목과 별칭을 알 수 있습니다. 나는 또한 제대로 반환되는 뭐죠에게 말을하는 헤더를 수정하고 싶은

감사합니다 사전에 등 XML, JSON이다.

답변

0

일반적으로 나는이 다른 방향으로 가고 싶습니다. 나는 사용자 콘텐츠를 직접 편집 할 의도가 거의 없기 때문에 콘텐츠를 노드 콘텐츠가 아닌 hook_menu() 라우터 항목으로 정의하고 싶습니다. 많은 처리가있는 경우, .module과 분리하여 각 항목에 대해 file으로 포함 할 수 있습니다.

/** 
* Implementation of hook_menu(). 
*/ 
function MODULE_menu() { 
    $items = array(); 

    $items['example/json'] = array(
    'title'   => 'JSON example', 
    'page callback' => '_MODULE_json', 
    'access arguments' => array('access content'), 
    'type'    => MENU_CALLBACK, 
); 
    $items['example/xml'] = array(
    'title'   => 'XML example', 
    'page callback' => '_MODULE_xml', 
    'access arguments' => array('access content'), 
    'type'    => MENU_CALLBACK, 
); 

    return $items; 
} 

/** 
* JSON example. 
*/ 
function _MODULE_json($string = '') { 
    $data = array(); 
    $data['something'] = 0; 
    $data['anotherthing'] = 1; 
    drupal_json($data); 
} 

/** 
* XML example. No idea if this actually produces valid XML, 
* but you get the idea. 
*/ 
function _MODULE_xml($string = '') { 
    $data = array(); 
    $data['different'] = 2; 
    $data['evenmore'] = 3; 

    // Build XML 
    $output = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"; 
    $output .= "<data>\n"; 
    $output .= format_xml_elements($data); 
    $output .= "</data>\n"; 

    // We are returning XML, so tell the browser. 
    drupal_set_header('Content-Type: application/xml'); 
    echo $output; 
} 
+0

의견에 감사드립니다. – awolfe76

+0

문제는 우리가 이것을 자주 업데이트 할 수 있어야하고 누구나 할 수 있어야한다는 것입니다. _menu를 사용하면 항목을 편집 할 수 있습니까? – awolfe76

+0

할 수 있습니다. 페이지 콜백에서, 당신은 원하는 노드를 node_load() 할 수 있으며 $ node-> 본문 내용을 반환한다. – scronide

관련 문제