it-swarm-ko.tech

외부 웹 서비스를 사용하고 뷰에 결과를 표시하는 방법이 있습니까?

HTTP 호출 (쿼리 문자열로 전달 된 매개 변수 사용)을 사용하여 액세스 할 수있는 외부 웹 서비스가 있으며 결과를 XML 형식으로 반환합니다.

Drupal을 사용하여 원하는 매개 변수로 해당 웹 서비스에 액세스하고 Views를 사용하여 결과를 표시하고 싶습니다.

이들은 샘플 쿼리이며 사용중인 웹 서비스에서 얻은 결과입니다.

쿼리 : http : //localhost/query.php? cy = in & q = abcd & cat = 22
결과:

<?xml version="1.0"?>
<results>
<Jobs>
    <Job ID="111">
        <Title>Test one</Title>
        <Summary>Test one summary</Summary>
        <DateUpdated Date="2011-04-04 18:03:00">4/4/2011</DateUpdated>
        <Location>
            <Country>India</Country>
            <City>Delhi</City>
        </Location>
        <CompanyName>Test Company</CompanyName>
    </Job>
    <Job ID="222">
        <Title>Test two</Title>
        <Summary>Test two summary</Summary>
        <DateUpdated Date="2011-04-04 18:03:00">4/4/2011</DateUpdated>
        <Location>
            <Country>India</Country>
            <City>Chennai</City>
        </Location>
        <CompanyName>Test company</CompanyName>
    </Job>
</Jobs> 
</results>  
11
Mugunth

권장되는 솔루션은 먼저 데이터를 데이터베이스로 가져온 다음보기에 표시하는 것입니다.

대안은 사용자 지정 쿼리 백엔드를 사용하여 뷰에서 직접 서비스를 쿼리하는 것입니다. Checkout http://drupal.org/node/95827 직접 작성하는 예제로 사용할 수있는 사용자 정의 백엔드 링크 (많은 작업이 아님)

4
Bojan Zivanovic

Feeds 모듈은 컨텐츠를 가져 와서 노드로 전환 할 수 있습니다. Feeds XPath Parser xml 파일을 구문 분석하고 태그를 필드에 매핑 할 수 있습니다. 그런 다음보기를 사용하여 컨텐츠를 정상적으로 표시 할 수 있습니다.

3
Carolyn

더 우아한 솔루션이 있다고 확신하지만 과거에는 Twitter 피드 로이 작업을 수행했으며 정상적으로 작동합니다. 여기에 내가 가져 가라.

  • 결과를 저장할 컨텐츠 유형을 작성하고 소비 할 컨텐츠와 일치하도록 필드를 설정하십시오.
  • hook_cron () 을 구현하고 주기적으로 웹 서비스를 소비하고 결과를 노드로 저장하는 모듈을 만듭니다.

프로그래밍 방식으로 노드 인스턴스를 작성하여 두 번째 단계를 수행 할 수 있습니다.

$node = new stdClass();
$node->title = 'title';
$node->my_custom_field['und'][0]['value'] = 'my custom value';
// fill all your other fields
node_save($node);
  • 프로그래밍 방식으로 노드를 만들 때 중복을 피하는 가장 좋은 방법은 웹 서비스 결과의 ID (또는 타임 스탬프 등)를 데이터베이스의 최신 항목과 비교하는 것입니다.
SELECT fdfpi.field_picture_id_value FROM field_data_field_picture_id fdfpi INNER JOIN node n ON fdfpi.entity_id = n.nid AND fdfpi.entity_type = 'node' WHERE n.type = 'picture' ORDER BY n.created DESC LIMIT 1

위의 예제는 다소 혼란스러워 보이지만 실제로는 그렇지 않습니다. 사용자 정의 필드 "picture_id"가있는 "picture"컨텐츠 유형을 작성했습니다. 해당 유형의 가장 최근에 생성 된 노드의 ID를 검색하는 수동 방법입니다.

  • 이제 cron 시간에 자동으로 채워지는 특정 컨텐츠 유형이 있습니다. 뷰를 사용하여 데이터를 일반 ol 'Drupal 노드! :) 형식으로 원하는 방식으로 데이터를 표시 할 수 있습니다.

도움이 되었기를 바랍니다!

1
Alex Weber