web-gelistirme-sc.com

Drupal 7 - Taksonomi Sayfalarındaki düğüm çıktılarını bastır

Taksonomi sayfalarındaki düğümlerin çıktısını, bir modül yüklemeye gerek kalmadan bastırmanın bir yolu var mı (yani, sadece template.php'de)?

Bir sınıflandırma terimiyle etiketlenmiş düğümler "Sınıflandırma Dizini sayfasında" (ör. Siteniz.com/taksonomi/term/[id]) görünür.

Drupal 7, Taksonomi Dizini sayfalarında bunlara ekli alanlar olabilir. Ancak, sınıflandırma sayfasını bir Görünüm ile gezmeye çalışırsanız (örneğin, düğümlerin nasıl görüntüleneceğini denetlemek için) Sınıflandırma Dizini sayfalarındaki alanlar görünmez.

Bu nedenle Taksonomi Görünümümü Taksonomi Dizini sayfasına blok olarak yerleştirdim. Bu şekilde, düğümlerin nasıl görüneceğini kontrol edebilirim ve yine de Sınıflandırma Dizini sayfa alanlarına sahip olabilirim.

Bu nedenle, sınıflandırma sayfası hala düğümlerini çıkarıyor. Düğümleri teaser'ı gizli olarak ayarlayarak saklayabilirim, ancak yine de düğümleri yükler (ve bu nedenle düğümler görüntülenmese bile düğümlere bağlı herhangi bir CSS/Jquery). Düğümlerin, ideal olarak template.php içinden görünmesini nasıl engelleyebilirim?

10
big_smile

Biliyorum, bu bir modül yok çözüm istedi, ama Drupal 7, tam olarak ihtiyacınız olanı yapan bir modül var: Terim Node Listeleri

Terim listesinin çıktısını devre dışı bırakmak istiyorsanız, Kelime başına seçim yapmanızı sağlar.

5

http://www.wardontheweb.com/remove-node-lists-from-taxonomy-pages-in-drupal-7/ çözümü benim için iyi çalışıyor:

function THEMENAME_preprocess_page(&$vars){
   if (arg(0) == 'taxonomy' && arg(1) == 'term' && is_numeric(arg(2))){
     unset($vars['page']['content']['system_main']['nodes']);
     unset($vars['page']['content']['system_main']['pager']);
     unset($vars['page']['content']['system_main']['no_content']);
   }
}

Not: Sitenizin önbelleğini sıfırlamanız gerekir.

8

Düğümleri $ page değişkeninden kaldırmanız gerekir.

template.php içinde şöyle yapabilirsiniz:

function MY_THEME_preprocess_page(&$variables) {
  if(arg(0) == "taxonomy" && arg(1) == "term") {
    $variables['page']['content']['system_main']['nodes'] = null;
  }
}

page.tpl.php içinde şu kodu kullanın:

if(arg(0) == "taxonomy" && arg(1) == "term"){
  $page['content']['system_main']['nodes'] = null;
}

Bu, düğümleri tüm sözcükler ve terimler 'den kaldırır. Bunları yalnızca belirli terimlerden veya tüm terimlerden bir kelime dağarcığından kaldırmak istiyorsanız, terimi yüklemek ve _ ifadesini güncellemek için tid içeren arg(2) kullanın.

2

Taksonomi şeylerini gizlemek için CSS kullanıyordum ama ekranlarını özel olarak ayarlayıp daha iyi bir seçenek gibi görünüyor.

0
Joseph Coco

Template.php içinde pratik olarak her şeyi yapabilirsiniz, ancak bu önerilmez. Bir CMS kullanmanın amacı, verileri, davranışı ve görünümü ayırmanızdır. Template.php dosyası, tema katmanının bir parçasıdır ve bunu sitenizin görsel stilini ayarlamak için kullanmalısınız.

Bir sitenin davranışını ayarlamak istiyorsanız (bu durumda: belirli bir listede hangi öğelerin gösterileceğini kontrol edin) davranışı değiştirmeniz gerekir, böylece modülleri kurar ve yapılandırırsınız. Özel içerik listeleri oluşturmak istiyorsanız, Views modülü tam olarak ihtiyacınız olan şeydir.

Sizin durumunuzda (doğru anlarsam), sınıflandırma teriminin alanlarının o terimle etiketlenmiş düğümler listesinin yukarısında görüntülenmesini istersiniz. URL'den terim kimliğini alan ve ihtiyacınız olan bilgileri gösteren bir görünüm bloğu oluşturarak bunu görünümünüzde yeniden oluşturabilirsiniz.

0
marcvangend