Mevcut Drupal Alanlarını Yeniden Kullanmalı mıyım?

Yayınlanan: 2022-02-16

Bazen gerçekten net tavsiyeler verebiliriz: "Bunu yap!" veya "Bunu yapma!"

Bu o blog yazılarından biri olmayacak.

Drupal size alanları yeniden kullanma yeteneği verir. Bir "Resim" alanınız varsa, sitenizdeki her içerik türünde aynı alanı kullanmayı seçebilirsiniz. Ancak alanları yeniden kullanmanın iyi bir fikir olup olmadığı her zaman net değildir. Bazen öyle, bazen değil.

Drupal alanlarını yeniden kullanmadan önce göz önünde bulundurulması gereken avantaj ve dezavantajlara genel bir bakış.

Alanların yeniden kullanımı hakkında genel tavsiye

Bir içerik türü için "Yapı"ya, ardından "İçerik türleri"ne gittiğinizde "Mevcut alanı yeniden kullan" özelliğini seçebilir ve "Alanları yönet"i tıklayabilirsiniz.

drupal alanlarını yeniden kullan

Drupal.org belgeleri, alanları yeniden kullanmamanızı resmi olarak önermek için kullanılır:

Açık bir nedeniniz yoksa, mevcut alanları yeniden kullanmak yerine yeni alanlar oluşturmanız önerilir.

Ancak, bu tavsiye son yıllarda daha nüanslı hale geldi ve Drupal resmi olarak bunun hem avantaj hem de dezavantaj olduğunu söylüyor.

Drupal Field UI belgelerinde "Alanları Yeniden Kullanma" adlı ayrıntılı bir bölüm vardır:

Alanları yeniden kullanmanın iki ana nedeni vardır. İlk olarak, alanları yeniden kullanmak, yeni alanlar tanımlama konusunda size zaman kazandırabilir. İkinci olarak, alanları yeniden kullanmak, içerik türleri arasında içeriği birlikte görüntülemenize, filtrelemenize, gruplandırmanıza ve sıralamanıza olanak tanır. Örneğin, katkıda bulunan Görünümler modülü, listeler ve içerik tabloları oluşturmanıza olanak tanır. Dolayısıyla, aynı alanı birden çok içerik türünde kullanırsanız, o alanı görüntüleyen, o alana göre sıralanmış ve/veya o alana göre filtrelenmiş tüm bu içerik türlerini içeren bir Görünüm oluşturabilirsiniz. Bir alanı yeniden kullanmamanın bir ana nedeni vardır: farklı izinler. Örneğin, eklendiği içerik türüne bağlı olarak bir alana farklı erişim düzeylerine sahip olmak için farklı kullanıcı rollerine ihtiyacınız olabilir. Bir alanı yeniden kullanırsanız bu zor olabilir.

Avantaj: alanları yeniden kullanmak işinizi daha basit hale getirebilir

Evet, bir hız artışı olabilir, ancak zaman tasarrufu çok azdır. Daha çekici bir avantaj, alanların yeniden kullanılmasının bazen site yönetimini daha basit hale getirebilmesidir. Web Girişimi bunu güzel bir şekilde özetliyor:

Alanların yeniden kullanılması, sistemin karmaşıklığını da azaltabilir. Drupal yöneticileri 10 farklı alan oluşturmak ve sürdürmek yerine yalnızca iki alanı ve bunların belgelerini tutar. Veritabanı yöneticilerinin yalnızca iki ekstra tablonun performansını iyileştirmesi gerekir. KISS her zaman iyi bir ilkedir.

10 benzersiz alan yerine yeniden kullanılan bir alana izinleri, ayarı ve tasarım öğelerini uygulamak kesinlikle daha kolay olurdu.

Avantaj: Bazı içerikler yeniden kullanılan alanlarla iyi çalışır

Drupal Field UI belgelerine tekrar dönün:

alanları yeniden kullanmak, aynı zamanda, içerik türleri arasında içeriği alana göre birlikte görüntülemenize, filtrelemenize, gruplandırmanıza ve sıralamanıza olanak tanır. Örneğin, katkıda bulunan Görünümler modülü, listeler ve içerik tabloları oluşturmanıza olanak tanır. Dolayısıyla, aynı alanı birden çok içerik türünde kullanırsanız, o alanı görüntüleyen, o alana göre sıralanmış ve/veya o alana göre filtrelenmiş tüm bu içerik türlerini içeren bir Görünüm oluşturabilirsiniz.

