Drupal | Drupal Hakkında Bilgiler | The Cry | 2011 | Yeni

The Cry

Kıdemli Üye
19 Eki 2007
3,111
10
"-Her Yerden-"
Bir Görünümün Anatomisi

Views eklentisi asıl olarak SQL sorgularını görsel olarak oluşturmanızı sağlar. Örneğin Views kullanmadığınızda sitenizdeki en son yorumlanan içeriklerin bir listesini elde etmek için aşağıdaki gibi bir SQL sorgusu yazmanız gerekir.

Kod:
SELECT node[COLOR=#339933].[/COLOR]nid [COLOR=#B1B100]AS[/COLOR] nid[COLOR=#339933],[/COLOR]
   node[COLOR=#339933].[/COLOR]title [COLOR=#B1B100]AS[/COLOR] node_title[COLOR=#339933],[/COLOR]
   node_comment_statistics[COLOR=#339933].[/COLOR]last_comment_timestamp [COLOR=#B1B100]AS[/COLOR]
 FROM node node 
 LEFT [URL="http://www.php.net/join"][COLOR=#990000]JOIN[/COLOR][/URL] node_comment_statistics node_comment_statistics ON node[COLOR=#339933].[/COLOR]nid [COLOR=#339933]=[/COLOR][COLOR=#339933].[/COLOR]nid
 WHERE [COLOR=#009900]([/COLOR]node_comment_statistics[COLOR=#339933].[/COLOR]comment_count [COLOR=#339933]>=[/COLOR] [COLOR=#CC66CC]1[/COLOR][COLOR=#009900])[/COLOR] AND [COLOR=#009900]([/COLOR]node[COLOR=#339933].[/COLOR]status [COLOR=#339933]<>[/COLOR] [COLOR=#800080]0[/COLOR] OR node[COLOR=#339933].[/COLOR]uid [COLOR=#339933]=[/COLOR] [COLOR=#339933]***[/COLOR]CURRENT_USER[COLOR=#339933]***[/COLOR] or [COLOR=#339933]***[/COLOR]ADMINISTER_NODES[COLOR=#339933]***[/COLOR] [COLOR=#339933]=[/COLOR] [COLOR=#CC66CC]1[/COLOR][COLOR=#009900])[/COLOR]
   ORDER BY node_comment_statistics_last_comment_timestamp DESC

Doğal olarak böyle bir sorguyu yazabilmek için SQL dilini biliyor olmalısınız. İşte Views bu zorunluluğu sunduğu görsel arayüz ile ortadan kaldırıyor. node_comment_statistics
node_comment_statistics_last_comment_timestamp
Görünüm Yapısı

Her görünümün SQL dilinde yazılan bir karşılığı bulunur. Dolayısıyla Views, SQL dilindeki çeşitli komutları Views ortamında kullanabilmenizi sağlayan çeşitli yapılar sunar. Bu yapıları kısaca şöyle özetleyebiliriz:
ders_views_110_arayuz.png


  • [1] Fields (tr: alan): SQL'deki SELECT'e karşılık gelir, oluşturulacak görünümde veritabanı tablolarından hangi alanların gösterileceğini belirtir. Örneğin düğümleri listeleyen bir görünüme Node: Title (Düğüm: Başlık), Node: Type (Düğüm: Tür), ve Node: Post date (Düğüm: Yazılma tarihi) alanları eklendiğinde, görünümün çıktısında yer alan her içerik için başlık, içerik türü ve yazılma tarihi bilgileri gösterilir. Bir görünüm için alan seçmek zorunlu değildir. Örneğin site anasayfasındaki gibi bir görünüm elde etmek için alanlar yerine düğüm özetleri kullanılır.
  • [2] Relationships (tr: ilişki): İstediğiniz veriler veritabanındaki farklı tablolarda yer alıyorsa, bu tablolar arasında bir ilişki kurulması gerekir. Views eklentisi bazı temel sorgular için bu ilişkileri görünüm ekleme sayfasında göstermeden kendisi kurar. Örneğin düğüm (node) ve kullanıcı (user) tabloları arasındaki ilişki kendiliğinden eklenmektedir. Böylece düğümleri listelerken, düğümlerin yazarlarına ait bilgiler de listelenebilmektedir (bu bilgileri Fields bölümünden görünüme ekleyebilirsiniz). Genellikle çekirdekte olmayan eklentilere ait veritabanı tablolarına erişmek için gerekli ilişkileri sizin kurmanız gerekmektedir. Örneğin Fivestar eklentisi tabloları için Düğüm: Oylama Sonuçları ilişkisi gibi. Bu ilişkiler eklendiğinde Fields, Arguments, Sort Criteria kısımlarında görünüme ekleyebileceğiniz bazı yeni alanlar yer alacaktır.
  • [3] Filters (tr: filtre, süzgeç): Filtreler SQL'deki WHERE'e karşılık gelir; tüm içerikler arasından hangilerini seçmek istediğinizi görünüme filtreler ekleyerek belirtirsiniz. Örneğin düğümleri listeleyen bir görünüme Node: Published (Düğüm: Yayında) filtresi ekleyerek sadece yayında olan içerikleri, Node: Type (Düğüm: Tür) filtresi ile sadece belirli bir türdeki içerikleri veya User: Current (Kullanıcı: Current) ile sadece oturum açmış olan kullanıcıya ait içerikleri listeletebilirsiniz.
  • [4] Arguments (tr: değişken): Değişkenler dinamik filtreler olarak çalışırlar ve değerlerini genellikle görünümün yayınlandığı sayfanın URL'sinden alırlar. Örneğin sitenizin farklı sayfalarında farklı türlerdeki içerikleri listelemek istiyorsunuz. Bu durumda Node: Type (Düğüm: Tür) değişkenini kullandığınız görünüm, siteniz.com/kitap sayfasında sadece kitap içeriklerini ve siteniz.com/dizi sayfasında da sadece dizi içeriklerinizi gösterecektir.
  • [5] Sort Criteria (tr: sıralama kriteri): SQL'deki ORDER BY'a karşılık gelir; içeriklerinizi hangi sırada listeleceğinizi tanımlar. Örneğin düğümleri listeleyen bir görünüme Node: Post date (desc) (Düğüm: Yazılma tarihi (azalan)) sıralama kriteri eklendiğinde, görünümün çıktısında yer alan içerikler en son yazılandan ilk yazılana doğru sıralanacaktır.
  • [6] Display (tr: çıktı, görüntü): Bir görünümün çıktısı sayfa, blok veya RSS beslemesi olabilir. Her görünüm için bir adet varsayılan (ing: Default) görüntü tanımlıdır; burada görünümün diğer çıktıları için ortak olan ayarlar kaydedilmektedir. Çıktılar varsayılan görünümden farklı ayarlar kullanabilirler. Sayfa çıktısı içerik listesini tanımlanan adreste sunarken, blok çıktısı ise Blok yönetim sayfasından temanızın çeşitli bölgelerine yerleştirebileceğiniz bir blok oluşturur.
Bu yapılarla ilgili detaylı açıklamalar bu sayfaya alt-sayfa olarak eklenecektir.

TurkHackTeam.Net/Org - The Cry 2011
 

The Cry

Kıdemli Üye
19 Eki 2007
3,111
10
"-Her Yerden-"
Views: Temel Ayarlar

Bu sayfada Views eklentisi ile oluşturulan görünümlerin temel ayarlarını inceleyeceğiz.
Yeni bir görünüm oluştururken ilk aşamada görünümün adı ve türü gibi bazı temel bilgileri girmek gerekir.
ders_views_115_viewtype.png


  1. Görünüm adı (ing: view name): Görünümün adını alfanümerik karakterler kullanarak girin. Bu kısımda Türkçe karakterler, noktalama işaretleri, boşluk, tire gibi karakterler kullanılamaz. Ör: populer_yazilar.
  2. Görünüm tanımı (ing: view description): Sitenizdeki tüm tanımlı görünümlerin listelendiği Views ana yönetim sayfasında gösterilecek ve görünümün ne ile ilgili olduğunu açıklayan kısa bir cümle girin. Ör: Sitemizdeki En Popüler Yazılar.
  3. Görünüm etiketi (ing: view tag): Views ana yönetim sayfasında görünümleri konularına göre gruplamak için kullanılacak bir etiket girebilirsiniz. Örnek: top10.
  4. Görünüm türü (ing: view type) : Görünümün temel çıktısısını seçin. Views eklentisi, Drupal 6.x ile birlikte sadece düğümlerle sınırlı olmaktan çıkmıştır. Mevcut seçenekler:
    • düğüm (ing: node),
    • dosya (ing: file),
    • kullanıcı (ing: user),
    • içerik sürümü (ing: node revision),
    • terim (ing: term),
    • yorum (ing: comment).
Sadece yeni bir görünüm oluştururken girdiğimiz bu ayarlardan sonra standart görünüm düzenleme sayfasına yönlendiriliyoruz. Bu sayfada öncelikle görünümle ilgili bazı temel ayarları yapmalıyız.
ders_views_125_basicset.png
Görünümle ilgili temel ayarlar Basic settings bölümünde yeralıyor. Bu ayarları kısaca özetleyelim:


  • İsim: Görünümler birden fazla çıktıya sahip olabilirler. Genellikle tercih edilen çıktılar sayfa (ing: page) ve blok (ing: block) görüntüleri (display)'dir. Resimde görülen görüntü adı Defaults'dur. Defaults her görünüm için tanımlı olan varsayılan bir görüntüdür. Amacı görünümün sayfa, blok gibi farklı görüntülerinde kullanılacak ortak ayarları kaydetmektir. Şuanda düzenlemekte olduğumuz görüntünün adı buradan değiştirilebilir. Bu ad sadece yönetim arayüzünde kullanılır.
  • Başlık: Sayfa görüntülerinde sayfa başlığı, blok görüntülerinde de blok başlığı olarak kullanılacak başlık.
  • Stil (ing: style): Görünümün stili ızgara (ing: grid), liste, tablo veya biçimsiz (ing: unformatted) olarak seçilebilir. Izgara stili fotoğraf galerisi tarzı görünümler için kullanılır, içerik alanını sütunlara böler. Liste madde işaretleri kullanarak listeleme yaparken, tablo içerik alanlarını tablo sütunları ile ayırarak sunar. Biçimsiz kullanıldığında ise içerikler standart olarak alt alta gösterilir. Seçeceğiniz stilin kendine ait ayarları da olabilir. Örneğin ızgara stilinde içerik alanını kaç sütuna böleceğinizi veya liste stilinde sıralı/sırasız liste tercihinizi belirtmeniz gerekir. Not: Tablo stilini kullanmanız durumunda düğümler özet görünüm olarak değil, Fields bölümünden ekleyeceğiniz alanlardaki bilgileriyle listelenecektir.
  • Satır stili (ing: row style): Tablo stili haricindeki diğer stillerde, buradan içeriklerin düğüm özetleri halinde mi yoksa Fields bölümüne ekleyeceğiniz alanlardaki bilgileriyle mi listeleceğinizi seçebilirsiniz. Tablo stili her zaman alanları kullandığından bu seçenek görüntülenmemektedir.
  • Ajax kullanımı (ing: use ajax): "Evet" seçildiğinde görünümde sayfalar arasında dolaşma, tablolardaki sıralamaları değiştirme ve açık filtreler ile süzme işlemleri Ajax kullanımı sayesinde sayfa tümden yenilenmeden gerçekleştirilir.
  • Sayfalandırma (ing: use pager): Sonuçları sayfalara ayrılmış olarak göstermek isterseniz sayfa numaralarını gösteren bir sayfalandırma aracı kullanabilirsiniz.
  • Gösterilecek kayıt sayısı (ing: items to display): Buradan her sayfada gösterilecek kayıt sayısını seçebilirsiniz. "0" girerek tüm içerikleri tek bir sayfada listelebilirsiniz.
  • "Devamı" linki (ing: more link) Genellikle hem blok hem sayfa görüntüleri olan görünümlerde, blok görüntülerinde sınırlı sayıda sonuç gösterip devamı için sayfa görüntüsüne yönlendirme yapan bir "devamı" linki eklemek için kullanılır.
  • Farklı içerik (ing: distinct): Bazı görünümlerde aynı içerik birkaç kez listelenebilir. Bunu engellemek için bu özelliği etkinleştirebilirsiniz. Not: Her görünümde işe yaramayabilir. Ayrıca sorgu sürelerinin uzamasına sebep olabilir.
  • Erişim (ing: access): Bu görünüme erişimi herhangi bir kulllanıcı rolüne (kayıtsız kullanıcı, kayıtlı kullanıcı, vs.) veya tanımlı herhangi bir izine göre kısıtlayabilirsiniz. Unrestricted'da erişim kısıtlaması yoktur.
  • Açık filtreler bloğu (ing: exposed form in a block) Etkinleştirdiğinizde, görünümde tanımlı açık filtreler görünümle birlikte sunulmak yerine blok yönetim sayfasından kontrol edebileceğiniz bir blok olarak sunulur. Bu bloğu etkinletirip herhangi bir tema bölgesine yerleştirmeniz gerekmektedir.
  • Başlık (ing: header): Otomatik çeviri sebebiyle başlık olarak çevrilmiş olsa da esas olarak görünümün hemen üstünde yer almasını istediğiniz açıklama vb. bilgileri girebileceğiniz bir yer sunar.
  • Dipnot (ing: footer): Görünümün hemen altında yer almasını istediğiniz açıklama vb. bilgileri girebilirsiniz.
  • "İçerik yok" mesajı (ing: empty text): Görünümde gösterilecek herhangi bir içerik bulunamadığında bunu kullanıcılara belirten "Henüz bir içerik yok" gibi bir ifade yazabilirsiniz.
  • Tema bilgisi (ing: theme information): Burada mevcut görünümü özelleştirmek üzere oluşturabileceğiniz tema dosyalarının bir listesini bulabilirsiniz.
Görünüme ekleyeceğiniz her sayfa, blok ve besleme çıktısının kendi özel ayarları da olacaktır. Yeni bir çıktı eklendiğiniz bu ayarlar Basic Settings bloğunun altında yer alan yeni bir blokta sunulurlar.
ders_views_130_xtsettings.png

Sayfa Ayarları


  • Yol (ing: path): Sayfanın ulaşılacağı site içi yolu buraya girin. (Ör: populer-yazilar.html)
  • Menü: Bu sayfa için herhangi bir menüye link eklemek istiyorsanız buradan belirtebilirsiniz.
Blok Ayarları


  • Admin: Blok yönetim sayfasında bu blok için gösterilecek açıklama
Besleme (ing: feed) Ayarları


  • Yol (ing: path): Beslemenin ulaşılacağı site içi yolu buraya girin. (Ör: populer-yazilar/rss.xml)
  • Bağla (ing: attach to): Turuncu besleme ikonunun gösterileceği görüntüleri seçin (ör: blok, sayfa1, sayfa2, vs.)
TurkHackTeam.Net/Org - The Cry 2011
 

The Cry

Kıdemli Üye
19 Eki 2007
3,111
10
"-Her Yerden-"
Views: Fields (Alanlar)

Birçok sayfada düğümler standart olarak özet görünümleri ile listelenirler. Fakat bazı uygulamalarda (örneğin bloklarda) liste ve tablo gibi daha kompakt stiller tercih edilir. Bu durumda, düğümler özet görünümleri yerine başlık, yazar adı, gönderilme tarihi gibi seçilen bazı bilgi alanları ile listelenir. İşte bu alanları görünümlerde Fields başlığı altında ekliyor ve düzenliyoruz.
Uyarı: Düğümler listelenirken özet görünümleri yerine eklenen alanların kullanılması için Temel Ayarlar (ing: Basic Settings) kutusundan Satır stili (ing: row style) olarak "Fields"ı seçmeyi unutmayın. Tablo stili için ise böyle bir ayar yoktur çünkü tablolar her zaman alanlar ile kullanılır.
Bir görünümdeki mevcut alanlar Fields başlıklı bir kutuda listelenir. Eğer görünüme henüz bir alan eklenmemişse bu liste boş olacaktır. Fields bölümünde yapılabilecek işlemler ve ayarlar şöyle:
ders_views_210_alanlar.png


  • [1] Alan ekle: Görünümde gösterilecek yeni bir alan eklemek için Fields kutusunun sağ üst köşesinde yer alan + değmesine tıklıyoruz ve sayfanın alt tarafında görünüme ekleyebileceğimiz alanların bir listesi çıkıyor. Buradan istediğimiz alanları işaretleyip "Add" düğmesine tıklıyoruz. Bunun devamında eklediğimiz alan ile ilgili detayları gireceğimiz bir kutu açılıyor. Bununla ilgili bilgileri yazının devamında bulabilirsiniz.
  • [2] Alan düzenle: Görünümdeki mevcut alanların sıralamasını değiştirmek veya alanları görünümden silmek için kullanabilirsiniz.
Yeni bir alan eklerken "Add" düğmesine tıkladığınızda veya mevcut alanlardan birine tıkladığınızda alana ait detayların düzenleneceği bir kutu açılacaktır. Burada bulunan ayarlar birçok alan için standarttır fakat bazı alanlar kendi özel ayarlarını içerebilir. Örneğin Düğüm: Tür alanı için sunulan ayarlar ve anlamları şu şekilde:
ders_views_220_detaylar.png


  • [3] Label (tr: etiket): Alanla birlikte gösterilecek etiket. Örneğin Düğüm: Başlık alanı için "Başlık" girerseniz alan kullanıcılara şöyle gösterilir: "Başlık: Düğümün Başlığı". Boş bırakılan etiketler gösterilmez.
  • [4] Exclude from display (tr: gösterilmesin): Seçildiğinde alan kullanıcılara gösterilmez fakat alan değeri görünüm kodunda yer alır. Genellikle özel görünüm temaları oluştururken kullanılır.
  • [5] Link this field to its node (tr: bu alanı düğüme yönlendir): Alan, tıklanıldığında ilgili düğüme yönlendiren bir link haline gelir. Genellikle Düğüm: Başlık alanı için tercih edilir.
  • [6]/[7] Override/Update default display: Alan ile ilgili ayarları yaptığınızda bunların etkin olabilmesi için kaydetmeniz gerekmekte. Eğer Default haricinde bir görüntü (ing: display) üzerinde bu ayarları yapıyorsanız bu durumda iki seçeneğiniz var: (i) Override düğmesine tıklayarak bu ayarları sadece şuan üzerinde uğraştığınız görüntü için kaydedebilirsiniz veya (ii) Update default display düğmesine tıklayarak şuan uğraştığınız görüntünün yanında görünümdeki diğer tüm görüntüler (default, sayfa, blok, rss, vs.) için de bu ayarları geçerli kılarsınız. Override seçeneği Default görüntüsünde düzenlemeler yaparken sunulmaz.
  • [8] İptal (ing: cancel) Yeni bir alan ekliyorsanız bunu iptal edebilir veya mevcut bir alanı düzenliyorsanız yaptığınız değişiklikleri geri alabilirsiniz.
  • [9] Çıkar (ing: remove) Seçtiğiniz alanı görünümden silebilirsiniz.
Alanlarla ilgili bazı temel ayarlara değindikten sonra şimdi de en çok kullanılan bazı alanları tanıtalım:

  • Düğüm: Başlık (ing: Node: Type): Düğüm başlığı
  • Node: Comment count (tr: Düğüm: Yorum sayısı): Düğüme yapılan yorumların sayısı
  • Node: Has new content (tr: Düğüm: Yeni içerik uyarısı) Kullacının henüz okumamış olduğu düğümler ve okumuş olduğu fakat yeni yorum yapılmış düğümler için"yeni", "güncel" gibi uyarılar ekler. drupaldersleri.org anasayfasında birçok blokta bu alan kullanılmıştır.
  • Node: New comments (tr: Düğüm: Yeni yorumlar) Düğümde kullanıcının henüz okumamış olduğu yorum sayısı. Bu alan drupaldersleri.org anasayfasında Son Yorumlananlar bloğunda kullanılıyor.
  • Düğüm: Updated/commented date (tr: Düğüm: Güncellenme/yorumlanma tarihi) Bir düğüm için güncellenme ve son yorum tarihlerinden hangisi daha yeni ise o tarihi gösterir.
Son bir not: Normalde eklediğiniz alanlar düğümler listelenirken alt alta görünürler. Örneğin:

  • Birinci düğüm adı
    Birinci düğüm yazarı
    Birinci düğüm güncellenme tarihi
  • İkinci düğüm adı
    İkinci düğüm yazarı
    İkinci düğüm güncellenme tarihi
gibi. İsterseniz bu alanları altalta yazdırmak yerine bazılarını aynı satırda gösterebilirsiniz. Bunun için Temel Ayarlar kutusunda Row Style satırının en sağında bulunan çark ikonuna tıklamanız gerekiyor. Böylece açılan sayfada yanyana gösterilmesini istediğiniz alanları işaretleyebileceksiniz. İsterseniz Ayraç kutusuna "|" gibi karakterler girerek bu alanların yanyana yazıldıklarında bu karakterlerle ayrılmalarını sağlayabilirsiniz.
ders_views_230_style_ops.png

TurkHackTeam.Net/Org - The Cry 2011
 

The Cry

Kıdemli Üye
19 Eki 2007
3,111
10
"-Her Yerden-"
Views: Filters (Süzgeçler)

Oluşturduğunuz bir görünümde herhangi bir süzgeç kullanmazsanız, görünüm sitenizin veritabanında kayıtlı tüm içeriklerin bir listesi döndürecektir. Elbette bu pek tercih edilen bir kullanım değil; genellikle görünümlerin belirli kriterlere uyan içerikleri göstermesi istenir. İşte bu kriterler, Views'teki Fields bölümünde, her biri bir süzgeç olacak şekilde eklenir.
Bir görünümde yer alan mevcut süzgeçler, görünüm düzenleme sayfasında Filters başlıklı kutu altında listelenirler. Buradan görünüme yeni süzgeçler ekleyebilir, mevcut süzgeçlerin özelliklerini veya sıralamasını değiştirebiliriz.
ders_views_310_suzgecler.png


  • [1] Süzgeç ekle: Görünümde kullanılacak yeni bir süzgeç eklemek için Filters kutusunun sağ üst köşesinde yer alan + değmesine tıklıyoruz ve sayfanın alt tarafında görünüme ekleyebileceğimiz süzgeçlerin bir listesi çıkıyor. Buradan istediğimiz süzgeçleri işaretleyip "Add" düğmesine tıklıyoruz. Bunun devamında eklediğimiz süzgeç ile ilgili detayları gireceğimiz bir kutu açılıyor. Bununla ilgili bilgileri yazının devamında bulabilirsiniz.
  • [2] Süzgeçleri düzenle: Görünümdeki mevcut süzgeçlerin sıralamasını değiştirmek veya süzgeçleri görünümden silmek için kullanabilirsiniz.
Yeni bir süzgeç eklerken "Add" düğmesine tıkladığınızda veya mevcut süzgeçlerden birine tıkladığınızda süzgeçe ait detayların düzenleneceği bir kutu açılacaktır. Burada bulunan ayarlar süzgecin işlevine göre farklılık gösterebilir (bkz. [3]). Örneğin Düğüm: Tür süzgeci için sunulan ayarlar ve anlamları şu şekilde:

  • [3] Süzgece özel ayarlar: Bu kısımda süzgece göre değişen ayarlar sunulur. Düğüm: Tür süzgeci içerikleri türlerine göre süzme imkanı sunmaktadır. Dolayısıyla burada süzülmesini istediğimiz içerik türlerini belirtebileceğimiz bazı ayarlar yer alıyor. Node Type (tr: düğüm türü) kısmında süzgece ekleyeceğimiz içerik türlerini seçip Operators (tr: işleçler) kısmında da süzgecin çalışma mantığını belirtiyoruz. Is one of (tr: bunlardan herhangi biri) işleci seçilmiş olan içerik türlerinden herhangi birine ait olan tüm içerikleri listelerken, Is not one ofbunlardan hiçbiri) işleci ise tam aksine, seçili olan içerik türleri dışındaki türlere ait olan içerikleri listeler. (tr:
  • [4] Expose (tr: aç): Eğer süzgecin ayarlarını kullanıcıların değiştirebilmesini istiyorsanız bu düğmeye tıklayarak süzgeci "açık süzgeç (ing: exposed filter)" haline getirebilirsiniz. Drupaldersleri.org sitemizde Eklenti ve Vitrin sayfalarındaki kategorilere göre süzme işlemi bu yöntemle kullanıcılara sunulmaktadır.
  • [5] Güncelle (ing: update): Süzgeç ile ilgili yapmış olduğunuz ayarları kaydeder.
  • [6] İptal (ing: cancel) Yeni bir süzgeç ekliyorsanız bunu iptal edebilir veya mevcut bir süzgeci düzenliyorsanız yaptığınız değişiklikleri geri alabilirsiniz.
  • [7] Çıkar (ing: remove) Seçtiğiniz süzgeci görünümden silebilirsiniz.
Aslında alan, süzgeç, değişken, sıralama kriteri ve ilişkilerin genel kullanım mantıkları hemen hemen aynıdır. Buradaki anlatımda da gördüğünüz gibi asıl fark, herbirinin farklı ayarlara sahip olmasından kaynaklanıyor.
Süzgeçlerin kullanımı ile ilgili genel bir bilgi sunduktan sonra şimdi de en sık kullanılan süzgeçlerden bir bölümünü açıklayalım:

  • Düğüm: Yayında (ing: Node: Published) Sadece yayınlanmış içerikleri listeler.
  • Node: Published or admin (ing: Düğüm: Yayında veya admin) Admin dışındaki kullanıcılar için sadece yayınlanmış içerikleri listelerken, admin için yayında olmayan içerikler de listelenir.
  • Düğüm: Comment count (tr: Düğüm: Yorum sayısı): Genellikle "yorum sayısı > 0" ile yorum yazılmış içerikleri listelemek için kullanılır.
  • Düğüm: Has new content (tr: Düğüm: yeni içerik var) Kullanıcının son okuduğundan beri güncellenmiş veya yeni yorum yapılmış içerikleri listelemek için kullanılır.
  • Düğüm: Tür (ing: Node: Type): Belirli bir türdeki içerikleri listelemek için kullanılır.
  • Taksonomi: Term (tr: Taksonomi: Terim) Belirli bir kategorideki içerikleri listelemek için kullanılır.
  • Kullanıcı: Roller (ing: User: Roles): Belirli bir rolledeki kullanıcıları listelemek için kullanılır.
 

The Cry

Kıdemli Üye
19 Eki 2007
3,111
10
"-Her Yerden-"
Views: Sort Criteria (Sıralama)

Görünümlerinize çeşitli sıralama kriterleri ekleyerek, içeriklerinizin farklı şekillerde sıralanmasını sağlayabilirsiniz. Views ile birlikte hazır olarak gelen sıralama kriterleri birçok seçenek sunduğu gibi kuracağınız bazı eklentiler de kendi kriterlerini beraberlerinde getirebilirler. Bu kriterleri kullanarak içeriklerinizi yeniden eskiye, en çok yorumlanandan en az yorumlanana, en çok görüntülenenden en az görüntülenene gibi farklı şekillerde sıralayabilirsiniz.
Sıralama kriterleri görünüm düzenleme sayfasında Sort Criteria başlığı altında listelenirler. Alan ve süzgeçlerde olduğu gibi, sıralama kutusunun sağ üst köşesinde bulunan düğmeleri kullanarak görünüme yeni sıralama kriterleri ekleyebilir, mevcut olanları silebilir veya sırasını değiştirebilirsiniz.
ders_views_410_siralama.png

Kriter listesinde bulunan herhangi bir kritere tıkladığınızda veya yeni bir kriter eklediğinizde, bu kriterin detayları sayfanın alt bölümünde bir kutu içinde sunulur. Buradan sıralamanın artan (ing: ascending) mı yoksa azalan (ing: descending) yönde mi yapılacağını [1] seçebilirsiniz. Bunun yanında, seçtiğiniz kritere göre değişen bazı özel ayarlar [2] da sunulabilir. Ayarları tamamlayıp güncelle (ing: update) düğmesine tıkladığınızda ayarlarınız kaydedilecektir.
ders_views_420_detaylar.png

Görünümlerde tablo stilinin kullanılması durumunda alternatif bir sıralama yöntemi de kullanılabilmektedir. Bunun için Temel Ayarlar (ing: basic settings) kutusunda Style (tr: stil) değerinin Table (tr: tablo) olması gerekiyor. Tablo stili seçili olduğunda aynı satırın sonunda yer alan çark ikonuna tıkladığınızda tablodaki mevcut sütunların listelendiği bir kutu açılacak. Buradan sıralama yapılmasını istediğiniz tablo sütunlarını [3] seçebilir ve tablonun kullanıcıya ilk gösterilediğinde hangi sütuna göre sıralanmış olacağını [4] belirtebilirsiniz.
ders_views_430_tablo.png

Görünümlerde en çok kullanılan sıralama kriterlerinden bazıları şöyle:

  • Düğüm: Başlık (ing: Node: Title): İçerik başlıklarına göre alfabetik olarak sıralar.
  • Düğüm: Comment count (tr: Düğüm: Yorum sayısı): İçerikleri yorum sayılarına göre sıralar. En çok yorumlanan içerikleri göstermek için kullanılır.
  • Düğüm: Last comment time (tr: Düğüm: Son yorum zamanı): İçerikleri son yorum zamanına göre sıralar. En son yorumlanan içerikleri göstermek için kullanılır.
  • Düğüm: Post date (tr: Düğüm: Yayın tarihi) İçerikleri siteye eklenme tarihine göre sıralar. En yeni içerikleri göstermek için kullanılır.
  • Düğüm: Updated/commented date (tr: Düğüm: Güncellenme/yorumlanma tarihi): İçerikleri güncellenme ve yorumlanma tarihlerinden hangisi daha yeniyse o tarihi kullanarak sıralar. Sitedeki en güncel içerikleri (güncellenen + yorumlanan) göstermek için kullanılır.
  • Global: Random (tr: Genel: Rassal): İçerikleri rasgele sıralar.
 

The Cry

Kıdemli Üye
19 Eki 2007
3,111
10
"-Her Yerden-"
Views: Relationships (İlişkiler)



Bazen görünümlerde sunmak istediğimiz bilgiler veritabanında tek bir tabloda bulunmazlar. Örneğin yorumları listeleyen bir görünüm ana tablo olarak yorum tablosunu {comments} kullanır. Bu görünümde yorumun yazıldığı düğüm ile ilgili başlık, yazar, vb. bilgiler vermek isteyebilir veya sadece yayınlanmış düğümlere yapılan yorumları süzmek isteyebiliriz. Ancak yorum tablosunda yorumun yazıldığı düğüm ile ilgili bilgiler yer almaz. Bunun için yorum tablosu {comments} ile düğüm tablosu {node} arasında bir ilişki kurmamız gerekir. Views'te bu ilişki Relationships bölümünden kuruluyor.
Yukarıda bahsettiğimiz örneğe geri dönelim. Amacımız yorumları listelerken yorumların yazıldıkları düğümle ilgili bilgi vermek. Ancak bu alanları eklemek istediğimizde Views'in bize yaklaşık 10 civarında sadece yorumla ilgili alan sunduğunu göreceğiz. Yani şu aşamada düğümlerle ilgili herhangi bir bilgi eklememiz mümkün değil. Düğümlere ait alanları etkin hale getirebilmek için görünüme yorum ve düğüm tabloları için bir ilişki eklememiz gerekiyor. Bu ilişki eklendikten sonra Views hem yorum ve düğüm tablolarındaki kayıtları eşleştirebilecek hem de bize görünüme ekleyebileceğimiz düğümle ilgili alanlar, süzgeçler ve sıralama kriterleri sunacak.
Görünüme yeni bir ilişki eklemek, silmek ve sırasını değiştirmek aynı alan, süzgeç ve sıralama kriterlerindeki gibi yapılıyor. Dolayısıyla bu konuda detaya girmeden anlatıma devam edeceğim. İlk olarak yapacağımız şey Relationships kutusundan +'ya tıklayarak tanımlı ilişkilerin listesini görmek. Eğer sitemizde çok fazla etkin eklenti yoksa burada çok fazla seçenek olmayacaktır. Örnekteki yorumları listelediğimiz için çekirdek yorum eklentisi Comment'in etkin olduğunu varsayıyorum (zaten bu eklenti etkin değilse sitemizde yorum bulunmayacağı için yorumları listeleyen bir görünüm yapmanın da anlamı yok). Views yorum eklentisi için 3 ilişki sunuyor: düğüm, kullanıcı ve parent comment (yorumlara yapılan yorumlar için). Bizi düğüm bilgileri ilgilendirdiği için buradan Yorum: Düğüm ilişkisini seçerek görünümümüze ekliyoruz.
ders_views_510_iliskiler.png

Bu aşamadan sonra tekrardan alan ekleme bölümüne gidip ekleyebileceğimiz alanların listesine bakacak olursak artık sadece yorumlarla ilgili değil, düğümlerle ve hatta kitap (book eklentisi), node revision (node eklentisinin sunduğu içerik sürüm bilgileri), taksonomi (taxonomy) ve içerik (cck) ile ilgili alanların da yer aldığını göreceğiz. Aslında biz yorumları sadece düğüm tablosu {node} ile ilişkilendirmiştik, peki niye böyle oldu, bu diğer alanlar nerden geldi? Bunun sebebi Views'in düğüm tablosuyla bu diğer tablolar arasındaki ilişkileri otomatik olarak eklemesi. Ancak bu ilişkiler kendi eklediğimiz ilişkiler gibi Relationships kutusunda listelenmiyor. Aslında bu durum ilişkileri anlamaya çalışanların başta biraz kafasını karıştırabiliyor ama aynı zamanda bazı ilişkilerin otomatik eklenmesi işleri kolaylaştırıyor da. Kısacası bunu olumlu ya da olumsuz bir özellik olarak düşünebilirsiniz (Views'in geliştiricisi için bu otomatik ilişkiler bir hata ancak durumun farkına varmakta geç kaldığı için sonradan değiştirememiş). Neyse, sonuçta Yorum: Düğüm ilişkisi görünümüzde olduğu sürece görünümümüze düğümler ile ilgili alanlar ekleyebileceğiz. Örneğin Düğüm: Başlık alanını ekleyerek yorumun yazıldığı düğümün adını göstermek isteyebiliriz.
ders_views_520_iliski_alani.png

İlişkiler sadece alanlarda geçerli değil elbette. Örneğin bu tarz yorum listeleyen bir görünümde Düğüm: Yayında veya Düğüm: Published or admin süzgeçlerini kullanmak isteyebiliriz. Çünkü yorum yazılmış olan bir düğümü yayından kaldırdığımızda, bu düğüme yazılan yorumların görünümümüz tarafından hala gösteriliyor olmasını istemeyiz. Bu süzgeçleri eklemek için tahmin edebileceğiniz üzere Yorum: Düğüm ilişkisinin daha önceden görünüme eklenmiş olması gerekiyor. Bu anlatımı takip ettiğinizi ve bu ilişkiyi eklemiş olduğunuzu varsayarsak şu anda bu süzgeçler Filtreler bölümünden seçilebilir durumda olacaklardır.
Eğer bir görünüme birden fazla ilişki eklediysek, bu durumda yeni bir alan, süzgeç veya sıralama kriteri eklerken mevcut ilişkilerden birini seçebiliriz. Peki bu tam olarak ne anlama geliyor? Şöyle açıklamaya çalışayım. Diyelim ki görünüme Yorum: Düğüm ilişkisi ile birlikte Yorum: Kullanıcı ilişkisini de ekledik. Views'in düğüm ile kullanıcı arasındaki ilişkiyi de otomatik olarak ekleyeceğini biliyoruz. Sonuçta bir yoruma ait elimizde kullanıcı tablosundan {user} alınmış iki veri kümesi olacak; biri yorumun yazarına ait ve Yorum: Kullanıcı ilişkisi ile elde edilmiş, diğer ise yorumun yazıldığı düğümün yazarına ait ve bizim eklediğimiz Yorum: Düğüm ilişkisi sonrasında Views'in otomatik olarak eklediği gizli Düğüm: Kullanıcı ilişkisi üzerinden elde edilmiş (ancak bu ilişki gizli olduğundan bizim eklediğimiz ilişkinin adını kullanıyor, yani Yorum: Düğüm). Buraya kadar bir sorun yok sanırım. Peki şimdi işleri biraz daha karıştıralım ve görünüme Kullanıcı: İsim alanını ekleyelim (aslında amacımız yorumun yazarını göstermek olsaydı Yorum: Yazar alanını eklemek yeterli olurdu; ancak buradaki amacımız ilişki seçimini göstermek olduğu için Kullanıcı: İsim alanını eklemeyi tercih ettim). Şimdi burada Views'in yerine ben olsaydım, bu işlemi yapan kişiye "iyi de, hangi kullanıcının adı? Yorum yazarının mı yoksa düğüm yazarının mı?" diye sorardım herhalde :) Çünkü elimde iki farklı ilişki üzerinden elde edilmiş iki kullanıcı bilgisi var ve bana ek bir bilgi verilmediği sürece hangisini kullanmam gerektiğini bilemem. Views için de durum farklı değil. Bu yüzden bir alanın değeri birden fazla ilişki üzerinden alınabiliyorsa hangi ilişkinin kullanılmasını istediğimizi seçmeliyiz. Örneğimizde Kullanıcı: İsim alanının değeri mevcut iki ilişkiden de alınabileceği için hangisini kullanacağımızı belirtiyoruz.
ders_views_520_iliski_sec.png

Views'te relationships yani ilişkiler ile ilgili anlatılabilecekler bu kadar. Öyle çok karışık ve detaylı bir kullanımı da yok aslında. Zaten SQL bilenler için Relationships'in LEFT JOIN işlemine karşılık geldiğini bilmeleri, kullanımını anlamaları için yeterli olur.
 

The Cry

Kıdemli Üye
19 Eki 2007
3,111
10
"-Her Yerden-"
Views: Arguments (Değişkenler)

Argument (tr: dinamik değişken, argüman) kavramını bir URL'yi oluşturan parçalardan her biri olarak tanımlayabiliriz. Örneğin site.com/taxonomy/term/1 URL'sini düşünecek olursak burada 3 adet argument mevcuttur; bunlar sırasıyla "taxonomy", "term" ve son olarak da taksonomi teriminin id değerini belirten "1". Views kapsamındaki argument ise Views süzgeçlerine benzer bir işlev sunar; ancak süzgeçlerde olduğu gibi değerler görünümde bizim tarafımızdan girilmez, bunun yerine URL'den alınır. Dinamik süzgeçler gibi çalışan argumentlar sayesinde görünümler daha büyük bir esneklik kazanmaktadır.
Sadece daha önceki derslerde ele aldığımız süzgeçleri kullanarak Views ile çok çeşitli görünümler oluşturmak mümkün elbette. Peki bu anlatımın konusu olan argument işlevine niye gerek duyuyoruz? Bu soruya şöyle bir cevap verilebilir: Görünümler belirlediğimiz bazı kriterlere uyan içerikleri listeler. Arguments kullanılmadığında, görünümde yer alan kriterlerin değerlerini görünümü oluştururken belirlememiz gerekir; örneğin "düğüm türü = kitap" gibi. Dolayısıyla bu görünüm her zaman kitap türündeki içerikleri gösterir. Diyelim ki sitemizde 5 farklı içerik türü var. Bu yöntem ile yani argument kullanmadan, sitemizdeki her farklı içerik türü için o türdeki içeriklerin listeleneceği ayrı bir sayfa oluşturmak istiyoruz. Bu durumda bize sadece süzgeçlerin değerleri farklı olan 5 sayfa görüntüsü gerekecektir. 5 çok büyük bir rakam değil; o yüzden bu yöntem kullanılabilir. Ancak argument kullanımı ile kriter değerini görünüme sonradan URL üzerinden vererek bu işlevi tek bir sayfa görüntüsü ile halletme imkanımız olduğunu da belirtmek isterim. Bu durum bazı uygulamalar için böyle basit bir avantaj olmaktan çıkıp zorunluluk haline de gelebiliyor. Örneğin her kullanıcı için o kullanıcıya ait yorumlarının listelendiği ayrı bir sayfa oluşturmak istiyorsunuz ve sitenizde 10bin kullanıcı var; herhalde bu durumda 10bin sayfa görünümünü tek tek oluşturmakla uğraşmak istemezsiniz :)
Devam edip argument kullanıma ilişkin bilgilere geçmeden önce, başta yazdığım bir bilginin tam olarak doğru olmadığını belirtip bu konuyu biraz açmak istiyorum. Daha önceden Argument değerlerinin URL'den alındığını söylemiştim. Aslında bu durum görüntüye göre değişiklik gösterebilmektedir. Örneğin sayfa görüntüsü argument değerini doğrudan URL'den alırken, blok görüntüsü için hazır bir kaynak yoktur. Bu yüzden bloklar için konunun ilerleyen bölümlerinde bahsedeceğim şekilde php kodu kullanarak argument değerini URL'den kendimiz alıp vermemiz gerekiyor. Dolayısıyla argument kullanarak oluşturduğunuz bir blok görüntüsü çalışmıyorsa, görünümün argument değerinin URL'den kendi alacağını düşünerek bir yanlış yapmış olabilirsiniz. Bu ayrıntıyı şimdiden aklınızın bir kenarına yazmanız iyi olur.
Evet, artık görünüme Argument eklemeyle ilgili detaylara girebiliriz. Görünüme argument eklemek için Arguments kutusunun sağ üst köşesindeki "+" düğmesine tıklayarak mevcut argument listesini açıyor ve buradan içerikleri süzmek için kullanmak istediğimiz argument'ı işaretleyerek Add'e tıklıyoruz.
ders_views_610_argument.png

Argument seçildikten sonra oldukça detaylı bir ayar kutusu çıkıyor karşımıza. Burada argument için kullanılacak ilişkiden, url'de argument bulunamaması durumunda yapılacak işleme ya da argument'ın bulunması durumunda geçerliği olup olmadığının kontrolüne kadar birçok konuda tercihimizi belirtebiliyoruz. Şimdi bunları sırayla inceleyelim:
ders_views_620_arg_detay.png


  • [1] Relationship: Eğer görünüme bir ilişki eklediyseniz burada bu argument için kullanılacak ilişkiyi seçebilirsiniz (bkz. Views: Relationships dersi). Görünüme eklenmiş bir ilişki olmaması durumunda bu kısım gösterilmeyecektir.
  • [2] Başlık: Normalde görünümüm başlığını Basic Settings kutusundaki Başlık bölümünden ayarlıyoruz. Ancak başlığın url'ye yani argument değerine göre değişmesini istiyorsak burada standart başlığın yerine geçecek bir başlık tanımlayabiliriz. Başlıkta argument değerlerini "%" işareti ile kullanabiliyoruz. Örneğin görünümdeki ilk argument'ın değeri için "%1", eklenmişse ikinci argument'ın değeri için "%2" gibi. Dolayısıyla Kullanıcı: İsim argument'ı için şöyle bir kullanım mümkün: "%1 kullanıcısının içerikleri".
  • [3] Action to take if argument is not present: Eğer url'de argument bulunamıyorsa bu durumda görünümün nasıl bir sonuç göstereceğini seçiyoruz. Seçeneklerimiz şunlar:
    • Display all values: Argument ile herhangi bir süzme işlemi yapmadan diğer kriterlere uyan sonuçların hepsini gösterir.
    • Hide view / Page not found (404): Boş sonuç döndürür. Bu durumda sayfa görüntüleri için "404: sayfa bulunamadı" hatası verilirken, bloklar ise gösterilmez.
    • Display empty text: Basic Settings kutusunda girilen Empty Text metnini gösterir. Genellikle "herhangi bir sonuç bulunmadı" tarzında mesajlar göstermek için kullanılır.
    • Summary (alfabetik veya ters alfabetik sırada): Görünümün kendisi yerine argument'ın alabileceği değerlerin listesi sunulur. Bu listedeki değerler link şeklindedir ve herhangi birine tıklandığında argumentin o değeri için süzülmüş görünüm gösterilir. Genellikle belirli bir içerik türü için kullanılan taksonomi terimlerinin listesini sunmak veya içerikler için alfabetik bir ABC indeksi oluşturmak için kullanılır.
    • Provide default argument: Url'de argument bulunmaması durumunda varsayılan bir argument değerinin kullanılmasını sağlar. Bu seçenek tercih edildiğinde ek seçenekler sunulmaktadır (ilişkiler ve eklentiler bu seçeneklerin sayısını arttırabilir). Bunlar:
      • Fixed entry: Sabit bir değer
      • Node ID from URL: URL'de düğüm id değeri bulunuyorsa bu değeri alır (ör: node/1/edit yolu için "1" değerini alır).
      • User ID from URL: Bir önceki gibi ancak düğüm id değeri yerine kullanıcı id değerini arar ve kullanır.
      • PHP Code: Argument değerini php kodu ile hesaplayabilir ve return komutu ile görünüme gönderebilirsiniz. Anlatımın başında verdiğim bilgiyi aklınızın bir kenarına yazmanızı söylemiştim; şimdi o bilgiyi tekrar hatırlayalım: "bloklar argument değerini doğrudan URL'den alamazlar". İşte bloklar için genellikle bu seçenek kullanılarak php kodu yardımıyla url'den alınan argument değeri blok görüntüsüne aktarılır. Örneğin user/1 yolundaki "1" değerini Kullanıcı: ID argument'ına aktarmak için şöyle bir kod kullanabilirsiniz (bu örneği kod kullanmadan bir üstteki User ID from URL seçeneği ile de yapabilirsiniz tabii ki ama burada amaç örnek göstermek):

        if (arg(0) == 'user' && is_numeric(arg(1))) {
        return array(arg(1));
        }

        Bu kodda URL'deki argument değerlerini arg() fonskiyonu ile alıyoruz.
        arg(0)=='user' ile ilk argument değerinin useris_numeric(arg(1)) ile de ikinci argument değerinin sayısal bir değer olup olmadığına bakıyoruz. Eğer bu iki koşul da sağlanırsa yukarıdaki php kodu Kullanıcı: ID argument değeri için user/1 yolundaki "1" değerini return array(arg(1)); ile döndürüyor. Sonuçta sitemizin kullanıcı profil sayfalarında göstermek için atayacağımız bu argument'a sahip bir Views bloğu hangi üyenin profiline bakılıyorsa bunu url'den anlayıp o üye ile ilgili içeriği sunacak. Yani user/1 sayfasında id'si bir olan admin kullanıcısı ile ilgili içerikler, user/2 sayfasında id'si 2 olan kullanıcıyla ilgili olan sunulacak. olduğundan emin oluyor,
  • [4] Wildcard: 3'teki Display All Values seçeneğine benzer bir sonuç veren bir kullanım sunar. URL'deki argument yerine Wildcard olarak tanımlanan karakter veya kelime kullanıldığında argument devre dışı kalır ve diğer kriterlere uyan tüm sonuçlar gösterilir. Yani Wildcard olarak "hepsi" girdiysek, taxonomy/term/1 sayfası sadece id'si 1 olan terim ile etiketlenmiş içerikleri gösterirken taxonomy/term/hepsi herhangi bir terim ile etiketlenmiş tüm içerikleri gösterecektir.
  • [5] Wildcard Title: 2'de tanıtılan başlık kısmında argument değerini %1 ile başlığa taşıyabiliyorduk. Ancak Wildcard'ın kullanıldığı bir sayfada sayfa başlığını tekrardan düzenlemek gerekebilir. Örneğin 2'deki başlığı "%1 fotoğrafları" olarak girdiysek, Wildcard başlığı olarak da "Tüm fotoğraflar" gibi bir başlık kullanmak uygun olacaktır.
  • [6] Validator: Sistem görünümün oluşturulması sırasında argument'i görünüm sorgusuna dahil ederken Validator aşamasına geldiğinde artık elinde doğru ya da yanlış bir argument değeri var demektir. Sıra bu değerin belirli parametrelere uygunluğunu kontrol etmeye geldi. Sonuçta yanlış bir argument değerini görünüme dahil etmek istemeyiz, dolayısıyla bu bize bir kontrol sağlar. Kontrolün yanında ayrıca bir de ekstradan süzme yapma şansımız da vardır. Buradaki seçeneklerimiz şöyle:
    • Basic Validation: ekstra bir kontrol veya süzme yapılmaz.
    • Düğüm: Argument değerinin bir düğüm id değeri olup olmadığı ve istenirse görünümün sunulacağı kişinin o düğümlere eişim izni olup olmadığı kontrol edilir. Ayrıca argument'ın sadece belirtilen içerik türleri için dikkate alınmasını sağlayabiliriz.
    • Taksonomi terimi: Argument değerinin bir terim id'si, terim ismi ya da terim eşanlamlısı olup olmadığı kontor edilebilir. Ayrıca bu argument'ın sadece belirtilen sözlükler için dikkate alınmasını sağlayabiliriz.
    • Php Code: Kendi doğrulamamızı php kodu şeklinde yazabiliriz. Kod sonucunda TRUE ya da FALSE değeri döndürülmesi gerekir. Php kodu seçeneği seçiliyken herhangi bir sonuç döndürülmemesi FALSE döndürülmüş olarak kabul edilir.
  • [7] Action to take if argument does not validate: 3'te argument değeri bulunamaması durumunda ne yapılmasını söylüyorduk, burada ise argument değerinin doğrulanaması durumunda ne yapılacağını söylüyoruz. Seçenekler 3 ile aynı, sadece varsayılan argument değeri girilmesini sağlayan Provide default argument seçeneği yok.
  • [8] Allow multiple terms per argument: Seçilirse argument'lar için birden fazla değer verilebilir. Örneğin Taksonomi: Term ID argument'ı, taxonomy/term/1,2,3 veya taxonomy/term/1+2+3 sayfalarında terim id'si 1, 2 ve 3 olan terimlerden herhangi biriyle etiketlenmiş içerikleri listeler.
  • [9] Exclude the argument: Bu noktaya kadar anlatınların hepsi argument değerini sağlayan içeriklerin listeleneceği varsayımınına göre yazıldı. Ancak amaç bunun tam tersi yani bu değeri sağlayan içeriklerin dışında kalan içerikleri listelemek de olabilir. Bu durumda bu seçeneği işaretlemek gerekiyor.
Gerekli tüm ayarlamaları yaptıktan sonra Güncelle düğmesine tıklayarak argument'ı görünümümüze ekliyoruz. Dilersek benzer şekilde görünüme başka argument'lar da ekleyebiliriz. Ancak burada dikkat etmemiz gereken nokta, argument'ların URL'de Arguments kutusunda listelendikleri sırada aranacaklarıdır. Tabii bir de görünümde kullanabileceğimiz argument'ların görünümün içerik türüne (düğüm, yorum, kullanıcı, vs.), görünüme eklenmiş ilişkilere ve sitemizde kurulu eklentilere göre değişebileceğini de unutmayın.
 

The Cry

Kıdemli Üye
19 Eki 2007
3,111
10
"-Her Yerden-"
Yorumlarım Blok ve Sayfası

Bu anlatımda Views 2 (Drupal 6) ile bir uygulama yapacağız. Uygulamanın sonucunda elde etmek istediğimiz özellikler şunlar:

  • Üye profil sayfalarında görüntülenmek üzere kullanıcıya özel bir Son Yorumlarım bloğu,
  • Üye profil sayfalarında bir sekme halinde sunulmak üzere üyenin tüm yorumlarının listelendiği bir Tüm Yorumlarım sayfası.
Yani oluşuturacağımız tek bir görünümde hem sayfa hem de blok görüntüsü (ing: display) hazırlayacağız. Uygulama seçilen konu sebebiyle görünümlerdeki alan (ing: field), sıralama kriteri (ing: sort criteria), süzgeç (ing: filter), ilişki (ing: relationship) ve değişken (ing: argument) elemanlarının hepsini kullanacak. Bu yüzden kompleks fakat faydalı bir uygulama olacağını umuyorum. Sözü uzatmanda hemen başlayalım:
Not: Anlatımda sadece değerleri öntanımlı olanlardan farklı olan ayarlara değinilmiştir. Bahsi geçmeyen diğer ayarları olduğu gibi bırakabilirsiniz.

  1. Görünüm ekleme sayfasındaki (admin/build/views/add) alanları şu şekilde dolduruyoruz ve sonra Next'e tıklıyoruz.
    • View name: uye_yorumlari (türkçe karakter yok)
    • View description: Üye Yorumları (Türkçe karakter serbest)
    • View tag: profil (görünümleri kendi içinde sınıflandırmak için; profil sayfasında görüntülenecek başka görünümler de oluşturursanız onlara da "profil" etiketi vererek tüm bu görünümlerin görünüm listesinde altalta listelenmesini sağlarsınız)
    • View type: Comment (tr: yorum, Görünüm esas olarak yorumları listeleyeceği için "yorum"u seçtik)
    Bu sayfa ile detaylı bilgi için bkz. Views: Temel Ayarlar.
  2. Basic Settings (Defaults görüntüsü için):
    • Title (tr: başlık): Yorumlarım
    • Style: HTML list (tr: listele) -> Unordered (ul) veya ordered (ol)
    Bu ayarlar ile detaylı bilgi için bkz. Views: Temel Ayarlar.
  3. Relationships (Defaults görüntüsü için): Yorum tablosunda yer almayan yorum yazarına ait diğer bilgileri alabilmek için yorum tablosu ile kullanıcı tablosu arasında bir ilişki eklememiz gerekiyor. Bunun için Relationships kutusunun sağ üstündeki +'ya tıklıyor ve aşağıda açılan listeden Comment: User (Yorum: Kullanıcı) ilişkisini işaretleyip Add düğmesine tıklıyoruz. Bir sonraki kutuda hiçbirşeyi değiştirmeyip Update (tr: güncelle) düğmesine tıklıyoruz.
    İlişkiler hakkında detaylı bilgi için bkz. Views: Relationships.
  4. Arguments (Defaults görüntüsü için): Görünüme hangi kullanıcının sayfasında olduğu bilgisi url'den aktarılıyor. Biz bu görünümü kullanıcı profil sayfasında yayınlacağımız için URL'den hangi kullanıcının sayfasında olduğumuzu belirten kullanıcı id değerini yani Uid değerini almalıyız. Bunun için Arguments kutusunun sağ üstündeki +'ya tıklıyor ve aşağıda açılan listeden User: Uid (Kullanıcı: Uid) değişkenini işaretleyip Add düğmesine tıklıyoruz. Sonraki kutuda şu değerleri girmemiz gerekiyor:
    • Action to take if argument is not present: Provide default argument
    • Default argument type: User ID from URL
    Diğerlerini olduğu gibi bırakıp Update (tr: güncelle) düğmesine tıklıyoruz.
    Değişkenler hakkında detaylı bilgi için bkz. Views: Arguments
  5. Fields (Defaults görüntüsü için): Burada listede göstermek istediğimiz yorum alanları seçiyoruz; örnek için şu alanları ekledik:
    • Yorum: Başlık
    • Yorum: Post date
    • Yorum: Gövde
    Burada her alanı eklerken Label değerini boş bırakmanızı tavsiye ederim.
    Normalde bu alanlar görünümde alt alta listelenecektir. Örneğin:
    # harika! (Yorum: Başlık)
    7 hafta 5 gün önce (Yorum: Post date)
    Tadını bilemem ama görüntüsü harika! Gerçekten yaratıcı bir tarif olmuş; elinize sağlık. (Yorum: Gövde)

    Ancak bu alanları ekledikten sonra Basic Settings kutusundaki Row Style: Fields satırının sağında yer alan çark ikonuna tıklayarak yanyana gösterilmesini istediğiniz alanları işaretleyebilirsiniz. Örneğin Yorum: Başlık ve Yorum: Post date alanlarını işaretleyip Seperator olarak " | " girerseniz görünümde şöyle bir sonuç alırsınız:
    # harika! | 7 hafta 5 gün önce
    Tadını bilemem ama görüntüsü harika! Gerçekten yaratıcı bir tarif olmuş; elinize sağlık.

    Alanlar hakkında detaylı bilgi için bkz. Views: Fields.
  6. Sort Criteria (Defaults görüntüsü için): Yorumları en yeniden en eskiye doğru sıralamak için Yorum: Post Date sıralama kriterini ekliyoruz. Sort Order olarak Descending'i seçmeyi unutmayın aksi takdirde yorumlar eskiden yeniye sıralanır. Sıralama kriterleri ile ilgili detaylı bilgi için bkz. Views: Sort Criteria.
  7. Filters (Defaults görüntüsü için): Sadece onaylanmış yorumların listelenmesini istiyoruz, dolayısıyla yayınlanmamış yorumların ayıklanması gerekiyor. Bunun için Yorum: In Moderation süzgecini ekliyoruz ve Moderated değerini No (tr: Hayır) olarak seçiyoruz. Süzgeçler ile ilgili detaylı bilgi için bkz. Views: Filters.
    İşimizin önemli bir kısmını bitirdik. Şimdi blok ve sayfa görüntülerini ekleyip gerekli düzeltmeleri yapacağız. Sayfa görüntüsü Defaults görüntüsü ile hemen hemen aynı olacak bu yüzden önce sayfa görüntüsünü ekleyelim.
  8. Görüntü düzelenleme alanının sol tarafında yer alan açılır menüden Page (tr: sayfa) seçeneğini seçip Add Display düğmesine tıklıyoruz. Bütün değerler Defaults görüntüsünden aynen alınıyor. Sadece Page Settings adında yeni bir kutu ekleniyor ve bundaki değerleri girmemiz gerekiyor. Bu değerleri şöyle giriyoruz:
    • Path (tr: yol): user/%/yorum
    • Menu: Menu Tab (Başlık: Yorumlar, Ağırlık: 9)
    Böylece üye profil sayfalarındaki Yorumlar sekmesini eklemiş olduk. Devam edip şimdi de blok görüntüsünü ekleyelim.
  9. Bu sefer açılır menüden Blok'u seçip Add Display düğmesine tıklıyoruz. Blok görüntü ayarları ise aşağıdaki gibi olacak. Yalnız şuna dikkat etmelisiniz: Normalde blok ayarlar Defaults görüntüsünden aynen alınmıştır. Bu değerler üzerinde değişiklik yaptıktan sonra kaydetmek için Update Default Display'e tıklarsanız Defaults görüntüsü de değişecektir. Bu yüzden bu düğmeye tıklamak yerine Override seçeneğini kullanarak Update Default Display düğmesinin sadece Update olarak değişmesini sağlayın ve sonra Update (tr: güncelle) düğmesine tıklayın.
    • Basic Settings: More Link -> Create More Link -> Override -> Güncelle
    • Fields: Yorum: Post date ve Yorum: Gövde alanlarını bu görüntüden çıkarın -> Override -> Güncelle (tercihe bağlı; blok dar olduğundan yorumun kendisini göstermek iyi olmaz).
  10. İşte hepsi bu kadar. son olarak Save (tr: kaydet) düğmesine tıklayarak oluşturduğunuz görünümü kaydedin.
  11. Görünümün oluşturduğu bloğu blok yönetim sayfasından etkinleştirip sadece kullanıcı profil sayfalarında görünecek şekilde yayınlamayı unutmayın.
Sonuç
Yukarıdaki anlatımı harfiyen yaptıysanız aşağıdakine benzer bir sonuç alacaksınız:
ders_views_710_ornek.png
 

The Cry

Kıdemli Üye
19 Eki 2007
3,111
10
"-Her Yerden-"
Rasgele içerik gösterimi

Views kullanımı konusunda örnekleri çoğaltmak amacıyla Views'de rasgele konu yada başlık gösterimi hakkında anlatım yapmaya çalışacağım.
Ben bu örneğimde sağlık haberleri yayınlamak için 'haber' adında özel bir içerik türü oluşturdum ve bir kaç örnek içerik ekledim. Aşağıda görebileceğiniz gibi içerik özet gösterimlerinde 3 kısım kullandım.
ras.PNG


  1. Başlık: Standart olarak her içerik türünde var olan başlık alanı.
  2. Gövde(metin): Aynı şekilde bu alanımızda standart olarak mevcut
  3. Resim: CCK + ImageCache + ImageAPI + ImageField eklentilerini kullanarak bir resim alanı ekledim. Gerekirse bu konuya CCK dersleri altında ayrıca değinilebilir.
Not: Yukarıdaki alanlar örnek olarak verilmiştir; rasgele içerik listesi oluştururken içerik türü için tanımlanmış alanların bir önemi yoktur. İsterseniz en sade biçimde, başlık+metin veya sadece başlık içeren bir rasgele gösterim de hazırlayabilirsiniz.
Öncelikle Views » Add sayfasına gidiyoruz. Karşımıza ilk gelen ekranda tek yapmamız gereken "View name" alanı doldurmak. Buraya "rasgele_icerik" şeklinde bir isim girip [next] düğmesine tıklayarak görünümünüzü hazırlamaya başlayabilirsiniz. Görünümün temel ayarları için Views: Temel Ayarlar dersine bakabilirsiniz.
Örnekteki gibi rasgele bir içerik gösterimi yapmanız için gereken diğer ayarlar:

  1. Filtreler: Bu alanda öncelikle yapmamız gereken içerik türümüzü belirlemek.
    • Düğüm :Tür süzgeciyle sadece belirli bir türdeki içeriklerin gösterilmesini sağlayabiliyoruz. Örneğimizde bu süzgeç için "haber" içerik türünü seçtik. Sadece "haber" içeriği seçili olduğu için diğer içerik türlerindeki hiç bir içerik rasgele içerik listesinde gösterilmeyecek.
    • Düğüm :Yayında süzgeciyle de o an itibariyle sitede yayinda bulunan içerikleri seçmiş oluyoruz.
  2. Fields: Bu kısımda ekleyeceğimiz alanlar ile görünümde hangi bilgilere yer vereceğimizi belirtiyoruz.
    • Düğüm: Başlık
    • İçerik: Haber resmi
    • Düğüm: Gövde: Bu alanda şöyle bir düzenleme yapabilirsiniz: Trim this field to a maximum length özelliğini seçili hale getirerek Maximum length: ile ne kadar harf gösterileceğini belirtebiliyorsunuz. Örneğimizde bu 150'li olarak ayarlı ve bu değerden uzun metinlerin sadece ilk 150 karakteri gösteriliyor.
    Not: Bu alanlara ek olarak içeriği ekleyen kullanıcı ismi, yorum sayısı, tarih vb. alanlar da ekleyebilirsiniz. Bu tamamen listenizde hangi bilgilere yer vermek istediğinize bağlı.
  3. Sort criteria: Bu kısımda içerikleri ne şekilde sıralayacağımızı belirtiyorduk. Rasgele sıralama için Global: Random kriterini eklemeliyiz.
  4. Basic settings: Aslında bu alan ilk düzenlenmesi gereken alan olarak da düşünebilir ama ben en son ayarlamayı tercih ediyorum. Örnekteki gibi bir görünüm elde etmek için bu alanda yapmanız gereken değişiklikler:
    • Style: Tablo: Stil olarak tabloyu seçmelisiniz. Ayrıca tablo olarak ayarladıkdan sonra tablo görünümünün ayarlarını yapmak için hemen yanında görünen ayar simgesine tıklıyoruz. Burada yapacağımız şey Column alanında bir kaç değişiklik yapmak. Buradaki değişikliğin amacı örnekte görülen başlıkla gövdenin alt alta resmin ise sağ tarafta durduğu yerleşimi elde etmek. Yapacağımız şey çok basit:Column alanında başlığın bölümünü "Düğüm gövde" olarak ayarlamak. Böyle aynı görünümü sağlamış olacaksınız.
    • Items to display: 3 Buradan listede kaç içeriğin gösterileceğini ayarlıyoruz. Örneğimizde 3 olarak verildi.
Ve rasgele görünümümüz sonunda hazır şimdi bu görünümü bir sayfa olarak mı, yoksa blok olarak mı kullanacağımıza karar veriyoruz. İstersek her ikisi için de kullanabiliriz tabii ki.
Görünümü hazırladığımız sayfanın en sol tarafında Display alanı mevcut:
[6] Display (tr: çıktı, görüntü): Bir görünümün çıktısı sayfa, blok veya RSS beslemesi olabilir. Her görünüm için bir adet varsayılan (ing: Default) görüntü tanımlıdır; burada görünümün diğer çıktıları için ortak olan ayarlar kaydedilmektedir. Çıktılar varsayılan görünümden farklı ayarlar kullanabilirler. Sayfa çıktısı içerik listesini tanımlanan adreste sunarken, blok çıktısı ise Blok yönetim sayfasından temanızın çeşitli bölgelerine yerleştirebileceğiniz bir blok oluşturur.
Blok için: "blok" çıktısını seçip [Add display] diyoruz. Ve blok olarak görünümünüz hazır durumda. İsim: alanından blok görünümünüze bir isim verebilirsiniz. ör:rasgele blok
Sayfa için: drupaldersleri.org/rasgele vb. bir sayfa oluşturmak isterseniz. Yine yapmanız gereken Display alanında "sayfa"yı seçip [Add display] yapmak. Bunun sonrasında Page settings bölümünden şu ayaları yapıyoruz:

  • Yol: ilk olarak yolumuzu belirtiyoruz. ör: "rasgele" böylece views ile hazırladığımız içerik drupaldersleri.org/rasgele sayfasında görüntülenecektir.
  • Menü: eğer bu views sayfasını var olan herhangi bir menüye atamak istiyorsanız bunu buradan yapabilirsiniz.
Son olarak [kaydet] diyerek views sayfamızı ya da blok alanımızı hazır hale getirmiş oluyoruz. Hepsi bu kadar!
Arkadaşlar elimden geldiği kadar basit anlatmaya çalıştım. Aklınıza takılabilecek ya da uygulamada takıldığınız noktalarda elimden geldiği kadar yardımcı olmaya çalışırım. Takıldığınız noktaları sorarsanız bu anlatım daha da zengileşmiş olur.
 

The Cry

Kıdemli Üye
19 Eki 2007
3,111
10
"-Her Yerden-"
Bir terime ait son 5 içeriğin listelenmesi

Bir ilan sitesinde, taksonomi ile bir sözlük (İlanlar) oluşturulmuş olsun. Bu sözlüğün bir terimi de ilan1 olsun.
Görünümümüzde ekleyeceğimiz temel alanlara göre anlatımımızı yapalım.

Fields: "Düğüm başlık" seçiyoruz...
Gelecek ekranda en üstte "Başlık" yazan yeri siliyoruz ve aşağısında "Link this field to its node" seçimimizi yapıyoruz. Bu bize çıktımızın tıklanabilir olmasını sağlayacaktır. Şayet ilan başlığımız çok uzunsa ve biz görünümümüzü belli karakter sayısında sınırlamak istiyorsak aynı ekranda "Trim this field to a maximum length" seçimini yapıyoruz. Daha sonra ekrana gelen bölgede "Maximum length:" alanına görüntülenmesini istediğimiz karakter sayısını yazıyoruz.

Filtreler: "Düğüm: Yayında" ekleyelim. Çıkacak olan ekranda "Yayında: Evet" olan kısımı işaretliyoruz.Böylece yayında olan ilanlar listelenecektir...
Başka bir filtre daha ekliyoruz.
Filtreler: "Taksonomi: Term" seçiyoruz ve gelecek olan ekranda "Is one of" seçeneğini işaretliyoruz ve sağında bulunan alana ilan1 yazıyoruz.
Sıralama kriterlerimiz için;
Sort criteria: "Düğüm: Post date" seçiyoruz. (Bazen düğümlerimiz güncellenebilir, ilanımızda güncellenebilir bir yapıdaysa "Düğüm: Updated date" alanını seçmemiz gerekecektir.) Bundan sonra gelecek olan ekranda sıralamamız "Descending" ve aşağısında zaman sıralaması olarak en küçük birimimiz "Second" u seçiyoruz.
Son olarak görünümüzün son 5 ilanı gösterebilmesi için "Basic settings" kısımında "Items to display" kısmını seçip çıkacak olan alana 5 yazıyoruz...
"Basic settings" de diğer yerleri ne yapacağımız diğer views derslerimizde anlatılmış. Lütfen oralara da bakmayı unutmayalım.
 

The Cry

Kıdemli Üye
19 Eki 2007
3,111
10
"-Her Yerden-"
Bir View'i Başka bir View İçinde Gösterme (Embed)

stersek bir View'in sonuçlarını başka bir View içinde gösterebiliriz. Bu nerede işimize yarar derseniz, genelde çok sorulan bir sorunun yanıtı olabilir: Sitedeki yazarlar ve her yazarın son içeriğinin başlığı içeren bir köşe yazıları / köşe yazarları bloğu. Nasıl Çalışıyor?

Birbiriyle bağlantılı çalışacak iki görünüme ihtiyacımız var. İlki - yazarlar görünümü - sitedeki köşe yazarı olarak belirlediğimiz üyeleri listeleyecek ve bunları diğer görünüme - içerik (köşe yazısı) görünümü - girdi olarak aktaracak. Bu ikinci görünüm de listede yer alan üyelerin son yazmış oldukları yazıları çekip üye bilgileriyle birlikte listeleyecek.
Hazırlanışı

Bunun için öncelikle içerik viewimizi hazırlarız. View'in ismi "son_yazilar" olsun.
View type: node seçtikten sonra;
Number of items to display: 1,
Use pager: no,

field olarak Node: title seçeriz.
Sort criteria olarak Node: Post date, descending seçeriz.
Argument olarak User:UID ekleriz...

Viewi böylece kaydederiz.
Daha sonraki aşamada Yazarlar viewimizi hazırlamaya başlıyoruz.
View type: user seçtikten sonra viewimizi istediğimiz gibi ayarlarız. Field olarak da yazarın adı, istenirse resmi ve bir de User:UID...
Daha sonra Theme: information linkine tıklayıp, User:UID için geçerli olan tema dosyasını tespit etmemiz gerek. Burada yazan tpl dosyalarının isimleri, dosyanın nereye etki edeceğini gösteriyor. Sadece User:UID fieldine etki eden dosya views-view-field--uid.tpl.php olarak bulunabilir.
views-view-field--uid.tpl.php adında boş bir dosya oluşturuyoruz. Dosyanın içine:

Kod:
[/B][/COLOR]
[FONT=monospace][COLOR=Yellow][B][COLOR=#000000][B]<?php[/B][/COLOR]
  [COLOR=#000088]$uid[/COLOR] [COLOR=#339933]=[/COLOR] [COLOR=#000088]$output[/COLOR];
  [COLOR=#000088]$output[/COLOR] [COLOR=#339933]=[/COLOR] views_embed_view[COLOR=#009900]([/COLOR]'son_yazilar'[COLOR=#339933],[/COLOR] 'default'[COLOR=#339933],[/COLOR] [COLOR=#000088]$uid[/COLOR][COLOR=#009900])[/COLOR];
  [COLOR=#990000]print[/COLOR] [COLOR=#000088]$output[/COLOR];
[COLOR=#000000][B]?>[/B][/COLOR][/B][/COLOR] [/FONT]

[COLOR=Yellow][B]

Bu kodda views_embed_view fonksiyonunda kullanılan $uid, viewe argument olarak gidiyor. İstenirse daha değişik argumentler gönderilebilir.
Bu oluşturduğumuz dosyayı, kullandığımız temanın klasorunun içine gönderiyoruz. Daha sonra dosyanın tanınması için yazarlar viewimizde theme:information kısmında "rescan template files"ı tıklıyoruz. Bundan sonra burada, kaydettiğimiz dosyanın isminin bolda dönüşmesi gerekir.
Tüm bu işlemleri yaptıktan sonra artık yazarlar blokunda, normalde User:UID gösterilmesi gereken yerde, yazarın son içeriği görülecektir.
Viewler hazırlanırken, yapılması gereken ve konuyla direk ilgisi olmayan normal ayarlar bu derste anlatılmamıştır. Tüm ayarların uygun şekilde yapılması gerekiyor.
 

The Cry

Kıdemli Üye
19 Eki 2007
3,111
10
"-Her Yerden-"
Son üyeleri göstemek

Siteye son üye olan kullanıcıların resimlerinin gösterildiği bir blok örneği.
Öncelikle views oluştururken kullanıcı tipini seçiyoruz.
2my3wg9.png

Sol taraftan "blok"u seçip add display diyoruz, böylece blok eklemiş olduk.
Basic Settings

Başlık:Son üyeler
Style:Ben "Grid"i seçtim. Dilerseniz başka bir görünüm türü seçebilirsiniz.
Items to display:9 seçtim çünkü 3x3 grid şeklinde göstermeyi düşünüyorum.
Alanlar

Kullanıcı: resim i seçtim. İsterseniz resimlerin altına kullanıcı adlarını da ekleyebilirsiniz.
Sort criteria

Kullanıcı: oluşturulma tarihini seçiyoruz. "desc" olmasına dikkat edin.
Filtreler

Kullanıcı: aktif
Eğer admin'in listede yer almasını istemiyorsanız Userid is not one of admin filtresini de eklemelisiniz.

Tüm bunları yaptıktan sonra viewsimiz şuna benzer bir şey olacaktır:
n6ur9.png

Aynı resimlerden var demeyin, onlar profil resmini değiştirmemiş farklı kullanıcılar.
Boşluk çok gözükebilir. Blok halini sayfada kullanınca boşluklar azalır, kareye yakın bir hal alır.
 

The Cry

Kıdemli Üye
19 Eki 2007
3,111
10
"-Her Yerden-"
Taksonomi sayfa görünümünü özelleştirme

Drupal sitelerinde özellikle çok sayıda içerik türü ve taksonomiye sahipseniz, Drupal ile gelen standart taksonomi sayfa görünümü yerine kullanıcılara farklı içerikler için daha ayrıntılı bir görünüm hazırlayabilirsiniz.
Öncelikle nedir bu görünüm derseniz alttaki resmi inceleyebilir, isterseniz anlatımı sitenize uyarlayabilirsiniz.
966.jpg

Öncelikle kullandığınız tema klasörü içine (\sites\all\themes\herneyse) taxonomy_term_page.tpl.php isimli bir dosya oluşturuyoruz. Şimdilik bu dosyaya dokunmayın olduğu gibi bırakın. Sonra node tipinde bir views ekliyoruz. 2. resimdeki öntanımlı -default- ayarları yaparak diğer adıma geçebilirsiniz
resim 2
ddoderjlj.jpg

Sitemizdeki her bir içerik türü için bir blok görünümü ekliyoruz, ya da taksonomi eklediğiniz içerik türleri için.
3. resimdeki alanları kendi siteniz için özelleştirebilirsiniz (örn: düğüm: tür). Buradaki en önemli ayar arguments -> Taksonomi: Term ID alanı; bu alan için resimdeki ayarlar yapılır. Sözlükler bölümünde sitenizdeki o içerik türünde gösterdiğiniz sözlükleri işaretlemelisiniz.
resim 3
ddodersqs.jpg

resim 4
ddoderxvx.jpg

Views ayarları tamamlanıp kaydedildikten sonra tekrar taxonomy_term_page.tpl dosyasına dönüyoruz. İçerik türlerimize göre aşağıdaki kodu kopyala-yapıştır yaparak çoğaltabilirsiniz.


Kod:
[/B][/COLOR]
[FONT=monospace][COLOR=Yellow][B][COLOR=#009900]<[COLOR=#000000][B]div[/B][/COLOR] [COLOR=#000066]id[/COLOR][COLOR=#66CC66]=[/COLOR][COLOR=#FF0000]"haberet"[/COLOR] [COLOR=#000066]class[/COLOR][COLOR=#66CC66]=[/COLOR][COLOR=#FF0000]"span-8"[/COLOR]>[/COLOR]
 [COLOR=#009900]<[COLOR=#000000][B]h3[/B][/COLOR]>[/COLOR] Haber Etiketleri [COLOR=#009900]<[COLOR=#66CC66]/[/COLOR][COLOR=#000000][B]h3[/B][/COLOR]>[/COLOR]
 [COLOR=#009900]<?php[/COLOR]
[/B][B][COLOR=#009900]  $view [COLOR=#66CC66]=[/COLOR] views_get_view[COLOR=#66CC66]([/COLOR][COLOR=#FF0000]'kategori'[/COLOR][COLOR=#66CC66])[/COLOR];[/COLOR]
[/B][B][COLOR=#009900]  $display [COLOR=#66CC66]=[/COLOR] $view->[/COLOR]execute_display('block_4',$tids);
  print $display['content'];
 ?>
[COLOR=#009900]<[COLOR=#66CC66]/[/COLOR][COLOR=#000000][B]div[/B][/COLOR]>[/COLOR][/B][/COLOR]   [/FONT]

[COLOR=Yellow][B]
Şimdi gelelim yukardaki kodu açıklamaya
<div id="haberet" class="span-8"> (blokları sıralamak için id ekledim. Hazırladığım sistemde çok fazla içerik türü ve dolayısıyla blok eklediğim için görünüm olarak daha düzenli görünmesini istedim. css bilgim pek yeterli olmasada bazı küçük değişiklikler yapabiliyorum, daha fazlası içinse pek zamanım olmuyor açıkcası. Sayfadaki düzenlemeler css bilginize kalmıştır (biraz da önerilerinizi bekliyorum :) ). Daha sonra temanın css dosyasına alttaki kodu ekledim.
Kod:
[COLOR=#CC00CC]#bloget[/COLOR]  [COLOR=#00AA00]{[/COLOR]
  [COLOR=#000000][B]float[/B][/COLOR][COLOR=#00AA00]:[/COLOR] [COLOR=#000000][B]left[/B][/COLOR];
  [COLOR=#000000][B]margin[/B][/COLOR][COLOR=#00AA00]:[/COLOR] [COLOR=#993333]12px[/COLOR];
  [COLOR=#000000][B]padding[/B][/COLOR][COLOR=#00AA00]:[/COLOR] [COLOR=#993333].5em[/COLOR];
  [COLOR=#000000][B]border[/B][/COLOR][COLOR=#00AA00]:[/COLOR] [COLOR=#993333]1px[/COLOR] [COLOR=#993333]solid[/COLOR] [COLOR=#CC00CC]#dfe0c3[/COLOR];

Her bir blok-id- görünümü için alttaki kodu tekrar ekleyebilirsiniz.

Kod:
[COLOR=#009900]<[COLOR=#000000][B]h3[/B][/COLOR]>[/COLOR] Haber Etiketleri[COLOR=#009900]<[COLOR=#66CC66]/[/COLOR][COLOR=#000000][B]h3[/B][/COLOR]>[/COLOR]  (blok üzerindeki başlığımız, sitenize göre değiştirmelisiniz.)

  $view = views_get_view('kategori');  (buradaki "kategori" hazırlamış olduğumuz views'ın ismi)
  $display = $view->execute_display('block_4',$tids); (block_4 ise eklediğimiz views'daki blokların sıralaması)
  print $display['content'];
 ?>
Yukardaki değişiklikleri tamamladıktan, çoğalttıktan sonra yeni taksonomi sayfanızı test edebilirsiniz.
Bu işlemler ile uğraşmak istemeyenler için taxonomy vtn eklentisi tavsiye edilir.
taxonomy_vtn.thumbnail.png
 

The Cry

Kıdemli Üye
19 Eki 2007
3,111
10
"-Her Yerden-"
Flag: Kullanım ve Özelleştirme

Flag eklentisi, oluşturduğunuz değişik "flag"lerin sunumunu özelleştirmek için kullanabileceğiniz bir API'ye sahip. Kimi zaman bu API'den yararlanarak kimi zaman da sadece CSS kullanarak flaglerinizi sitenize özel şekillerde sunabilmeniz mümkün. Bu başlık altında Flag eklentisinin kullanımı ve özelleştirilmesine yönelik anlatımlar yer alacak.
 

The Cry

Kıdemli Üye
19 Eki 2007
3,111
10
"-Her Yerden-"
Flag eklentisinde ikon kullanımı

Bu anlatımda flag metinlerine ikon ekleme ve flag metinlerini ikon ile değiştirme konularını ele alacağız. Bu yöntemleri kullanarak sitenizde tanımlamış olduğunuz her değişik flag için ayrı ikonlar kullanabilmeniz mümkün.
#1 Flag metinlerine ikon ekleme

Bu işlemi CSS kullanımıyla gerçekleştirmek mümkün. Yapmamız gereken şey metinlere biraz padding uygulayıp sağa kaydırmak ve böylece açılan yere de ikonları bir arkaplan resmi olarak eklemek. Bunun için aşağıda verilen örnek css kodunu kullanabilirsiniz.
Not: Kodda flagadi yazan yerlere oluşturduğunuz flag'in makine adını (ing: machine-name) yazınız.
Kod:
[/COLOR][/B][FONT=monospace][B][COLOR=Yellow][COLOR=#339933].[/COLOR]flag[COLOR=#339933]-[/COLOR]flagadi a [COLOR=#009900]{[/COLOR]
  padding[COLOR=#339933]-[/COLOR]left[COLOR=#339933]:[/COLOR] 20px;
[COLOR=#009900]}[/COLOR]

[COLOR=#339933].[/COLOR] flag[COLOR=#339933]-[/COLOR]flagadi a[COLOR=#339933].[/COLOR]flag[COLOR=#339933]-[/COLOR]action [COLOR=#009900]{[/COLOR]
  background[COLOR=#339933]:[/COLOR] url[COLOR=#009900]([/COLOR]images[COLOR=#339933]/[/COLOR]sevdim[COLOR=#339933].[/COLOR]png[COLOR=#009900])[/COLOR] no[COLOR=#339933]-[/COLOR]repeat left center;
[COLOR=#009900]}[/COLOR]

[COLOR=#339933].[/COLOR] flag[COLOR=#339933]-[/COLOR]flagadi a[COLOR=#339933].[/COLOR]unflag[COLOR=#339933]-[/COLOR]action [COLOR=#009900]{[/COLOR]
  background[COLOR=#339933]:[/COLOR] url[COLOR=#009900]([/COLOR]images[COLOR=#339933]/[/COLOR]sevmedim[COLOR=#339933].[/COLOR]png[COLOR=#009900])[/COLOR] no[COLOR=#339933]-[/COLOR]repeat left center;
[COLOR=#009900]}[/COLOR][/COLOR][/B]     [/FONT]

[B][COLOR=Yellow]

#2 Flag metinlerini ikon ile değiştirme

Önceki uygulamada flag metninin yanına CSS kullanarak bir ikon eklemiştik. Şimdi ise metni tamamen kaldırmaya ve yerine bir ikon koymaya çalışacağız. Bunun için biraz elimizi drupal koduna bulaştırmak gerekiyor.
Flag eklentisi, işlevlerini beraberinde gelen tema üzerinden sunuyor. Bu temada çeşitli değişkenler kullanılıyor; bunlardan biri de flag metnini içeren $link_text değişkeni. Drupal'in bize sunduğu değişkenlerin içeriklerini temada kullanılmadan önce değiştirebilme esnekliğinden yararlanarak, bu değişkende yer alan flag metnini bir <img> etiketi ile değiştirebilmemiz mümkün. Bu yöntem şöyle çalışıyor:
Aşağıdaki kodu temanızın template.php dosyasına ekliyorsunuz.
Kod:
[/COLOR][/B][FONT=monospace][B][COLOR=Yellow][COLOR=#000000][B]function[/B][/COLOR] phptemplate_preprocess_flag[COLOR=#009900]([/COLOR][COLOR=#339933]&[/COLOR][COLOR=#000088]$vars[/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
  [COLOR=#000088]$image_file[/COLOR] [COLOR=#339933]=[/COLOR] path_to_theme[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#339933].[/COLOR] '/flag-' [COLOR=#339933].[/COLOR][COLOR=#000088]$vars[/COLOR][COLOR=#009900][[/COLOR]'flag_name_css'[COLOR=#009900]][/COLOR] [COLOR=#339933].[/COLOR] '-' [COLOR=#339933].[/COLOR] [COLOR=#009900]([/COLOR][COLOR=#000088]$vars[/COLOR][COLOR=#009900][[/COLOR]'action'[COLOR=#009900]][/COLOR] [COLOR=#339933]==[/COLOR] 'flag' ? 'off' [COLOR=#339933]:[/COLOR] 'on'[COLOR=#009900])[/COLOR] [COLOR=#339933].[/COLOR] '.png';
  [COLOR=#B1B100]if[/COLOR] [COLOR=#009900]([/COLOR][COLOR=#990000]file_exists[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$image_file[/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
    [COLOR=#000088]$vars[/COLOR][COLOR=#009900][[/COLOR]'link_text'[COLOR=#009900]][/COLOR] [COLOR=#339933]=[/COLOR] [COLOR=#0000FF]"<img src='$image_file' />"[/COLOR];
  [COLOR=#009900]}[/COLOR]
[COLOR=#009900]}[/COLOR][/COLOR][/B]  [/FONT]

[B][COLOR=Yellow]


  1. Her flag için "imleme (işaretleme)" ve "iptal etme" ikonlarını sırasıyla flag-flagadi-on.png ve flag-flagadi-off.png olarak adlandırarak tema ana klasörüne atıyorsunuz. İkon adlarının yapısını değiştirirseniz yukarıdaki kodu da buna uygun olarak değiştirmeniz gerektiğini unutmayın.
    Not: Dosya isimlerinde flagadi yazan yerlere oluşturduğunuz flag'in makine adını (ing: machine-name) yazınız.
  2. flag/theme klasöründe yer alan flag.tpl.php dosyasının bir kopyasını alıp tema dizininize koyuyorsunuz.
  3. Son olarak Drupal'in önbelleğini siliyorsunuz (Yönet » Site Ayarları » Performans).

 

The Cry

Kıdemli Üye
19 Eki 2007
3,111
10
"-Her Yerden-"
Organic Groups : Kurulum ve Kullanım

Drupal sitelerimizde Facebook tarzı kullanıcı grupları işlevi eklemek için Organic Groups (OG) eklentisine ihtiyaç duyuyoruz. Ancak bu eklentinin kurulumu biraz karışık; yani sadece etkinleştirmekle herşey hazır hale gelmiyor. Bu anlatımda sitemizde Organic Groups eklentisini kurup etkinleştirdikten sonra nasıl ayarlamamız gerektiğine değineceğiz.
Kurulum ve Ayarlar


  1. Organic Groups aslında bir eklenti paketi olarak geliyor. Temel kullanım için bu pakette yer alan Organic Groups ve Organic Groups Views Integration eklentileri etkinleştirilmeli. Ayrıca gruplardaki mesajları sadece grup üyelerinin görebilmesi gibi bir erişim kontrolü kullanmak istiyorsak bu durumda Organic Groups Access Control eklentisini de etkinleştirmek gerekecek. Eklentinin temel kurulumu sağlandıktan sonra sorunsuz olarak çalıştığından emin olmadan drupal.org'da OG kategorisinde yer alan diğer Organic Groups eklentilerini denememeliyiz.
  2. Kurulumun ardından Yönet » Organic groups » Organic groups configuration (admin/og/og) sayfasına gittiğimizde sayfanın en üstünde İçerik Türleri kutusunu göreceğiz. Bu kutuda sitemizde tanımlı bulunan tüm içerik türleri listeleniyor. Her içerik türü için bir "usage (tr: kullanım)" şekli tanımlı. Kullanım şekli o içerik türünün grup içinde kullanılıp kullanılamayacağını, kullanılacaksa da nasıl kullanılacağını belirtir. Mevcut kullanım şekilleri şöyle:
    • Group node: Bu türe ait içeriklerin her biri bir grup haline gelir.
    • May not be posted into a group: Grup içinde bu içerik türüne ait içerikler oluşturulamaz.
    • Standard group post (typically only author may edit): Grup içinde bu içerik türüne ait içerikler oluşturulabilir.
    Burada yapılması gereken iki şey var; ilki grup olarak kullanılacak içerik türünü veya türlerini seçmek (genelde bu iş için standart sayfa ve makale içerik türleri yerine ayrı bir içerik türü oluşturulması tercih edilir.) Bunu yapmak için grup olarak kullanmak istediğimiz içerik türünü düzenleme sayfasına giderek (usage sütunun sağındaki "düzenle" linkleri bizi doğrudan o içerik türünü düzenleme sayfasına ***ürüyor) bu içerik türünü "Group Node" olarak işaretlemeliyiz. Ayrıca bu içerik türlerinde yorum ve dosya ekleme özelliklerini devre dışı bırakmalıyız. Yapılacak ikinci iş ise gruplarda grup üyelerinin oluşturabileceği içerik türlerini belirlemek; bunun için de grup içinde kullanılabilmesini istediğimiz içerik türlerini "Standard group post" olarak atamalıyız.
  3. Gruplarla ilgili içerik türlerini belirledikten sonra Group Details kutusunda yer alan diğer ayarları yapıyoruz:
    Groups directory control:
    Yeni oluşturulan bir grubun grup dizin sayfasında listelenip listelenmeyeceğini seçiyoruz:
    • New groups don't appear in the groups directory. Administrators control the directory exclusively: Yeni gruplar dizinde yer almaz; dizinde yer alacak grupları site yönetimi belirler.
    • New groups always appear in the groups directory: Yeni gruplar dizinde otomatik olarak listelenir.
    • Group creator chooses whether her group appears in the directory. Defaults to in directory: Grubu oluşturan kişi grubun dizinde listenip listelenmeyeceğini seçer. Varsayılan: "listelenir".
    • Group creator chooses whether her group appears in the directory. Defaults to not in directory: Grubu oluşturan kişi grubun dizinde listenip listelenmeyeceğini seçer. Varsayılan: "listelenmez".
    Registration form control: Yeni oluşturulan bir grubun üye kayıt formunda listelenip listelenmeyeceğini seçiyoruz:
    • New groups don't appear on the registration form. Administrators control the form exclusively: Yeni gruplar üye kayıt formunda yer almaz; formda yer alacak grupları site yönetimi belirler.
    • New groups always appear on the registration form: Yeni gruplar formda otomatik olarak listelenir.
    • Group creator chooses whether her group appears on the registration form. Defaults to on form: Grubu oluşturan kişi grubun formda listenip listelenmeyeceğini seçer. Varsayılan: "listelenir".
    • Group creator chooses whether her group appears on the registration form. Defaults to not on form: Grubu oluşturan kişi grubun formda listenip listelenmeyeceğini seçer. Varsayılan: "listelenmez".
    Audience checkboxes: İçerik oluşturma sayfasında içeriğin yayınlanacağı grupların seçilebilmesini sağlar. Burada sunulan gruplar sadece kullanıcının üye olduğu gruplardır. Kullanıcı bu özellik etkin ise oluşturacağı içeriğin yayınlanacağı bir veya birden fazla grup seçebilir (isterse hiçbirini seçmeyebilir de). Eğer bu özellik devre dışı bırakılırsa kullanıcı grup sayfası üzerinden bir içerik oluşturduğunda, içerik sadece o grupta yayınlanacaktır.
    Audience required:
    Audience checkbox özelliği etkin olduğunda kullanıcı içerik oluştururken o içeriği yayınlabileceği grupları seçiyordu; ancak dilerse hiçbir grubu seçmeyebiliyorda. Eğer bunu engellemek istiyorsanız, yani içeriklerin mutalaka bir grupla bağlantısı olsun ve o grupta yayınlansın istiyorsanız o halde bu seçeneği "zorunlu" hale getirin.
    Group home page view:
    Burada öntanımlı olarak og_ghp_ron görünümü seçilidir (uzun hali: organic groups - group home page - river of news). Bu görünüm Organic Groups sayfalarındaki konu özet listesini sunar. Eğer herhangi bir sebeple standart görünümü kullanmak istemiyorsanız kendi görünümünüzü oluşturup buradan seçebilirsiniz. Tabii bunu yaparken görünümün adının başında "og_ghp_" yazmanız gerekiyor.
  4. Bu sayfadaki son kutu Messaging & Notifications; buradan da çeşitli durumlarda (yeni içerik, yeni grup üyesi, vs.) kullanıcılara gönderilen e-posta mesajlarının başlık ve metinlerini düzenleyebiliyoruz.
  5. OG ayarlarını yaptıktan sonra, eklentiyle birlikte gelen çeşitli blokları etkinleştirmek için blok yönetim sayfasına (Yönet » Site kurulumu » Bloklar) gidiyoruz. Burada mutlaka etkinleştirmemiz gereken bir blok var: Group details. Bu bloğu etkinleştirip tercihen sayfanın en üstünde yer alacak şekilde bir blok alanına yerleştiriyoruz. Ayrıca tercihe bağlı olarak diğer grup bloklarını da etkinleştirebiliriz (hepsini etkinleştirip hangi bloğun hangi özelliği sunduğunu görmenizi tavsiye ederim, ama bunun için önce birkaç grup, grup içeriği ve birkaç grup üyesi oluşturmanız daha iyi olur).
  6. Organic Groups ve kurduysak ilgili diğer eklentilerin izinlerini ayarlamak üzere Yönet » Kullanıcı yönetimi » İzinler (admin/user/permissions) sayfasını ziyaret edip izinleri düzenleyelim.
  7. Evet, artık ilk gruplarımızı ve grup içeriklerimizi ekleyebiliriz. Hatta birkaç test kullanıcısı ile farklı kullanıcı hesapları üzerinden birkaç farklı grup oluşturun. Böylece hem yöneticisi olduğunuz hem de üyesi olduğunuz gruplarda neler yapılabiliyor, hangi özellikler var görebilirsiniz. Bu şekilde özel grup kullanımını ve kullanıcılara gönderilen e-postaları da deneyebilirsiniz.
  8. Organic Groups çekirdek sisteminin sorunsuz çalışmasını sağladıktan sonra, dilerseniz OG ile ilgili Organic Groups Mandatory Group (kayıt sırasında zorunlu gruplar) ve OG Vocabulary (gruplara özel taksonomi sistemi) gibi diğer birçok eklentiyi kurup deneyebilirsiniz.
Notlar ve Tavsiyeler


  • Yukarıda bahsedildiği gibi Organic Groups eklentisinin sunduğu gruplar birer düğümdür; dolayısıyla da grup düğümlerini sunacak bir içerik türü kullanılması gerekmekte. Normalde düğümlerin Başlık ve Gövde olmak üzere iki bilgi alanı vardır. Gruplar için kullanılacak içerik türünde bu alanların isimlerini içerik türü düzenleme sayfasından Grup Adı ve Grup Tanıtımı şeklinde değiştirmeniz kullanılabilirlik açısından tavsiye edilir.
  • Gruplar düğüm olduklarından düğümler üzerinden çalışan CCK ve Taksonomi gibi birçok eklentiden faydalanabilirsiniz.
  • Gruplar için tek bir içerik türü kullanmak zorunda değilsiniz. Örneğin sitenizde farklı CCK alanlarına veya sözlüklere ihtiyaç duyabilecek değişik grup türlerine ihtiyaç olabilir; bu durumda birkaç içerik türü oluşturup herbirini Group Node olarak atayabilirsiniz.
  • siteniz.com/group adresinde iki ayrı sekme halinde kullanıcının üye olduğu gruplardaki güncel yazıların bir listesi ve kullanıcının henüz okumadığı içeriklerini listesi sunulmakta. Bu yolu gezinti menünüze eklemeyi isteyebilirsiniz. Ayrıca her iki sekmenin de RSS beslemesi var.
  • Bir grubun yöneticisini değiştirebilmek için "düğüm yönetimi" iznine gerek vardır (bu iznin sadece güvendiğiniz kişilere verilmesi tavsiye edilir). Bu izne sahip bir kullanıcı içeriği düzenleme sayfasında yazar bilgisini değiştirerek grup sahibini değiştirebilir.
  • Düğüm yönetimi iznine sahip kişiler açık veya özel tüm grup içeriklerini görebilirler.
  • Gruplardaki üye yönetim işlemleri (üyelik onaylama, üye ekleme/silme, grup yetkilisi tayin etme) Group Details bloğundan erişilen grup üye listesi sayfasından yapılmaktadır.
  • Eğer sitenizdeki OG sistemini kullanmaktan vazgeçerseniz eklentileri devre dışı bırakmak yeterlidir. Böylece daha sonradan tekrar kullanmak istediğinizde eklentileri etkinleştirmek eski tüm ayarlarınızı ve verilerinizi geri getirecektir. Eğer herşeye sıfırdan başlamak isterseniz önce admin/build/modules/uninstall sayfasından og, og_views ve og_access eklentilerini kaldırmayı unutmayın.
Tema kullanımı


  • Her grup için sitede kullanılmasına izin verilen temalardan biri seçilebilir.
  • Gruplardaki mesajların özel ya da açık olduğunu $node->og_public belirtir. Bu değişkenden tema dosyasında yararlanarak özel ve açık içeriklerin görsel olarak ayırt edilebilmesi mümkündür.
  • OG ile birlikte phptemplate motorunu kullanan çeşitli şablon dosyaları gelmektedir. Bu dosyaları og dizininde yer alan themes klasörünün içinde bulabilirsiniz. Şablon dosyalarını kendi temanızın dizinine kopyalayarak grup anasayfa görünümünü (node-og-group.tpl.php) ve grup sayfasında yayınlanan içeriklerin görünümlerini (node-og-group-post.tpl.php) bu dosyalar üzerinden değiştirebilirsiniz.
Kaynak: og/readme.txt (Anlatımın önemli bir kısmı için bu dosyadan yararlandım; ancak bu dosyada olup da burada olmayan ya da tam tersi burada olup da dosyada olmayan bazı kısımlar var. Dolayısıyla readme.txt dosyasını da gözden geçirmenizi tavsiye ederim).
 

The Cry

Kıdemli Üye
19 Eki 2007
3,111
10
"-Her Yerden-"
DDB: Gelişmiş Slideshow

Bu dersimizde Dynamic Display Block (DDB) eklentisini kullanarak aşağıdakine benzer, üzerinde kısa açıklamaları olan resimli bir slideshow hazırlayacağız.
(Demo için resme tıklayın)
ders_ddb_000_ornek.jpg

Tabii ki DDB ile çok daha farklı uygulamalar yapmak da mümkün ama örnekteki stil en çok kullanılanlardan birisi ve bugünlerde hemen hemen her magazinel sitede karşımıza çıkıyor.
Özet

Not: Özet kısmı yapılacak işlemler konusunda genel bir bilgi vermek için yazılmıştır. Bu bölümü okurken herhangi bir işlem yapılmasına gerek yoktur; uygulama 1. Eklentiler ve Kurulum bölümünden itibaren başlayacaktır.

DDB ile oluşturacağımız gelişmiş slideshow uygulamasında

  • slideshow için kullanılacak bir içerik türüne
  • her içerik için resim ekleyebileceğimiz bir resim alanına
  • her içerik için slideshow alanına sığabilecek kısa metin alanlarına
  • slideshowda gösterilecek içerikleri belirleyecek ve bunları bir blok içinde sunacak bir görünüme
  • Views ile oluşturulacak bloğu gerçek bir slideshow bloğuna dönüştürecek DDB ayarlarına
  • ve son olarak da işin tema kısmını halledecek birkaç şablon dosyası ve fonksiyonuna ihtiyacımız olacak.
Bu listeden de anlaşılacağı üzere bir slideshow hazırlamak, DDB eklentisinin haricinde CCK ve Views gibi diğer eklentilerin de kullanılmasını gerektiren kompleks bir süreç gerektiriyor. Ancak anlatımın ilerleyen bölümlerinde neyin nasıl yapılacağı detaylı olarak anlatılacağı için bu konuda endişe etmenize gerek yok.
İçerik türü ve CCK alanları
ders_ddb_005_sonuc.jpg

Resimler, resimli sayfalandırma ve resimlerin üstünde yazıların olduğu yukarıdaki gibi bir slideshow oluşturabilmek için bir içerik türüne ve bu içerik türünde tanımlanmış en az bir resim alanı ve diğer bilgiler için de en az bir metin alanı gerekli. Bu anlatımda gerçekleştireceğimiz uygulamada aşağıdaki alanları kullanacağız:

  • Başlık (1b) – Tüm içerik türlerinde standart olarak bulunan içerik başlığı.
  • Gövde – Tüm içerik türlerinde standart olarak bulunan metin gövdesi.
  • Kısa başlık (2b) – Slideshow bloğunda sunum içerikleri arasında dolaşmayı saylayan sayfalandırma aracı için kullanılacak kısa bir başlık (CCK ile yeni bir text field olarak eklenecek).
  • Kısa gövde (1c) – Sunum için slideshow bloğunda kullanılacak kısa tanıtım metni (CCK ile yeni bir text field olarak eklenecek).
  • Resim (1a) – Sunum için slideshow ve sayfalandırma kısımlarında kullanılacak resim (CCK ile yeni bir imagefield olarak eklenecek).
Not: Gövde alanı slideshow'da kullanılmaz; içeriğin tam sayfa görünümünde gösterilir. 2a ile gösterilen küçük resim ise DDB tarafından otomatik olarak 1a'daki resim kullanılarak oluşturulur.
Bu alanları tanımlarken şunu aklınızda bulundurmalısınız; bu alanlar için kullacağınız isimler tema dosyalarında kullanılacak. Bu yüzden anlatımdaki isimlere bağlı kalırsanız, en son aşamada fazla uğraşmanıza gerek kalmadan hazır olarak verilecek dosyaları kullanabileceksiniz.
Views ve içerik bloğu
Slideshow'da gösterilecek içerikleri belirlemek için Views ile oluşturulan görünümler kullanılıyor. Bir blok görüntüsü içerecek bu görünümlerde çeşitli süzgeçleri kullanarak istediğiniz içerikleri seçebilirsiniz.
DDB slideshow bloğu ve temalar
Bu anlatımın amacı DDB ile bir slideshow hazırlamak olsa da DDB aslında bu anlatımın sadece 5. ve 6. aşamalarında karşımıza çıkacak. DDB'nin yaptığı tek şey hazır bir Views bloğunu alıp bunu slideshow'a dönüştürmek. Bu yüzden de daha çok işin görsel kısımlarına yönelik bazı ayarlar yapacağız.
DDB slideshow için iki tema dosyası kullanıyor: ilki slideshow bloğunun geneli için kullanılan temayı oluştururken, ikincisi ise pager (sayfalandırma) için kullanılan temayı hazırlar. Anlatımda bu tema dosyaları hazır olarak verilecektir; ancak üzerlerinde bazı değişiklikler yapılması gerekecek. Bunlara anlatımın ilgili yerlerinde değinildi.
Başlangıç olarak anlatıma bağlı kalmanız tavsiye edilse de eklentinin kullanımı hakkında deneyim kazandığınızda php ve/veya css konusundaki bilgilerinizi de kullanarak kendi tema dosyalarınızı oluşturabilir ya da daha basitçe css düzenlemelerinizi yapabilirsiniz.
Detaylar: Nasıl yapacağız?

Bu kısımda Dynamic Display Block kullanarak gelişmiş bir slideshow hazırlamanın aşamalarına ayrıntılı olarak değineceğiz. Bu aşamaları şöyle sıralayabiliriz:

  1. Eklentiler ve Kurulum
  2. Yeni “Sunum” içerik türünü oluşturma
  3. Sunum içerik türünde içerik ekleme
  4. Views ile sunum içerikleri için bir görünüm oluşturma
  5. Slideshow oluşturma ve ayarlar
  6. Tema düzenlemesi
  7. Sonuç ve alternatifler
HAZIR DOSYA UYARISI: 2., 4. ve 6. aşamalarda yapılan işlemlerin büyük bir bölümünü anlatımdaki HAZIR DOSYA notlarını takip ederek atlamanız mümkün. Hazır dosyalar arasında, anlatımda örnek olarak gösterilen uygulama için kullanan “Sunum” içerik türü ve “sunumlar” görünümünün içeri aktarılabilir çıktıları ve bunlara göre düzenlenmiş preprocess fonksiyonları yer almakta. Bunları kullanmanız durumunda anlatımın sonunda elde edilen slideshow'un birebir aynısını elde edeceksiniz. Eğer kendi özel içerik türlerinizi ve CCK alanlarınızı oluşturup bunlardan bir slideshow yaratmak isterseniz bu durumda ilgili aşamalarda neyin nasıl yapıldığını detaylı olarak inceleyin.
Not: Anlatım temiz bir Drupal 6 kurulumu üzerinde DDB eklentisinin 4 Ocak 2009 tarihili RC4 sürümü kullanılarak yapılmıştır. Anlatım, DDB eklentisinin 26 Şubat 2009 tarihli 6.x-1.0-rc6 sürümüne göre güncellenmiştir. Eski sürümlerde ve ilerleyen dönemlerde çıkabilecek yeni sürümlerde bazı farklılıklar olabilir.
 

The Cry

Kıdemli Üye
19 Eki 2007
3,111
10
"-Her Yerden-"
(1) Eklentiler ve Kurulum

DDB kurulum süreci birden çok eklentinin kurulumunu içermektedir. Aşağıda ihtiyaç duyulan eklentilerim tam listesi ve kurulum sıraları verilmiştir.
Not: Bu eklentilerin bazıları sitenizde halihazırda kurulu olabilir. Bu durumda eksik olan diğer eklentilerin kurulumunu aşağıdaki sıraya da uyarak yapmanız yeterli olacaktır.
İhtiyaç duyulan eklentiler:

  1. Dynamic display block: http:/ /dru pal.org/ pr oject/ddblock
  2. jQuery Update: https://tik.lat/rvP70 rg/project /jquery_update
  3. Content Construction Kit (CCK): https://tik.lat/46LfZ l.org/project /cck
  4. Views: http:// drupal. org/project/ views
  5. Filefield: http:// drupal .org/project/filefield
  6. Imagefield: http:// drupal. org/project/imagefield
  7. ImageAPI: http:// drupal. org/project/imageapi
  8. ImageCache: http:// drupal. org/project/imagecache (tercihe bağlı; resimlerde boyutlandırma yapmak isterseniz kullanabilirsiniz)
Yukarıda verilen listedeki eklentilerin en güncel versiyonlarını proje sayfalarından indirin ve Drupal kurulumunuzdaki sites/all/modules dizinine herhangi bir eklenti kurarken olduğu gibi taşıyın.
Yönet » Site Kurulumu » Eklentiler sayfasına gidin ve yeni kurduğunuz eklentileri aşağıdaki sıraya göre etkinleştirin:

  1. İlk grup eklentiler:
    • CCK: content
    • ImageCache: ImageAPI ve tercihe bağlı olarak ImageCache + ImageCache UI + ImageAPI GD2
    • User Interface: jQuery Update
    • Views: Views
    Bu eklentileri işaretleyip sayfanın altındaki Ayarları Kaydet düğmesine tıklayın.
  2. İkinci grup eklentiler:
    • CCK: Content copy
    • CCK: FileField
    • CCK: Text
    • Others: Dynamic display block
    • Views: Views exporter
    • Views: Views UI
    Bu eklentileri işaretleyip sayfanın altındaki Ayarları Kaydet düğmesine tıklayın.
  3. Üçüncü grup eklentiler:
    • CCK: ImageField
    Bu eklentiyi işaretleyip sayfanın altındaki "Ayarları Kaydet" düğmesine tıklayın.
İzinler
Yönet » Kullanıcı Yönetimi » İzinler sayfasına gidin ve oluşturacağınız slideshow gösterimini görüntlemesine izin vermek istediğiniz kullanıcı rolleri için şu izinler verin:


  1. imagefield eklentisi: view imagefield uploads (imagefield'ın yeni sürümleri artık filefield'a bağlı olduğu için gerek kalmadı)
  2. ddblock eklentisi: view dynamic display blocks
İzinleri işaretledikten sonra sayfanın altındaki "İzinleri Kaydet" düğmesine tıklamayı unutmayın.
 

The Cry

Kıdemli Üye
19 Eki 2007
3,111
10
"-Her Yerden-"
(2) Yeni Sunum içerik türünü oluşturma

Tüm eklentiler hazır olduktan sonra, slideshow bloğu için kullanacağımız özel içerik türünü oluşturmalıyız. “Sunum” adını vereceğimiz bu içerik türünde aşağıdaki bilgi alanlarına ihtiyacımız olacak:

  • Başlık – Tüm içerik türlerinde standart olarak bulunan içerik başlığı.
  • Gövde – Tüm içerik türlerinde standart olarak bulunan metin gövdesi.
  • Kısa başlık – Slideshow bloğunda sunum içerikleri arasında dolaşmayı saylayan sayfalandırma aracı için kullanılacak kısa bir başlık (CCK ile yeni bir text field olarak eklenecek).
  • Kısa gövde – Sunum için slideshow bloğunda kullanılacak kısa tanıtım metni (CCK ile yeni bir text field olarak eklenecek).
  • Resim – Sunum için slideshow ve sayfalandırma kısımlarında kullanılacak resim (CCK ile yeni bir imagefield olarak eklenecek).
HAZIR DOSYA: Bu bölümde anlatılan işlemler sonucunda sitemizde oluşturacağımız Sunum içerik türünü tüm CCK alanları ile birlikte sitenize aktarmanız mümkün. Bunun için Yönet » İçerik Yönetimi » İçerik Türleri » İçeri Aktar (admin/content/types/import) sayfasına giderek buradan kopyalacağınız kodu "Import data" kutusuna yapıştırın ve sayfanın altındaki “İçeri aktar” düğmesine tıklayın. Böylelikle “Sunum” içerik türü sitenize aktarılmış olacak. Eğer herşey yolunda gittiyse aşağıdaki kısımları geçerek doğrudan 3. aşamaya atlayabilirsiniz.
Not: Kodda Türkçe karakterlerde sorun olursa karakter kodlaması olarak utf-8'i seçin.
Bu noktada yeni bir içerik türü oluşturma ve cck alanlarının nasıl ekleneceğine değinmeden bu işlemleri yaparken kullanılacak gerekli ayarları belirteceğim. Bahsi geçmeyen ayarların değiştirilmesine gerek yoktur.
Not: Eğer içerik türleri ve CCK alanları hakkında yeterli bilginiz bulunmuyorsa öncelikle şu iki anlatımı verildikleri sırayla okuyunuz:

  1. Yeni İçerik Türü Oluşturma
  2. İçerik Türlerini CCK ile Genişletmek
İçerik türü ile ilgili ayarlar

İsim: Sunum
Tür: sunum
Tanım: DDB ile slideshow gösteriminde kullanılan içerik türüdür.

ders_ddb_010_turler.jpg

CCK alanları ile ilgili ayarlar

İçerik türü oluşturulduğunda başlık ve gövde alanları standart alanlar olarak eklenecektir; bunun için ek bir işlem yapmaya gerek yoktur. Ancak CCK kullanılarak eklenmesi gereken ayaları aşağıdaki gibi kendimiz eklememiz gerekiyor:
Uyarı: Alan ayarlarında belirtilmeyen kısımları ne yaptığınızdan emin olmadıkça olduğu gibi bırakmanız tavsiye edilir. Aksi takdirde uygulamanın devamında beklenmeyen durumlar ile karşılaşabilirsiniz.


  • Kısa Başlık
    • Temel Bilgiler:
      Label – Kısa Başlık
      Field name - sunum_kisa_baslik
      Field type - Text
      Widget type - Text field
    • Ayarlar:
      Size of textfield: 60 (tercihe göre değişebilir)
      Yardım metni: Kullanıcılara bu alanla ilgili “Sayfalandırmada kullanılacak kısa bir başlık giriniz” gibi kısa bir açıklama yazabilirsiniz.
      Zorunlu: Evet (kutuyu işaretleyin)
      Maximum length: 30 (tercihe göre değişebilir, ancak size of textfield değerinden büyük olmamalı)
  • Kısa Gövde
    • Temel Bilgiler:
      Label – Kısa Gövde
      Field name - sunum_kisa_govde
      Field type - Text
      Widget type - Text area (multiple rows)
    • Ayarlar:
      Rows: 5 (satır sayısı tercihe göre değişebilir)
      Yardım metni: Kullanıcılara bu alanla ilgili “Sunum için slideshow bloğunda kullanılacak kısa tanıtım metnini giriniz” gibi kısa bir açıklama yazabilirsiniz.
      Zorunlu: Evet (kutuyu işaretleyin)
  • Resim
    • Temel Bilgiler:
      Label - Resim
      Field name - sunum_resim
      Field type - Image File (yeni imagefield sürümleri için değişti)
      Widget type - Image
    • Ayarlar:
      Yardım metni: Kullanıcılara bu alanla ilgili “Sunum için slideshow ve sayfalandırma kısımlarında kullanılacak resim dosyasını yükleyiniz” gibi kısa bir açıklama yazabilirsiniz.
      Permitted upload file extensions: jpg jpeg png gif (tercihe göre değişebilir)
      Maximum resolution for Images: 0 (Sıfır girildiğinde herhangi bir kısıtlama yapılmaz. Resim ölçülerinin olabilecekleri en büyük değerleri sınırlandırmak için 640x480 gibi bir çözünürlük girilebilir)
      Minimum resolution for Images: 0 (Sıfır girildiğinde herhangi bir kısıtlama yapılmaz. Resim ölçülerinin olabilecekleri en küçük değerleri sınırlandırmak için 250x150 gibi bir çözünürlük girilebilir)
      Zorunlu: Evet (kutuyu işaretleyin)
CCK alanlarını eklediğimizde Manage Fields sayfasında aşağıdakine benzer bir görünüm elde ediyoruz. Bu noktada dilerseniz alanların sürükle-bırak yöntemiyle sırasını değiştirebiliriz. Alanlar içerik giriş formunda ve içerik gösterimlerinde buradaki sıraya göre listeleneceklerdir.
ders_ddb_020_alanlar.jpg

Alanları ekledikten sonra, özet ve tam sayfa gösterimlerindeki biçimlerini de ayarlamak gerekebilir. Örneğin kısa başlık ve kısa gövde alanları genellikle sadece slideshow'da kullanılmak istenirler, bu yüzden bu alanların sunum içeriğinin özet ve tam sayfa gösterimlerinde gösterilmesini engellemek iyi olacaktır. Bunun için Display Fields bölümünden (Manage Fields'ın hemen yanında) alan gösterimlerini şu şekilde ayarlayabilirsiniz (not: burada yapacağınız ayarların slideshow ile herhangi bir ilgisi yoktur):

  • Kısa başlık: Label: Above; Teaser: Hidden; Full Node: Hidden
  • Kısa gövde: Above, Hidden, Hidden
  • Resim: Above, Image, Image (not: Imagecache veya lightbox2 eklentilerini kullanıyorsanız Image yerine bu eklentilerin sundukları alternatifleri kullanabilirsiniz)
Slideshow için kullanacağımız içerik türümüzü böylelikle hazırlamış olduk. Sonraki adım bu türde birkaç örnek içerik eklemek olacak.
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.