web-gelistirme-sc.com

Harici web hizmetlerini tüketmenin ve sonuçları Views'da göstermenin bir yolu var mı?

Bir HTTP çağrısı (sorgu dizesi olarak geçirilen parametreleri ile) kullanılarak erişilebilen ve XML biçiminde sonuç döndüren harici bir web hizmeti var.

Drupal Bu web hizmetine (istenen parametrelerle) erişmek ve Views'u kullanarak sonucu görüntülemek istiyorum.

Bunlar örnek bir sorgu ve kullandığım web hizmetinden elde edilen sonuçtur.

Sorgu: http: //localhost/query.php? Cy = & q = abcd & cat = 22
Sonuç:

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

Tavsiye edilen çözümler, önce veri tabanına veri alınmasına, daha sonra Views'da gösterilmesine dayanır.

Bir alternatif, özel bir sorgu arka ucu kullanarak hizmeti doğrudan Views'dan sorgulamaktır. Kendi hesabınızı yazmak için örnek olarak kullanabileceğiniz özel arka uçlara bağlantılar için Checkout http://drupal.org/node/95827 (çok fazla iş değil)

4
Bojan Zivanovic

Feeds modülü içeriği alabilir ve düğümlere dönüştürebilir. Feeds XPath Parser , xml dosyasını ayrıştırmanıza ve etiketleri alanlarla eşlemenize olanak tanır. Ardından içeriği normal şekilde görüntülemek için Görünümler'i kullanabilirsiniz.

3
Carolyn

Eminim orada daha şık bir çözüm var, ama bunu geçmişte Twitter yayınlarıyla yaptım ve gayet iyi çalışıyor. İşte benim almam:

  • Sonuçlarınızı saklamak için bir içerik türü oluşturun ve tüketeceğiniz içeriğe uyması için gereken alanları ayarlayın
  • hook_cron () uygulayan ve periyodik olarak web hizmetini tüketen ve sonuçları düğüm olarak saklayan bir modül oluşturun

İkinci adım, düğüm örneklerini programlı olarak oluşturarak gerçekleştirilebilir:

$node = new stdClass();
$node->title = 'title';
$node->my_custom_field['und'][0]['value'] = 'my custom value';
// fill all your other fields
node_save($node);
  • Düğümleri programlı olarak oluştururken çoğaltmayı önlemenin en iyi yolu, web hizmeti sonuçlarının kimliğini (veya zaman damgasını veya herhangi bir şeyi) veritabanındaki en son girdiyle karşılaştırmaktır:
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

Yukarıdaki örnek biraz kafa karıştırıcı görünebilir ama gerçekten değil: Ben özel bir alanı "picture_id" olan bir "type" içerik türü oluşturdum. Bu türün en son oluşturulan düğümünün kimliğini almanın sadece manuel bir yoludur.

  • Artık cron zamanında otomatik olarak doldurduğunuz belirli bir içerik türüne sahip olduğunuza göre ... kâr! Verileri istediğiniz şekilde görüntülemek için Görünümler'i kullanabilirsiniz, çünkü bu normal ol 'Drupal düğümleri!) Biçimindedir. :)

Bu yardımcı olur umarım!

1
Alex Weber