CCK eklentisi
Arkadaşlar selam,
Bu yazımız içerik türlerine yeni alanlar eklemek üzerine olacak. Önceki yazılarımızda yeni içerik türlerini nasıl ekleyebileceğimizi görmüştük, şimdi de varolan içerik türlerine veya yeni yaratacağımız içerik türlerine nasıl yeni alanlar ekleyebileceğimizi göreceğiz.
Eğer içerik türleri konusunda bilginiz yok ise Drupal içerik türleri ve İçerik türü eklemek isimli makaleleri okumanızı ve videolar sayfasındaki ilgili videoları izlemenizi tavsiye ederim.
İçerik türlerine yeni alanlar eklerken en büyük yardımcımız Drupal 7 ile birlikte standart eklenti olacak olan Content Construction Kit (CCK) eklentisidir. Bu eklenti sayesinde web sitemizi standart Drupal görünümünden daha zengin içerikli bir görünüme kavuşturabileceğiz.
İşe başlamak için http://drupal.org/project/cck adresinde Drupal kurulumunuza uygun CCK eklentisini download ederek sites/all/modules klasörüne açalım.
Eğer eklentiler konusunda bilginiz yok ise Drupal Eklentileri isimli makaleyi ve video'lar sayfasından Drupal Eklentileri isimli videoyu izlemenizi tavsiye ederim.
Eklentiyi etkinleştirmek için Yönet - Site kurulumu - Eklentiler sayfasına gidelim. Burada CCK isminde yeni bir bölüm oluştuğunu ve bu bölümde 1'den fazla eklentinin oluştuğunu göreceksiniz.

