Taksonomi görünümünü içerik türüne göre ayarlamak

Merhaba,

Öncelikle Drupal için Türkçe kaynak kıtlığında çölde bir vaha gibi gelecek olan bu siteyi kurduğunuz için teşekkür ederim. 

Soruma gelecek olursak, hazırladığımız bir site için Drupal'de makale, haber ve içtihat gibi çeşitli içerik türleri oluşturdum. Ayrıca "Kategoriler" isimli bir taksonomi sözlüğüm ve bunun altında "Aile hukuku, ceza hukuku" gibi kategorilerim mevcut. Views'te .çeşitli videolar izleyerek taksonomi sayfalarını şu hale getirmeyi başardım:

Link: siteadi.com/aile-hukuku

h1: Aile Hukuku

buraya description geldi..

  • Makale
    • Makale 1
    • Makale 2
    • ...
  • Haber
    • Haber 1
    • Haber 2
    • ...
  • İçtihat
    • İçtihat 1
    • İçtihat 2...

Şu aşamada yapmaya çalıştığım şey, bu taksonomi sayfası için içerik türüne göre bir alt sayfa oluşturmak ve o sayfada yalnızca o içeriği göstermek. Yani şu: 

hedef link: siteadi.com/aile-hukuku/haber

  • Haber 1
  • Haber 2
  • Haber 3

hedef link: siteadi.com/aile-hukuku/ictihat

  • İçtihat 1
  • İçtihat 2
  • ...

Aslında sorumun cevabı şurada olabilir gibi hissediyorum ama buradakileri uyguladığımda herhangi bir sonuç alamadım.

Taksonomi asıl sayfasında her içerik türünden son 5 içeriği gösterip (devamı) gibi bir link eklemek ve oluşturduğum bu alt sayfalara eklemek gibi planlarım da var ama onlar sonraki aşamada.

Şimdiden çok teşekkür ederim.

Temel Bilgiler
Drupal Sürümleri:
İlgili Eklentiler
Gönderi Bilgileri
zgurb 04.08.2014 - 19:55

Merhaba,

Hem bu güzel düşünceleri paylaştığınız hem de ayrıntılı ve özenli bir soru yazdığınız için teşekkürler. Yardımcı olabilirsem ne mutlu.

Eğer URL'den veri alıp ona göre içerik göstermek zorunda değilseniz, basit yolu kullanarak amacınıza ulaşabilirsiniz:

  1. İçerikleri listeleyen bir Views sayfa görünümü oluşturun. Sayfa yolu olarak istediğiniz yolu girin (Örn: aile-hukuku/haber).
  2. "Aile Hukuku" terimine sahip içerikleri göstermek için bir terim filtresi ekleyin (Contextual/Bağlamsal değil, normal filtre.).
  3. "Haber" içerik türüyle oluşturulmuş içerikleri göstermek için bir içerik türü filtresi ekleyin.

Bu yolla, sitenizinadi.com/aile-hukuku/haber adresinde "Aile Hukuku" terimine sahip haber içerik türündeki içerikleri listeleyebilirsiniz.

Eğer URL'den çekilecek verilere göre göstermek isterseniz, Contextual/Bağlamsal filtre ve ilişkilerle bu da yapılabilir ancak şu an için bunu deneyip hatasız bir yanıt verecek zamanım yok. Bu yol gerekliyse belirtin, ilk fırsatta bir örnek yapıp yanıt vermeye çalışırım.

İyi çalışmalar.

Gönderi Bilgileri
Mediasaur 04.08.2014 - 23:02

Merhaba,

Cevabınız için ben teşekkür ederim. Siz özenle hazırlanmış soru isteyin yeter ki, soru çok :)

Anlattığınız yöntemi kullandım ve olumlu sonuç aldım. Ancak 15 kategori ve 5 farklı içerik türü için 75 farklı views oluşturmam gerekecek, olsun. Ama zamanınız olduğunda gösterebileceğiniz daha gelişmiş ve farklı bir yöntem sanki daha performanslı bir sonuç ortaya çıkarabilir, onu da merakla bekliyorum.

Kendim bulursam da buraya eklerim. Görüşmek üzere.

Gönderi Bilgileri
zgurb 05.08.2014 - 18:54

Merhaba,

Her kategori/içerik türü için ayrı view hazırlamak hem zaman ve emek açısından çok zorlayıcı olur hem de performansı çok olumsuz etkiler. 2-3'ten fazlaysa en doğrusu contextual filtrelerle tek bir view'da halletmek.

Bir örnek çalışma hazırladım:

http://ms-demo.mediasaur.com/zgurb/aile-hukuku/zgurbhaber

Contextual filtelerle URL'den kategori ve içerik türü bilgisini alarak filtreliyor. zgrub'u sayfa URL'ine eklemek zorundaydım çünkü ilk "%" işaretini yolun ilk bölümünde kullandırmıyor Views. zgrub yerine istediğiniz herhangi bir şeyi yazabilirsiniz. Belki ilk bölümü gizleyecek bir yöntem de bulunabilir.

