İçerik alanlarını farklı bölgelere bölme


11

Durumum şu şekildedir: A, B ve C alanlarıyla bir içerik türü Semineri var. Üstbilgi, Altbilgi, İçerik ve Kenar Çubuğu Sola bölgeleri var. Seminerde İçerik bölgesinde değil, Kenar Çubuğu Sol bölgesinde de görüntülenmesini istediğim bazı alanlar var.

Bunu nasıl yapabilirim? Bu daha önce cevaplanmışsa özür dileriz. Ben bir geliştiriciyim ve kanca ve önişlemci işlevlerine dalmakta tereddüt etmiyorum. Views modülünü yükledim, ancak hiç kullanmadım (bu benim ilk Drupal sitem, söyleyemiyorsanız: P).

Şerefe.

EDIT: Bu Drupal 7 içindir .


Hangi Drupal sürümü?
keva

Üzgünüm, bu Drupal 7 için. Bu bilgiyi orijinal soruma ekledim.
Lester Peabody

Sorunu ele alır almaz cevap kabul edeceğim. Şu anda içeriği uygun şekilde görüntülemek için önerilerimi nasıl ayarlayacağımı anlıyorum ...
Lester Peabody

Yanıtlar:


11

Düğümün içeriğini sayfadaki farklı bölgelere eklemenin kolay yolu yoktur. Bu sorunu çözmenin birçok yolu vardır.

Kodlama yapmayan yol: Görünümler ve Bloklar

Bir görünüm oluşturun

  • Tür: Blok
  • İçeriğe Dayalı Filtre: İçerik: Nid
    • varsayılan değer: geçerli sayfadan yakala
  • Alanlar: Hangisini istersen
  • Filtre:
    • İçerik Türü: Seminer

(artı istediğiniz ek ayarlar)

Ardından, yönetici engelleme sayfasına gidin Yeni oluşturulan görünüm bloğunu görüntülenmesini istediğiniz bölgeye taşıyın. Yalnızca seminer düğümü sayfalarında görüntülenmelidir.

Tüm bölgeler için tekrarlayın

Theme_preprocess_region () ile Kodlama Yolu:

kod böyle bir şey olurdu

MYTHEME_preprocess_region(&$variables) {
  if (isset($node) && ($node->type == 'seminar' )) {
     //add new variable here.     
  }
}

Bu sadece Drupal 7 içindir. Şimdi bölgenizde kullanılabilir. Tpl.php.


1
Görünümler / blok yaklaşım aslında tercih ettiğim, ancak bazı daha ulaşılabilir bulmak beri Display Suite önerdi.
jhedstrom

Views, keşfettiğim gibi bunun için harika çalışıyor. Gösterim genel olarak harika. Ayrıca, menü bloğunu sitemde bulunduğum yere göre bölmek için de kullanıyorum (ana menüyü her zaman gösterecek şekilde bölerim ve alt menüler ana menüde hangi menüye bağlı olduğuma göre). Tamamen harika modülü, tavsiye.
Lester Peabody

Bunu neredeyse bir ay boyunca sorduğum çılgınca, cevabı kabul ettim, ama şimdi bu cevabın uygulanmasına başladım (o zamandan beri bir ton Views kullandım). Drupal 7 için Views kullanımınızı biraz açıklığa kavuşturabilir misiniz? Görünüşe göre Argüman: nid, Drupal 7 için Views 3'te mevcut değil.
Lester Peabody

Bunu anladım. Bağımsız Değişken kavramının yerini Gelişmiş altında Bağlamsal Filtreler almıştır.
Lester Peabody

D7, Bağlamsal Aralayıcı: İçerik: NID. Düzenleme: cevap vermeden önce bulduğunu gördüm
iStryker

7

Ekran Suite modülü bunu yapmak için izin verir. Tema bölgelerini düğüm bileşenleri için hedef olarak göstermek için Display Suite Extras modülünü etkinleştirmeniz gerekir. Bunun nasıl yapılacağı hakkında bilgi, Display Suite belgelerinin Engellenecek alanlara ekle sayfasında bulunabilir


5

Aynı sorunu yaşadım. Çözüm oldukça kolaydır. Drupal 7'de sadece FULL ve TEASER değil (en eski sürümlerden bildiğimiz gibi) kendi view_mode'mizi tanımlayabileceğimiz gerçeğini temel alabilirsiniz. Bu nedenle, bölgenizde kullanmak için başka bir görünüm_ modu tanımlayın: örneğin, LEFTHAND. Drupal, içerik bölgesinde TAM görünüm_ modu görüntüler. Bu nedenle, Kenar Çubuğu Sol bölgesinde LEFTHAND görüntülemek için Drupal'a söylemelisiniz.

  1. Template_preprocess_page () içinde

    if ($vars['node']) {
    $vars['page']['sidebar_left'][] = node_view($vars['node'], 'lefthand');
    }

  2. Node.tpl.php dosyasına soldan görünüm modu için yeni bir ekran ekleyin

    if ($view_mode == 'lefthand') {
    // render content fields here
    }


1
Bu cevap süper ultra zekidir ve görünüm modlarını tanımlamak dışında herhangi bir harici modül gerektirmez. Display Suite'e basit bir alternatif Varlık Görüntüleme Modlarıdır: drupal.org/project/entity_view_mode
paul-m

Bunu gerçekten beğendim. Yalnızca belirli sayfalarda görünmesi için bir if işlevine sarın. Kullandığım if (array_key_exists('block_14',$vars['page']['main_content'])){}yalnızca belirli bir bloğu ile sayfalarda görünmesini sağlamak için.
Dominic Woodman

3

Display Suite ihtiyaçlarınız için çok fazla görünüyorsa (Harika bir modül, ancak sadece birkaç alanı yeniden konumlandırmanız gerekirse aşırıya kaçabilir) sadece bu amaçla bir modül var -> CCK Blokları .

'CCK' blokları olarak adlandırıldığını biliyorum, ancak Drupal 7 (CCK işlevselliğini çekirdeğe getiren) ile çalışıyor.


1

@Patrik Lucan'ın cevabındaki hafif değişiklik, if ($vars['node'])düğüm olmayan sayfalarda, örneğin blok veya görünüm sayfası olan özel ön sayfa gibi sorunlara neden oluyordu.

Değiştirildi:

if (array_key_exists('node', $vars))

Hangi sorunu çözmüş gibi görünüyor.


0

Bu arada bunun için bir modül var. Modül sayfasından:

Blok Olarak Alan , geçerli düğümün bir veya daha fazla alanını bir blokta görüntülemek için kolay bir yol sağlar.

Bu modül, Paneller ve Display Suite gibi modüllere hafif bir alternatif olmayı veya yalnızca bir alanı alan bir blok tanımlamak için Görünümleri kullanmayı amaçlamaktadır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.