Görüldüğü üzre aslında CCK 1'den fazla eklentinin biraraya gelmesi ile oluşmuş bir eklentidir. Burada görmüş olduğunuz CCK eklentilerine yenilerinide ekleyebilirsiniz. Birçok ihtiyaca uygun CCK eklentilerine ulaşmak için http://drupal.org/project/modules adresinden arama yapabilirsiniz veya aynı sayfanın sağ sütunundaki Projects sekmesinde göreceğiniz Content Construction Kit (CCK) linkini tıklayarak tüm CCK eklentilerine ulaşabilirsiniz. Biz öncelikle buradaki eklentileri inceleyelim,
- Content: Yeni içerik türleri oluşturabilmemizi sağlar. Bu eklenti diğer CCK eklentilerinin çalışabilmesi için gerekli eklentidir.
- Content Copy: Oluşturulan alan bilgilerinin bir başka web sitesinde de kullanılabilmesi için gereken import/export işlemlerinin yapılabilmesine imkan tanır.
- Content Permissions: Field (alan) seviyesinde izin tanımlanabilmesini sağlar.
- Fieldgroup: Oluşturulan alanların gruplandırılıp, grup halinde işlem yapılabilmesini sağlar.
- Node Reference: Bir alanın bir başka alana referans tanımlanabilmesini sağlar.
- Number: Numerik alanlar oluşturulmasını sağlar.
- Option Widgets: Check box, radio button gibi alanlar oluşturulmasını sağlar.
- Text: Normal text alanları oluşturlmasını sağlar.
- User Reference: Kullanıcılar ile node'lar (Düğümler) arasında referans oluşturulmasına olanak sağlar.
Yazımızda örnek olarak bir basit Emlak sitesi örneğinin bir parçasını yapacağız. Bunun için yukarıdaki CCK eklentilerine ek olarak Filefiled ve Imagefield isminde 2 adet daha CCK eklentisi çekip etkinleştirmemiz gerekmekte. Bu eklentileride sites/all/modules klasörüne açtıktan sonra, Content Copy, Content Permissions eklentisi hariç ve Filefield eklentisi ile birlikte gelen FileField Meta hariç (Toplam 3 eklenti hariç) hepsini etkinleştirelim. Bu 3 eklentiye şu an için ihtiyacımız yok.
Bu eklentileri etkinleştirdikten sonra öncelikle Drupal yapısında ne gibi bir değişiklik gerçekleşti buna bakalım. Bunun için Yönet - İçerik yönetimi - İçerik türleri sayfasına gidersek daha önceden görmediğimiz başlıkların oluştuğunu göreceğiz.
- Fields: Oluşturulan alanların (Field'lerin) listesi.
- Manage fields: İlgili içerik türüne yeni alanlar ekleyip düzenlenmesini sağlar.
Ben bu örneğimizde kiralık veya satılık ev ilanları yayınlayabileceğimiz bir emlak sitesi yapısına başlangıç yapacağım. İstediğiniz gibi geliştirmek veya benzer bir yapı oluşturmak size kalmış.
Bulunduğumuz sayfada (Yönet - İçerik yönetimi - İçerik türleri) yeni bir içerik türü oluşturalım. Bunun için sayfanın üst kısmındaki İçerik türü ekle linkine veya alt kısmında bulunan Add a new content type linkini tıklamamız yeterli.
Açılan sayfada,
- İsim: Ev ilanı yazdım (Buraya girilen yazı içerik oluşturma sayfasında bulunan listede görüntülenecek).
- Tür: ev_ilani yazdım (Makine adı denilen bir isim türü yani küçük harf, rakam veya alt çizgi kullanılabilir. Türkçe karakter kullanmayınız.
- Tanım: Ev ilanları oluşturmak için bu içerik türünü kullanınız yazdım. (İçerik oluşturma sayfasında bu içerik türü için bir açıklama)
Gönderi formu ayarları
- Başlık alanı etiketi: Başlık kelimesini silerek İlan adı yazıyorum.
- Gövde alanı etiketi: Gövde kelimesini silerek İlan açıklaması yazıyorum.
- En düşük kelime sayısı: Varsayılan değerde bırakıyorum. İnsanlar istediği kadar açıklama girebilisinler. Siz karakter kısıtlaması yapmak isterseniz değiştirebilirsiniz.
- Açıklama veya gönderim kılavuzu: Lütfen bütün alanları eksiksiz doldurunuz yazdım.
İş akış ayarları
Bu sekmedeki her seçeneği varsayılan olarak bıraktım ve İçerik türünü kaydet'i tıkladım.
İşin CCK kısmına geçmeden önce İçerik oluştur linkini tıklayalım ve yaptığımız ilk işin görünümüne bakalım.
Dikkat: Buradaki İlan isimli içerik türü, Drupal'de içerik türleri eklemek isimli makale ve video hazırlanırken oluşturulan içerik türüdür ve şu an oluşturmakta olduğumuz Ev ilanı isimli içerik türüyle hiçbir alakası yoktur. Odaklanmamız gereken içerik türü Ev ilanı isimli içerik türüdür.

Gördüğünüz gibi ilk adım tamam. İçerik türümüzü oluşturduk. İçerik oluşturacakmışız gibi Ev ilanı linkini tıklayalım ve az önce yapmış olduklarımızı CCK eklentisine geçmeden önce görelim.

Buraya kadar sorun yok. Gelelim CCK eklentisinin faydalarına. Şu ana kadar yaptıklarımız standart Drupal kurulumu ile yapabildiğimiz şeylerdi.
İçerik türümüze yeni alanlar ekleyebilmek için Yönet - İçerik yönetimi - İçerik türleri sayfasına gidelim ve Ev İlanı satırındaki Manage fields linkini tıklayalım. Karşımıza gelecek olan görüntü şu şekilde olmalı,
Üst kısımda yer alan alanlar içerik türü oluşturulurken arka planda oluşturlan alanlar. Bizim yeni alanlar ekleyebilmemiz için alt kısımdaki Add başlığı altındaki bilgileri doldurmamız gerekmekte.
- New field: Yeni alanlar oluşturabilmemizi sağlar.
- New group: Yeni gruplar oluşturabilmemizi sağlar. (Şu anda bu sekme ile işimiz yok)
New field alanındaki alanları dolduralım,
- Label: Ev tipi yazdım. (Yeni eklenecek alana bir etiket ismi veriyoruz)
- field_: ev_tipi yazdım.Yukarıda yazdığımız etiketin veritabanındaki karşılığı. (Sadece küçük harf, rakam ve alt çizgi kullanabiliriz. Türkçe karakter kullanmayın. Yanlışlıkla kullanırsanız o harf görüntülenmeyecektir. Dert etmeyin daha sonra değiştirebilirsiniz) Burada kullanacağınız ismi başka bir alan için bile olsa tekrar kullanamazsınız.
- Select a field type: Text seçiyorum.
- Select a widget: Select list'i seçiyorum. (Böylece kullanıcıların bir listeden seçim yapabilmelerini sağlamış oluyorum)
Sıra geldi değerleri girmeye. Bunun için öncelikle bu sayfanın altındaki Kaydet'i tıklayalım.
Açılan sayfada,
- Yardım metni: Evin tipini seçiniz yazdım.
- Default value: Az sonra belirleyeceğimiz Ev tiplerinden hangisi listede seçili olarak gelsin ayarını buradan yapıyoruz. Şu anda herhangi bir değer olmadığı için seçim yapamayız. Ama kaydetme işleminden sonra bu sekmede değişiklik yaparak, sayfa yüklenmesi sonrasında istediğiniz değerin seçili olarak gelmesini sağlayabilirsiniz.
Genel ayarlar
Zorunlu: Bu kutucuğu işaretliyorum ki seçim yapılmadan içerik oluşturulamasın.
Number of values: Kullanıcılar Ev tiplerinden kaç tanesini aynı anda seçebileceği belirlenir. Bizim örneğimizde şu an için buna gerek yok. Ancak sizin çalışmalarınızda 1'den fazla öğenin seçilebilmesini istiyorsanız bu değeri arttırabilirsiniz tabiki.
Ancak orada da yazdığı gibi girmiş olduğunuz değeri daha sonra değiştirmek veri kaybına yolaçabilir. Bu yüzden daha sonradan bu değeri değiştirmenize gerek olmayan bir planlama yapmalısınız.
Maximum length: Bu alana girilecek karakter sayısını belirliyoruz. Boş bırakılırsa limitsiz anlamına gelmekte.
Allowed values
Allowed values list: İşte anahtar nokta burası. Belki "biz ne yapıyoruz ya" diye düşünen arkadaşların soru işareti burada kalkıyor. Burada bir emlaçıda pazarlanan olası evlerin tiplerini belirliyoruz. Ben buraya,
Apartman dairesi
Müstakil tek katlı
Dublex
Triplex
yazdım ve Kaydet'i tıkladım. Kaydettikten sonra açılan sayfada Ev tipi isimli alanı İlan adı isimli alanın altına sürekledim ve kaydetttim.

Not: Eğer yanlış yaptığınızı düşünüyorsanız Ayarla link ile tekrar düzenleme sayfasına geri dönerek gerekli değişiklikleri yapabilirsiniz. Ancak ulaşacağınız sayfa alan oluşturma alanının 2. adımı olan değerleri girme sayfası olacaktır. Eğer ilk adımda hata yaptığınızı düşünüyorsanız ilk adımdaki Widget type seçeneğini (Örneğimizin ilk adımında seçtiğimizi Select list olan kısım) değiştirebilirsiniz sadece. Eğer Field name veya Field type gibi temel değerleri yanlış girdiğinizi düşünüyorsanız bu alanı Manage fields sayfasından Remove linkini tıklayarak silmeli ve yeni baştan oluşturmalısınız.

Bu yaptığımız işlemin sitemizde nasıl bir değişiklik yarattığını görmek için İçerik oluştur - Ev ilanı sayfasına gidelim. Gördüğünüz gibi standart Drupal görüntüsündeki ilk değişikliğimizi yapmış durumdayız.
Devam edelim. Yönet - İçerik yönetimi - İçerik türleri sayfasından Ev ilanı - Manage fields sayfasına geri dönelim. New field sekmesi ile yeni bir alan yaratalım.
- Label: Evin durumu
- field_ : evin_durumu
- Select a field type: Text
- Select a widget: Select list
Kaydet ile tıklayalım. Açılan sayfada değerleri girelim.
Yardım metni: Evin durumunu seçiniz.
Genel ayarlar
- Zorunlu: İşaretledim.
- Number of values: 1
- Text processing: Plain text
- Maximum length: Boş
Allowed values
Allowed values list:
Kiralık
Satılık
Kaydettikten sonra açılan sayfada bu alanı da Ev tipi alanının altına sürekledim ve kaydettim.
Hiç vakit kaybetmeden 3. alanımızı oluşturalım.
New field sekmesinden,
- Label: Fiyatı
- field_: fiyati
- Select a field type: Integer (Bu sayede bu alana sadece rakam girilebilecek. Aksi durumda hata verecektir) (Integer, yapısı gereği maksimum 10 karakter veri depolayabilir.
- Select a widget: Text field
Kaydet ile tıklayalım. Açılan sayfada değerleri girelim.
- Yardım metni: Fiyatı yazınız.
- Default value: Boş bırakıyorum.
- Zorunlu: İşaretli
- Minimum: Girilebilecek en düşük değer. Boş bırakıyorum (Girilen rakamın altında değerler kabul edilmeyecektir)
- Maximum: Girilebilecek en yüksek değer. 1000000 yazıyorum. (Girilen rakamaltında de değerler kabul edilmeyecektir)
- Prefix: Boş bırakıyorum. (Girilen değerin önüne sabit olarak gelmesini istediğiniz bir ön ek)
- Suffix: TL yazıyorum. (Girilen değerin sonuna sabit olarak gelmesini istediğiniz bir son ek)
Save field settings ile yaptığımız değişiklikleri kaydedelim.
Açılan sayfada bu alanı da Evin durumu alanının altına sürekledim ve kaydettim.
Son alan olarak Ev'in bir resmini koyabileceğimiz bir resim alanı yaratalım işimizi bitirelim.
Yönet - İçerik yönetimi - İçerik türleri sayfasından Ev ilanı - Manage fields sayfasına geri dönelim. New field sekmesi ile yeni bir alan yaratalım.
- Label: İlanın resmi
- field_: ilanin_resmi
- Select a field type: File
- Select a widget: Image
Kaydet ile tıklayalım. Açılan sayfada değerleri girelim.
- Yardım metni: Evin resmini giriniz.
- Permitted upload file extensions: Upload edilmesine izin verilecek dosya uzantıları. Varsayılan değerlerde bıraktım.
- Maximum resolution for Images: Upload edilecek dosyanın maksimum boyutu. 0 kısıtlama olmayacağı anlamına gelir. 640x480 olarak belirledim.
- Minimum resolution for Images: Upload edilecek dosyanın minimum boyutu. 0 kısıtlama olmayacağı anlamına gelir. Varsayılan değerde bıraktım.
Path setting (Yol ayarları)
- File path: Upload edilecek dosyaların files klasörü altında alt bir klasör altında olmasını istiyorsanız bunu bu satırdan belirlemelisiniz. Boş bıraktım.
- Maximum upload size per file: Dosya başına maksimum en yüksek boyut. Boş bırakırsanız php.ini dosyasında belirlenmiş upload_max_filesize 'ın değeri kadar büyüklükteki dosyaların upload edilmesini izin verilir.
Not: Localhostta bu değeri değiştirmek isterseniz Wamp server'ın ikonunu tıklayın, açılan Wamp server menüsünde PHP - php.ini dosyasını açın.

Açılan bu dosya php'nin nasıl çalışması konusundaki en önemli dosyadır. Üzerinde bir değişiklik yapmdan önce yedeklemenizi tavsiye ederim
Burada File uploads bölümünü bulunuz (Ctrl + F) ve upload_max_filesize satırındaki değeri değiştiriniz. Dosyayı kaydedin ve değişikliklerin geçerli olabilmesi için Wamp server menüsünde bulunan Bütün servisleri yeniden başlatı tıklayarak servislerin kapatılıp açılmasını ve php.ini dosyasının tekrar okunarak değişikliklerin geçerli olmasını sağlayın.
Bu değişikliği localhost'ta değilde gerçek hayattaki bir server üzerinde yapmak için hosting hizmetini aldığınız firmanın yardım sayfasından veya destek hattından öğrenebilirsiniz. Ben hosting hizmetleri için sürekli Bluehost'u kullanıyorum. Herkese de tavsiye ederim. Problemsiz bir firmadır. Blouehost'un sunmuş olduğu yönetim panelinin Php seçenekleri altında bu iş için geliştirilmiş bir bölüm var. Kısaca şöyl söyleyebilirim, ftp root'unuzda konfigür edilebilir bir php dosyası yaratmanızı ve bu php dosyasını düzenleyebilmenize olanak veriyor. Bu sayede az önceki gibi upload_max_filesize gibi değerleri rahatlıkla değiştirebiliyorsunuz.
- Maximum upload size per node: Bu node'da (Düğümde) toplamda upload edilebilecek maksimum değer. Boş bırakmak herhangi bir kısıtlama olmayacağını belirler.
Alt text settings
Resimlerin üzerinde fare'nin imlecini getirdiğimizde veya herhangi bir sebepden dolayı resmin yüklenememesi durumunda görüntülenecek bir metin belirlenmesi sağlanır.
- Enable custom alternate text: Kullanıcıların alternatif Alt text girebilmesi için Ev ilanı içerik oluşturma sayfasında bir alan oluşturulur. Bu sayede, eğer resim bir şekilde yüklenmezse arama motorları veya ekran okuyucu cihazların bu yazıyı algılaması sağlanır.
- Default ALT text: Varsayılan olarak berlirlenebilecek bir metin. İçerik oluştururken bu metni değiştirebilirisiniz. Ben Drupal evleri yazdım :)
Title text settings
Resimler hakkında bir başlık oluşturulması sağlanır. Bu sayede fare'nin imlecini resmin üzerine getirdiğimizde bir metin görüntülenmesi sağlanır.
- Enable custom title text: Kullanıcıların farklı başlık'lar girebilmesi için Ev ilanı içerik oluşturma sayfasında bir alan oluşturulur.
-
Input type
- Textfield: Başlık girilecek alanın bir satır olması sağlanır.
- Textarea: Başlık girilecek alanın daha çok bilgi girilebilmesi için bir metin kutusu olması sağlanır.
- Default Title text: Varsayılan olarak bir başlık metni girebilirsiniz. Daha sonra bu metni içerik oluştururken değiştirebilirsiniz. Drupal evleri yazdım yine.
Default image
- Use default image: Bu kutucuk işaretlenirse, içeriğe eklenen resmin görüntülenmemesi durumunda standart olarak belirleyebileceğimiz resmin görüntülenmesini sağlar.
- Upload image: Yukarıda bahsedilen kutucuğun işaretlenmesi durumunda gösterilecek resmin belirlenmesini sağlar.
- Genel ayarlar: Bu sekmedeki tüm ayarları varsayılan değerlerde bırakarak Save field settings'i tıklıyorum.
Açılan sayfada bu alanı da Fiyatı alanının altına sürekledim ve kaydettim.
Şu an durumumuz aşağıdaki gibi olmalı.

Evet şimdi yaptıklarımızın neticesini alabilmek için İçerik oluştur sayfasından Ev ilanı'nı tıklayalım ve ilk ev ilanımızı hazırlayalım.
- İlan adı: Amerika'da sahibinden satılık ev. (Ne alakaysa :) )
- Ev tipi: Dublex
- Evin durumu: Satılık
- Fiyatı: 800000
- İlan resmi: Resmi seçtikten sonra upload'ı tıklamayı unutmayınız. Upload ettikten sonra az önce Image alanını oluştururken belirlediğimiz varsayılan değerlerin karşımıza gelmesi gerekmekte (Drupal evleri). Arzu ederseniz bu değerleri şimdi buradan değiştirebilirsiniz.
Menü ayarları
Eğer oluşturduğumuz bu içeriğin Menülerde (Birincil linkler, İkincil linkler, Gezinti veya sizin oluşturduğunuz bir menü varsa onun altında) görüntülenmesini istiyorsanız buradaki seçenekleri doldurunuz. Boş geçiyorum. Zira tek bir ev ilanının link olarak görüntülenmesi mantıklı değil. 100 tane'de ev ilanını menü yapmak yine çok mantıksız. Eğer biz Ev ilanlarımızın hepsinin tek bir sayfada görüntülenmesini istiyorsak Views eklentisinden faydalanmalıyız. Bu konuyu bir başka makalede işleyeceğiz.
İlan açıklaması: Ev hakkında açıklamalar girebilirsiniz. Ben burada Netron'dan eski iş arkadaşım olan Cem Karahanoğlu'nun Türkiye temsilciliğini üstlendiği Lorem Ipsum sayfasından faydalanacağım. http://tr.lipsum.com/ sayfasından ürettiğim Lorem Ipsum metinlerini kopyalayıp-yapıştırıyorum.
Girdi biçimi: Eğer izin verilen tag'ler arasında <img> tag'i eklemediyseniz resim görüntülenmeyecektir. Bunun için Yönet - Site ayarları sayfasındaki Filtered HTML ayarlarını tıklayarak, açılan sayfada Ayarla linkini tıklayın ve İzin verilen HTML etiketlere <img> tag'ini ekleyerek kaydedin veya içerik oluşturma sayfasındaki Girdi biçimleri seçeneklerinden Full HTML'i seçin.
Sürüm bilgisi: Varsayılan değerlerde bırakıyorum.
Yorum ayarları: Size kalmış bir şey. Eğer ilana yorum yapılasını istiyorsanız Okunur/yazılır, istemiyorsanız Devre dışı'nı seçiniz.
Yazım bilgisi: Varsayılan değerlerde bırakıyorum.
Yayınlama seçenekleri: Yayında ve Anasayfaya yükseltildi'yi seçiyorum
Son olarak Kaydet'i tıklarak ilk ilanımızı oluşturmuş oluyoruz. Açılan sayfadaki görüntümüz aşağıdaki gibi olmalı. İçeriği Anasayfaya'da yükselttiğimiz ilanımız Anasayfada'da görüntülenecektir.

Son olarak bir şey daha yapalım.
Ev tipi:
Dublex
Evin durumu:
Satılık
Fiyatı:
800000TL
Bu görüntüyü daha göze hoş getirelim. Değerler alt satırda değil de alanların karşısında görüntülensin. Bunun için Yönet - İçerik yönetimi - İçerik türleri sayfasındaki Ev ilanı satırında bulunan Manage fields linkini tıklayalım. Açılan sayfanın üst kısmındaki Display fields linkini tıklayalım. Burada Ev ilanı içerik türü için az önce hazırladığımız alanların bir listesini göreceğiz.
Bu sayfada, oluşturuduğumuz bu alanların Teaser (Anasayfadaki özet görünümü) ile içeriğin kendi sayfasında bu alanların nasıl görüntüleneceklerini belirliyoruz.
Ben burada Ev tipi, Evin durumu ve Fiyatı alanlarını Label seçeneklerinden Inline olarak değiştirdim. Bu sayede alanlar ile değerler aynı satırda görüntülenecek. İlanın resmini Label'ını Above olarak bıraktım ancak Teaser seçeneğini Image linked to node olarak değiştirdim. Bu sayede, ilanın Anasayfa'daki teaser görünümündeki (Özetindeki) ev resmine bir link atanmış oldu ve ziyaretçi bu resmi tıklandığında doğrudan ilanın kendi sayfasına gidebilecek.

Tekrar Anasayfaya gittiğimizde göreceğiz ki görünüm değişmiş. Resmin üzerine fareyi getirdiğimizde linkin oluştuğunu, tıklayınca ilanın kendi sayfasına gideceğimizi göreceğiz.

Not: İlanda, ilanın kimin tarafından ve hangi tarihte oluşturulduğuna dair bilginin görüntülenmesini istemiyorsanız, Yönet - Site kurulumu - Temalar sayfasından kullandığınız temanın ayarlar linkini tıklayın. Açılan sayfadan Genel ayarlar'ı tıklayın (admin/build/themes/settings). Açılan sayfada Gönderi bilgilerinin görüntüleneceği türler sekmesinde bulunan içerik türlerinden Ev ilanı (Yada siz hangisinde görüntülenmesini istemiyorsanız) kutucuğunda bulunan işareti kaldırın ve kaydedin. Artık bu bilgiler içeriklerinizde yayınlanmayacaktır. Yaratacağınız her içerik türünde bu seçenek işaretli olarak oluşturulur aklınızda bulunsun.
CCK eklentisiyle yapılabilecek, ihtiyaçlar doğrultusunda sizin hayal gücünüze kalmış durumda gördüğünüz gibi.
Umarım işinize yarar.
Popüler içerik
- Drupal Dökümanları (3,575)
- Cu3er eklentisi (2,883)
- Drupal temalar (2,366)
- Drupal CCK (2,362)
- Drupal temaları (2,276)
- 1 of 10
- ››