Bu işinizi görecekse ayrıntılarını yazabilirim.

İyi çalışmalar.

NOT: zgurb yerine zgrub yazmaktan, birkaç kez sıfırdan yapmam gerekti aynı şeyleri. Bu yorumda da yanlış yazmışım. :)

Gönderi Bilgileri
Mediasaur 05.08.2014 - 20:55

Mediasur, gösterdiğiniz örnek tam olarak istediğim şey, URL'deki ayrıntı önemli değil, zahmet olmayacaksa anlatımı rica edeceğim.

Bu arada beni nasıl bir yükten kurtardığınızı bilemezsiniz, yıllardır hayalini kurduğum siteme sayenizde nihayet bir adım daha yaklaşabileceğim. O yüzden nickimi istediğiniz hale getirebilirsiniz :)

Gönderi Bilgileri
zgurb 06.08.2014 - 10:28

İlgili içerik türlerini, sözlük ve terimleri, içerikleri oluşturduğunuzu varsayarak doğrudan Views anlatımına geçiyorum.

  1. İçerikleri listeleyen bir view oluşturun.
  2. View sayfa görünümü için yolu "istediginiz-on-ek/%/%" biçiminde ayarlayın.
  3. Format, alan vb. ayarları istediğiniz biçimde yapın.
  4. İçerikleri sahip oldukları terim bilgisini URL'lerinden alarak süzmek üzere bir terim contextual filtresi (bağlamsal süzgeç) ekleyin.
    1. "When the filter value is NOT in the URL" bölümünde hiçbir şey seçmeyin.
    2. "When the filter value IS in the URL or a default is provided" bölümünde "Specify validation criteria"yı işaretleyin, "Taxonomy term"ü seçin, ilgili sözlüğü seçin, Term name converted to term ID'yi seçin, "Transform dashes in URL to spaces in term name filter values" seçeneğini işaretleyin.
  5. İçerikleri ait oldukları içerik türlerine göre süzmek için bir Content: Type (İçerik: Tür) contextual filtresi ekleyin.
    1. "When the filter value is NOT in the URL" bölümünde "Provide default value"yu işaretleyin ve "Content ID from URL"i seçin.

Unuttuğum, gözden kaçırdığım bir şey yoksa, bu yolla istediğiniz sonucu elde edebilirsiniz. Drupal'ı hangi dilde kullandığınızı bilmediğim için Drupal terimlerini ağırlıklı olarak İngilizce yazdım; umarım sorun oluşturmaz.

Not: Yoğunluk nedeniyle biraz geç yazabildim; kusura bakmayın. Bunu zaman bulursam derse dönüştürmeyi düşünüyorum. Eğer siz zaman ayırabilir ve benden önce yapabilirseniz, isterseniz siz ders olarak siteye ekleyin.

Gönderi Bilgileri
Mediasaur 06.08.2014 - 23:54

Mediasaur, ne kadar teşekkür etsem az. Anlattığınız yöntemden yola çıkarak deneme yanılma yöntemiyle verdiğiniz örnekteki URL'de yer alan "zgurb"'u ortadan kaldıracak bir ek bir metod buldum.

Buradan da kısaca özetlemem gerekirse,

  1. İlk olarak Views'de  path'i /taxonomy/term/% olan default taksonomi görünümünü aktifleştirdim ve kendime göre düzenledim.
  2. Aynı views'e yeni bir sayfa (page) ekledim ve bu sayfanın path'ini /taxonomy/term/%/% olarak gösterdim.
  3. Yeni eklediğim bu sayfaya Advanced bölümünden "Content: Has taxonomu term ID" adlı ilk contexual filter'ımı ekledim. Burayı WHEN THE FİLTER VALUE İS NOT İN THE URL kısmında "Display all results for the specified field" olarak, WHEN THE FİLTER VALUE IS İN THE URL OR A DEFAULT İS PROVİDED kısmında Specify validation criteria > Validator: Sınıflandırma Terimi (Taxonomy Term) > Filter value type: Term ID olarak ayarladım.
  4. Sonrasında "İçerik: Tür" (Content: Type) isimli ikinci contexual filter'ımı ekledim ve WHEN THE FİLTER VALUE İS NOT İN THE URL kısmını "Display all results for the specified field" olarak ayarlayarak istediğim sonuca ulaştım. Opsiyonel olarak WHEN THE FİLTER VALUE IS İN THE URL OR A DEFAULT İS PROVİDED kısmında Override Title alanını "%1 Hakkında %2" olarak girdim ve URL'si siteadi.com/aile-hukuku/haber şeklinde olan, yalnızca o taksonomiye ait içerik türünde girilmiş olan yazıları gösteren bu sayfalarımın title'ı örneğin "Aile Hukuku hakkında haberler" oldu.

