it-swarm-vi.com

Có cách nào để sử dụng các dịch vụ web bên ngoài và hiển thị kết quả trong Lượt xem không?

Tôi có một dịch vụ web bên ngoài, có thể được truy cập bằng cách sử dụng lệnh gọi HTTP (với các tham số được truyền dưới dạng chuỗi truy vấn) và trả về kết quả ở định dạng XML.

Tôi muốn sử dụng Drupal để truy cập dịch vụ web đó (với các tham số mong muốn) và hiển thị kết quả bằng Chế độ xem.

Đây là một truy vấn mẫu và kết quả thu được từ dịch vụ web tôi đang sử dụng.

Truy vấn: http: //localhost/query.php? Cy = in & q = abcd & cat = 22
Kết quả:

<?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

Các giải pháp được tư vấn dựa trên việc đưa dữ liệu vào cơ sở dữ liệu trước, sau đó hiển thị nó trong Chế độ xem.

Một cách khác là truy vấn dịch vụ trực tiếp từ Lượt xem, bằng cách sử dụng phụ trợ truy vấn tùy chỉnh. Thanh toán http://drupal.org/node/95827 cho các liên kết đến các phụ trợ tùy chỉnh mà bạn có thể sử dụng làm ví dụ để viết riêng của mình (không phải là nhiều việc)

4
Bojan Zivanovic

Mô-đun Nguồn cấp dữ liệ có thể lấy nội dung và biến nó thành các nút. Nguồn XPath Parser sẽ cho phép bạn phân tích tệp xml và thẻ ánh xạ tới các trường. Sau đó, bạn có thể sử dụng Chế độ xem để hiển thị nội dung như bình thường.

3
Carolyn

Tôi chắc chắn có một giải pháp thanh lịch hơn ngoài kia, nhưng tôi đã làm điều này trong quá khứ với các nguồn cấp dữ liệu Twitter và nó hoạt động rất tốt. Đây là của tôi về nó:

  • Tạo một loại nội dung để lưu trữ kết quả của bạn và thiết lập các trường cần thiết để phù hợp với nội dung bạn sẽ tiêu thụ
  • Tạo một mô-đun triển khai hook_cron () và định kỳ tiêu thụ dịch vụ web và lưu trữ kết quả dưới dạng các nút

Bước thứ hai có thể đạt được bằng cách lập trình tạo các thể hiện nút:

$node = new stdClass();
$node->title = 'title';
$node->my_custom_field['und'][0]['value'] = 'my custom value';
// fill all your other fields
node_save($node);
  • Cách tốt nhất để tránh trùng lặp khi tạo các nút theo chương trình là so sánh ID (hoặc dấu thời gian hoặc bất cứ điều gì) của kết quả của dịch vụ web với mục nhập gần đây nhất trong cơ sở dữ liệu:
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

Ví dụ trên có vẻ hơi khó hiểu nhưng thực sự không phải vậy: Tôi đã tạo một loại nội dung "hình ảnh" có trường tùy chỉnh "image_id". Đây chỉ là một cách thủ công để lấy ID cho nút được tạo gần đây nhất của loại đó.

  • Vì vậy, bây giờ bạn có một loại nội dung cụ thể mà bạn tự động điền vào thời gian ... lợi nhuận! Bạn có thể sử dụng Chế độ xem để hiển thị dữ liệu theo bất kỳ cách nào bạn muốn vì dữ liệu đó ở dạng ol 'Drupal nút! :)

Hi vọng điêu nay co ich!

1
Alex Weber