Feeds Modülü ile Harici Feed'leri Drupal 9 Web Sitenize Nasıl Aktarırsınız?
Yayınlanan: 2020-11-03Bir geliştirici olarak, harici kaynaklardan veri aktarmanız gerektiğinde birkaç durumla karşılaşacaksınız. Bazen birden fazla kaynaktan Drupal 9 web sitenize veri aktarmanız gerekebilir. Drupal'daki Feeds modülü, teknik bilgisi olmayan kullanıcıların bile farklı veri kaynaklarından içerik içe aktarmasına olanak tanıyan basit, sorunsuz bir modüldür. Migrate modülü gibi diğer Drupal modüllerinden daha basit kılan şey, tüm içe aktarma işleminin Drupal'ın UI'si aracılığıyla yapılmasıdır. İçeriği hazır olur olmaz istediğiniz şekilde size ulaştırır.
Birçok web sitesi, üçüncü taraf sitelerden RSS / XML beslemelerini içe aktarır. Bu blogda, Drupal 9'daki Feeds modülünün yardımıyla json formatında veri sağlayan bu 3. parti API aracılığıyla içe aktarılan bir haber beslemesi alacağız.

Drupal Feeds Modülünü Kurma
Drupal 9 için Feeds modülü, CSV, XML, JSON, RSS vb. gibi farklı biçimlerdeki verileri kullanıcı arabirimi aracılığıyla düğümlere, kullanıcılara ve sınıflandırma terimlerine aktarmanıza olanak tanır.
1. Drupal Feeds modülünü kurun (Burada besteci kullanacağız)
composer require 'drupal/feeds:^[email protected]'composer require 'drupal/feeds:^[email protected]'
2. Burada, verileri içe aktarmak için JSON beslemelerini kullanıyoruz. Bu nedenle, Feeds genişletilebilir ayrıştırıcısı olan bir modül daha yüklememizi gerektirecek bir JSON ayrıştırıcısına ihtiyacımız var. Bu modülü kurmanın en iyi yolu, gerekli tüm kitaplıkları indirdiği için besteci kullanmaktır. (Drupal feeds modülü feed_ex modülü için bir bağımlılık olacağından besteci kullanarak indiriyorsanız ilk adımı da atlayabilirsiniz).
composer require 'drupal/feeds_ex:^[email protected]'composer require 'drupal/feeds_ex:^[email protected]'
Not: Kurmak için besteci kullanmıyorsanız, bu modülün gerektirdiği kitaplıklar Ludwig modülüyle de kurulabilir. Ludwig modülünü kurun ve daha fazla talimat için /admin/reports/packages adresine gidin.
Drush kullanarak veya kullanıcı arayüzü yoluyla ya beslemeleri ve feeds_ex (Beslemeler Genişletilebilir ayrıştırıcılar) modülünün etkinleştirme 3..

Feeds Modülünü Yapılandırma ve Uygulama
Burada, aşağıdaki ekran görüntüsünde gösterilen JSON formatında gösterilen https://newsapi.org/ web sitesi makalelerinden (“ Şu anda TechCrunch'tan en iyi başlıklar ” ile ilgili konular) verileri içe aktaracağız .
Bu haber verilerini almak için web sitesine giriş yapmamız ve bir API anahtarı almamız gerekiyor. Ardından, verilerini web sitenize aktarmak istediğiniz konuları seçin.

API'ye bakarak verilerimizin içe aktarılması gereken bir içerik türü oluşturalım.
İçerik Türü Oluşturma
Burada “ Haber ” adında yeni bir içerik türü oluşturdum. Verilerin taşınması gereken JSON'unuza göre alan türünü seçin.

Yukarıdaki ekran görüntüsünde, JSON anahtar yazarından veri aktarımı için Metin(düz) alanı olan Yazar gibi verileri içe aktarmak için basit alanlar seçtik.

Yukarıdaki ekran görüntüsünde gördüğünüz gibi Feed tipi Feeds item alanını ekledik ve feed tipini buna göre seçtik. Aşağıdaki bir sonraki bölümde bir Feed türünün nasıl oluşturulacağını öğreneceğiz.
Bir Besleme Türü Oluşturma
Bir besleme türü oluşturmak için aşağıdaki adımları izleyin.
- Feed'lere genel bakış sayfasına gidin ( /admin/structure/feeds ). Bu sayfada listelenen tüm Drupal beslemelerini görebilirsiniz.
Zaten 2 besleme oluşturdum. Burada Haber beslemelerini kullanacağım. Besleme türü ekle'yi tıklayarak kendi besleme türünüzü oluşturabilirsiniz. - Feed türünü düzenlerken veya yeni bir feed türü eklerken aşağıdaki seçenekleri göreceğiz.
- Temel ayarlar
Feed türü için Temel ayarları yapılandıralım, İlk olarak, feed türü için Ad, Açıklama ve Açıklama veya gönderme yönergelerini sağlayın.
İçe aktarma süresi (aşağıdaki ayarlar sekmesinde gösterilir), içe aktarmanın ne sıklıkla çalıştırılacağını seçmenize yardımcı olur. Bu bir cron işi aracılığıyla yapılacaktır. Kapalı'yı seçerseniz, içe aktarma manuel olarak yapılacaktır.