Tekrar çok teşekkür etmekle birlikte, eğer izin verirseniz bunu ders haline getirip sitede yayınlamak isterim.

Gönderi Bilgileri
zgurb 08.08.2014 - 00:57

Yaptım sanıyordum ama tam yapamamışım :) Aslında URL'yi taxonomy/term/12/haber vs gibi gösterebiliyorum ama aile-hukuku/haber şeklinde göstermek istediğimde pathauto sıkıntı çıkarıyor, bunu haledebilirsem güncelleme yapacağım.

Gönderi Bilgileri
zgurb 08.08.2014 - 01:30

Öncelikle bir hatamı, daha doğrusu gereksiz bir eklemeyi düzelteyim. 2. "%" işaretine gerek yok çünkü gerekli veriyi içerikten alıyor, yoldan değil.

Ön tanımlı taxonomy view'una benzer bir view zaten yukarıda yazdığım; sorun ilk path segmentinin % olamaması. Bu da Views eklentisini geliştiren merlinofchaos'un (Earl Miles) https://www.drupal.org/node/370868 adresinde belirttiği gibi (http://www.drupal.org/node/370868#comment-1244667 ve http://www.drupal.org/node/370868#comment-2143640) Drupal'ın menü sistemiyle ilgili bir sorun ve bildiğim kadarıyla halen doğrudan bir çözümü yok.

"taxonomy/term/12/haber", "taxonomy/term/aile-hukuku/haber", "term/12/haber", "term/aile-hukuku/haber" vb. biçimlerinde gösterebilirsiniz çünkü %'den önce "taxonomy/term", "taxonomy" ya da "term" biçiminde bir segment veriyorsunuz.

Başka bir takım yol ve yöntemlerle bu sorun aşılabilir tahminimce ama en kolay ve makul yol, uygun bir ön ek (yol parçası, segment) kullanmaktır. Örneğin yukarıda örneklediğim view'da "zgurb" yerine "kategori", "icerik" vb. bir sözcük kullanılabilir; yani view page path'i "kategori/%" ya da "icerik/%" olabilir.

Daha uygun ve ön ek/ilk segment sorununu çözen bir yol/yöntem bulursanız lütfen paylaşın. Sorunu en uygun biçimde çözüp istediğinizi elde ettiğinizde ders olarak hazırlayıp sitede paylaşırsanız çok yararlı bir içerik olacaktır.

Gönderi Bilgileri
Mediasaur 08.08.2014 - 12:43

Başka bir yoldan sonunda problemi çözdüm. 

Hatırlanacağı üzere Aile Hukuku taxonomy term'üne ait haber, makale, içtihat vs gibi farklı içerik türlerini, farklı sayfalarda süzerek göstermek istiyordum.

taxonomy sayfamın url'si siteadi.com/aile-hukuku, bu term için yalnızca haberlerin gösterileceği sayfa URL'si siteadi.com/aile-hukuku/haber şeklinde olacaktı.

Bunu gerçekleştirmek için ihtiyacım olan aşağıdaki modüllerü yükledim:

  • Pathauto
  • Sub-pathauto
  • Views

İlk olarak, pathotu ayarları için taxonomy term'ünü URL kökünde göstermek amacıyla admin/config/search/path/patterns linkinden Default path pattern kısmını  [term:name] olarak belirledim.

Sonrasında sub-pathauto ayarları için admin/config/search/path/subpaths linkinden dept'i 1 olarak seçtim ve skip.. seçeneğinin yanına tik attım.

Views ayarları için ise,

  1. İlk olarak path'i /taxonomy/term/% olan default taxonomy views'ini aktifleştirdim ve bu sayfayı kendime göre ayarladım.
  2. Haber türünden içerikleri süzmek için bu views'te yeni bir sayfa (page) oluşturdum ve path'ini /taxonomy/term/%/haber olarak belirledim.
  3. Bu sayfaya İçerik: Has taxonomy term ID ve İçerik: Tür olmak üzere 2 yeni contexual filter ekledim.
  4. FILTER CRITERIA kısmında İçerik: Tür -> Is one of: Haber türünü içeriği seçtim.
  5. Son olarak Menu--> Menu Tab --> Başlık: Haber --> Bağlam (Contex) seçeniğin yanına tik atarak menü ayarlarını yaptım.
Gönderi Bilgileri
zgurb 08.08.2014 - 20:50

Açıkçası nasıl çözdüğünüzü anlamadım (Örn: Başta tek bir view'la halletmek istediğinizi belirtmiştiniz ama yazdığınız çözüme göre her içerik türü için ayrı bir view oluşturacaksınız.); ama çözüldüyse sorun yok. :)

Sub Pathauto'yu denedim, tuhaf sorunlar oluştu, kaldırdım. Sorun çözüldüğü için de eklediğim views vs.yi sildim.

Gönderi Bilgileri
Mediasaur 09.08.2014 - 02:33