2012-09-22 2 views
0

REST 서버를 사용하여 drupal 6 사이트의 데이터를 JSON 형식으로 가져온 다음 iphone 응용 프로그램에서 JSON 데이터를 구문 분석합니다.iphone 응용 프로그램에 대한 설명과 함께 drupal 노드 표시

하나의 특정 노드와 그 모든 주석을 표시하고자합니다. 노드 아이디는 아이폰 애플리케이션에 의해 주어진다. 나는 REST 서버를 사용하여 그것을 할 수 없습니다 ... 나는

<drupal site>/<REST server endpoint>/node/<node id>.json 

로 URL을 주면 나는이 코멘트를 제외하고 노드에 대한 모든 관련 정보를 얻을.

나는 하나의 주석 만 표시 할 수 있기 때문에 drupal보기를 사용하여 수행 할 수 없습니다. 모든 주석은 표시 할 수 없습니다. 또한 뷰를 사용하여 노드 ID를 지정해야합니다.

목표 달성 방법은 무엇입니까?

답변

0

나는이 목적을 위해 모듈 작업을 시작했다 ... 나는 아직 코멘트를 포함하지 않았지만, 프레임 워크는 시작하기에 좋은 장소 일 수있다. 서비스 모듈을 얻기 위해 더 똑바로 방법이없는 경우

http://drupalcode.org/sandbox/nally/1365370.git/tree

+0

도움을 주셔서 감사합니다. 새로운 **보기 **를 만들 수있는 방법이 있습니까 ** 모든 노드 다음에 노드 당 모든 주석 **이 표시됩니다. 나중에 아이폰 앱에서 필요한 노드로 필터링 할 것입니다. 현재 뷰를 사용하여 노드 당 최신 코멘트 만 표시 할 수 있습니다. – Shuaib

+0

주석보기를 만든 다음 소유하고있는보기에 관계를 추가 할 수 있습니다. 그런 다음보기 스타일을 표로 설정하고 소유 노드를 "그룹화"하십시오. 게시일까지 댓글을 정렬해야합니다. –

+0

당신이 말했듯이 나는보기를 사용하여 그것을하고 싶습니다. 그러나 부모보기가 해당 노드 만로드하고 자식보기는 주석을 표시 할 수 있도록 iphone 응용 프로그램에서 노드 ID를 보내야합니다. 노드 ID를 지정하는 방법이 있습니까? – Shuaib

0

다음 노드와 사용자 정의 모듈을 생성하고 hook_services_resources을 구현하여 그 의견을 얻을 수있는 방법이있다. 이 후크 메커니즘은 drupal 메뉴 후크와 유사합니다.

다음은 drupal 7로 작성된 코드 스 니펫이지만 drupal 6에서도 작동합니다.

Url : <drupal site>/<REST server endpoint>/my_rest_api/<node id>.json 

내가 작동하면 그렇지 않으면 D6에서 전체 모듈을 만들어 여기에 붙여 넣습니다.

/** 
* Implements hook_services_resources(). 
* my_rest_api should appear in your resource list and do enable it before using it. 
*/ 
function YOURMODULE_services_resources() { 
    return array(
    'my_rest_api' => array(
     'retrieve' => array(
     'callback' => 'getMyRestNodeWithComments', 
     'args' => array(
      array(
      'name' => 'nid', 
      'optional' => FALSE, 
      'source' => array('path' => 0), 
      'type' => 'int', 
     ), 
     ), 
     'access callback' => 'getMyRestAcces', 
    ), 


    ), 
); 
} 

/** 
* Get the node along with comment 
*/ 
function getMyRestNodeWithComments($nid) { 
    $node = node_load($nid); 
    $node->comments = getMyRestCommentByNid($nid); 
    return $node; 

} 

/** 
* Access callback. 
* TRUE for now but you change it according to your requirement 
*/ 
function getMyRestAcces() { 
    return TRUE; 
} 
/** 
* Get comment by nid 
*/ 
function getMyRestCommentByNid($nid){ 
    //drupal 7 
    $query = db_select('comment', 'c'); 
    $comments = $query 
     ->fields('c') 
     ->condition('c.nid', $nid) 
     ->execute() 
     ->fetchAll(); 
    return $comments; 

    /* 
    //In Drupal 6 something like this 
    $result = db_query("select * from {comment} where nid = %d",$nid); 
    $records = array(); 
    while($row = db_fetch_array($result)){ 
     array_push($records, $row); 
    } 
    return $records; 
    */ 

} 
+0

이 프로젝트를 빨리 끝내고 코딩하고 싶지 않습니다. 어쨌든 코드에 대해 감사드립니다! – Shuaib

관련 문제