- Alıcı ayarları seçeneği, içeriği nereden içe aktardığınızı veya içeriği nereden aldığınızı gösterir.
Aralarından seçim yapabileceğiniz 3 seçenek sunar,
- Dizin: - İçeriği bir dosyadan veya web sitenizde bulunan bir dizi dosyadan içe aktarın.
- URL'den indir: - İçeriği url'den içe aktarın (Bizim durumumuzda seçeceğiz).
- Dosya yükle: - Bir dosyadan içeriği içe aktarın.
Seçilen Getiriciye bağlı olarak, Getirici ayarlarını yapılandırmamız gerekecek. Alıcı ayarlarının ikincil seçeneği için aşağıdaki ayar listesine sahibiz.

- Beslemeleri otomatik algılar
- PubSubHubbub'u kullanın
- Her zaman indir
- İstek zaman aşımına uğradı
İkincil ayarları buna göre yapılandırın.

• Ayrıştırıcı , beslemenin biçimini yapılandırmanıza olanak tanır. Burada CSV, HTML, OPML, JsonPath (bizim ayarımızdır) vb. arasından seçim yapabileceğiniz birçok seçeneğimiz var. Açılır menüden besleme biçiminize göre birini seçin.
Seçilen ayrıştırıcıya göre ayrıştırıcı ayarlarını yapılandırmamız gerekecek. Bizim durumumuzda, JsonPath tipi ayrıştırıcılar için herhangi bir ayrıştırıcı ayarımız yok.
• İşlemci ayarları, beslemenin oluşturacağı içerik türünün yapılandırmalarını gösterir.
Benzer şekilde, aşağıdaki resimde gösterildiği gibi işlemci için ikincil bir ayar seçeneğimiz var.

İkincil ayarlarınızı gereksinime göre yapılandırın.
Aşağıdaki ekran görüntüsü, alıcı, ayrıştırıcı ve işlemcinin birincil ayarlarını gösterir.

3. Kaynakları hedefle eşleştirme
- Bağlam
Yardım metni, içerik olarak Drupal beslemeleri içe aktarma için hedeflenecek verilerin kökünü veya tabanını gösteren temel sorgunun çalıştırılacağını söyler. Örneğimizde, verilerimiz makale anahtarının içinde bulunduğu için onu “$.articles .*” olarak yapılandırdık. Sizinkini yapılandırmak için bu yol belgelerine bakın.
- Alan Eşlemeleri
Şimdi, JSON'dan alınan hangi değerin Drupal haber içerik türünde hangi alanla eşleşmesi gerektiğine karar vermek için Feeds modülünü yapılandırabiliriz.
Bu hedefler Drupal veri alanlarıdır ve besleme türünü oluştururken seçtiğiniz işlemciye göre çekilir. Dil, filtre formatı (metin formatlı alanlar için geçerlidir), benzersiz (içeriğin yeni mi yoksa mevcut mu olduğunu izlemek için kullanılan benzersiz tanımlayıcı), vb. gibi alanların belirli eşlemeleri için diğer ayarları da yapılandırabilirsiniz.
Örneğin, JSON beslemesi haber makalesi içerik başlığını Drupal haber içeriği başlık alanı olarak içe aktarmak istiyorsak, hedef Drupal Başlık alanı olacak ve kaynak, aşağıdaki ekran görüntüsünde gösterildiği gibi JSON haber makalesi başlık anahtarı olacaktır.

Burada, aşağıdaki ekran görüntüsünde gösterildiği gibi eşleme yapılandırmasını kullanıyoruz.

Drupal 9'da da desteklenen Entity klonu Drupal modülünü kullanarak besleme türünü de klonlayabilirsiniz.
Feed Oluşturma
Bir yayın oluşturmak için içerik -> Yayınlar sekmesi -> yayın ekle -> yayın türünü seçin seçeneğine gidin

Haberler için zaten bir tane oluşturdum . Yeni bir besleme oluşturmak için + Besleme ekle düğmesine tıklayın ve beslemeyi gerektiği gibi yapılandırın. Blogumuz için aşağıdaki ekran görüntüsünde gösterildiği gibi yapılandırdık.

Yapılandırmadan sonra Kaydet ve İçe Aktar'a tıklayın . Bu, Drupal beslemelerini içerik olarak içe aktaracaktır. Veriler içe aktarılırken, aşağıdaki ekran görüntüsünde gösterildiği gibi işlem durumunu göreceksiniz.

JSON verileri içeriğe taşındıktan sonra, aşağıdaki ekran görüntüsünde gösterildiği gibi haber içerik türüne eklenen içeriği görebiliriz.

Şimdi içe aktarılan içeriği feed'lerle karşılaştıralım.


Daha ayrıntılı bilgi için bu kılavuza başvurabilirsiniz.
Feeds modülünü genişletmek için ek modüller
• Feeds Tamper modülü, kaynak verileri web sitenize aktarılmadan önce değiştirmenize ve güncellemenize yardımcı olur.
• Feeds genişletilebilir ayrıştırıcıları, XPath XML ve HTML, JSONPath JSON ve JSON satır ayrıştırıcı vb. gibi bir dizi ayrıştırıcı içerir.
• Feed'leri İçe Aktarma Önizleme modülü, içe aktarmadan önce kaynağınızdaki içeriği görmenizi sağlar.
• Commerce Feeds modülü, ürünleri Drupal Commerce sitenize aktarmanıza yardımcı olur.