Drupal.org belgelerindeki bir yorum yazarı, Görünümler hakkında aynı noktaya değiniyor. Görünümlerin içeriği karmaşık yollarla birleştirebileceğini belirtiyorlar. Dolayısıyla, farklı tarih alanlarına sahip birden fazla farklı içerik türünüz varsa, Görünümler bunları tek bir görünümde birleştirebilir. Bununla birlikte, Görünümlerin sıralama konusunda o kadar karmaşık olmadığını da belirtiyorlar. Bu nedenle, farklı tarih alanlarına sahip birden fazla farklı içerik türünüz varsa, Görünümler içeriği tüm bu farklı tarih alanlarında sıralamak için mücadele edecektir.

Dezavantaj: Yeniden kullanılan alanlar esnek değildir

Twitter'daki Brandon Williams bunu güzel bir şekilde özetledi:

ilk başta bu iyi bir fikir, ancak birkaç hafta verin, değişiklik gerektirir, yine de ayrı fikirler yaratırsınız

Büyük ölçüde, yeniden kullanılan alanları seçerseniz, verilerinizde daha sonra kolayca yapabileceğiniz değişiklikleri sınırlandırmış olursunuz. Ayrıca her alanı ayrı ayrı düzenlemeniz gerektiğinden güncelleme yapmak çok daha fazla zaman alır.

Dezavantaj: Yeniden kullanılan alanlar, verilerin dışa aktarılmasını veya taşınmasını zorlaştırır

Verilerinizi dışa aktarmanız gerektiğinde veya yeni bir Drupal sürümüne veya başka bir platforma geçmeniz gerektiğinde alanları yeniden kullanmak bir sorun haline gelebilir.

Her Drupal alanının aşağıda gösterildiği gibi kendi veritabanı tablosu vardır. Bu verileri çıkarmak zor olabilir. Özellikler modülü (Drupal verilerini dışa aktarmanın en yaygın yolu), mevcut sürümler bunları daha etkili bir şekilde işleyebilmesine rağmen, paylaşılan alanlarla uzun süre mücadele etti.

media_1392150946256.png

Bu tavsiye, çoklu siteleri kullanma konusundaki düşüncelerimize benzer. Kod tabanları veya veritabanı tabloları arasında bağımlılıklar oluşturmaya başladığınızda, sitenize karmaşıklık eklersiniz.

Avantaj mı dezavantaj mı? Verim

Drupal belgeleri, alanları yeniden kullanmanın olası bir avantajını özetlemektedir:

Alanları yeniden kullanmak yalnızca Drupal'ın daha hızlı çalışmasını sağlamakla kalmaz, aynı zamanda projenizin bakımını da kolaylaştırır.

Stack Overflow'daki bu konu, performansla ilgili çok alakalı bir tartışmaya sahiptir. Bu yorumu içerir:

Ancak gerçek bir sorun, sahip olduğunuz alanların sayısıdır. Çünkü şu anda Drupal 7'de, yüklenmiş olsun ya da olmasın tüm alanların tam alan yapılandırması her bir istekte önbellekten alınır. 250'den fazla alana sahip siteler gördüm, burada alan yapılandırmasını yüklemek ve seriden çıkarmak 13MB+ bellek alır."

Bu nedenle, alanları yeniden kullanmak, daha düşük toplam alan sayısına sahip olmamızı sağlayarak muhtemelen küçük performans iyileştirmeleri sağlayabilir.

Ancak, bu küçük iyileştirmeler başka yerlerde kaybolabilir. Bu yine Web Girişimi'nden:

[fields] bir Drupal sistemine ekstra karmaşıklık. Yeni bir alan oluştururken, alanın tanımı alan sınıfı tablosuna eklenir ve alanın konfigürasyonu alan örneği tablosuna eklenir; bu arada, alan verilerini depolamak için Drupal veritabanına yeni bir tablo eklenir. Veritabanı tabloları sisteme karmaşıklık katar. Ek olarak, düğümlerin sorguları, tabloların JOIN ifadelerini alan verilerine uygular. Birden çok JOIN, veritabanı performansını etkileyecektir, çünkü MySQL, uygun şekilde yapılandırılmamışsa birden çok JOIN tablosuyla sorgulara yetersiz yanıt verir.

Özet

Maalesef bu soruya kolay bir cevabımız yok. Bu, konuyu okumanın ve artıları ve eksileri anlamanın fayda sağlayacağı bir sorudur. Gerçek bir site derlemesi yapıyorsanız, bu artıların ve eksilerin sitenizin ihtiyaçlarını nasıl etkilediği hakkında daha fazla bilgi edinmek için siteyi bir test ortamında oluşturmaya değer.