web-gelistirme-sc.com

Menü ilişkisine dayalı olarak alt düğümlerin görünümünü nasıl oluşturabilirim?

Bir menü ağacında aşağıdaki sayfaların olduğunu varsayalım:

  • Projeler
    • Birinci Proje
    • Proje 2
    • Üçüncü Proje

Alt sayfalardan bir resim, başlık ve metin (özet) gösterecektir Proje (üst) sayfasına gömülü bir görünüm oluşturmak için bir yol arıyorum.

Ebeveyn ve çocuk arasındaki ilişki menü ağacında tanımlanır.

Düğüm başvurusunu kullanabileceğimi biliyorum, ancak bu her biri bir sayfa oluşturduğunda, menü ilişkisini ve sonra düğüm referans ilişkisini tanımlamak zorunda kalacağı anlamına gelir.

Ayrıca başka bir içerik türü oluşturabileceğimi biliyorum, ancak tüm içerik sayfaları aynı göründüğü için bunun aşırıya kaçtığını düşünüyorum.

17
Camsoft

Bir çözüm, ilişkileri tanımlamak için sınıflandırma terimlerini kullanmak ve daha sonra bu terim ilişkilerini menü öğelerine çevirmek için Sınıflandırma Menü modülü kullanmaktır. Panelleri kullanmak istemiyorsanız Özel Sayfa modülü ve Bağlam modüllerini tüm sayfalardaki bilgileri ve bölgeleri kontrol etmek için kullanabilirsiniz.

4
Adam S

Bunu tam olarak Menu Node API ve Menu Node Views modüllerini kullanarak yapabilirsiniz.

Gerekli içerik türünüzü içeren bir görünüm oluşturun ve "Menü: Menü bağlantı kimliği" nin bağlamsal bir filtresini seçin (bu yalnızca yukarıdaki modüller kurulu olduğunda kullanılabilir).

"Filtre değeri kullanılamadığında", "Varsayılan değer sağla" yı ve "PHP kodu" nu seçin.

Aşağıdaki kod parçası bunu yapacak, o zaman görünümden bir bloğu açığa çıkarıyorsunuz ve oradasınız:

if (function_exists('menu_node_get_links')){  
   $node = node_load(intval(arg(1)));  
   if (isset($node->menu_node_links)){
      foreach($node->menu_node_links as $mlid=>$data){  
         return $mlid;
      }  
   }
}
16
Emile Kott

Düğüm Hiyerarşi Modülü , bir görünüm entegrasyonu sağlamanın yanı sıra bu tür bir ilişkiye izin verir.

Düğüm Hiyerarşisi, düğümlerin ağaç benzeri bir içerik hiyerarşisi oluşturan diğer düğümlerin alt öğeleri olmasına izin verir. Modül şunları sunar:

  • Tek Tıklamayla hiyerarşik menüler oluşturma
  • Hiyerarşik ekmek kırıntıları
  • Pathauto (ve token modülü) kullanarak otomatik hiyerarşik URL'ler

    (örneğin: q = aboutus/geçmiş/başlangıç).

  • İstenirse hiyerarşik menülerin otomatik oluşturulması.
  • İsteğe Bağlı Görünümler entegrasyonu.
  • İsteğe bağlı Node Erişim entegrasyonu.
4
CCMonkey

Belki bu D7/Views 3 için değişmiştir, ancak istenen davranışı gerçekleştirmek için herhangi bir PHP) gerekmez:

  1. install menu_views , menu_node ve menu_node_views modüller.
  2. "menü ağacı" türünde yeni bir görünüm oluştur
  3. "Menü: bağlantı başlığı" ve "Menü: açıklama" alanlarını ekleyin
  4. Bağlamsal Filtre/Bağımsız Değişken Ekle "Menü: Node ID"; "URL'den İçerik Kimliği" varsayılan değerini girin
  5. İlişki Ekle "Menü: Üst menü bağlantı kimliği"

işte. çalışmamalı , ama işe yarıyor.

Sadece düğümlerle iyi çalışır, ancak düğüm hiyerarşisinde menü bağlantılarını kullanmanın avantajı, düğümler etrafında gezinme oluşturmakla sınırlı kalmamanızdır. Dış bağlantıları bile görünümünüze dahil edebilirsiniz.

2
aaronbauman

Nispeten yeni bir modül var Görünüm Menüsü Node Çocuk Filtresi tam olarak istediğinizi yapıyor gibi görünüyor:

Bu modül, Görünümlere bir menünün yapısına göre bir düğümün alt düğümlerini alacak bağlamsal bir filtre ekler.

2
nwellnhof

Varlık çevirisi kullanıyorsanız ve düğüm farklı menülere bağlıysa, burada geçerli dile filtre uygulayan kodun uyarlanması verilmiştir. Bunu, diğer yanıtlarda açıklandığı gibi görünümünüzdeki bağlamsal filtre (üst menü bağlantı kimliği) PHP kodu) olarak kopyalamanız gerekir

 if (function_exists('menu_node_get_links')) {
global $language;
$lang = $language->language;
$node = node_load(intval(arg(1)));
if (isset($node->menu_node_links)) {
  foreach ($node->menu_node_links as $mlid => $data) {  
    if ($lang == $data->language) {
      return($mlid);
    }
  }
}
  }
0
bendev

Emile yanıtı doğru, ancak belirtilen PHP kodu bir bağlamsal filtre türünü yapıştırmak zorunda kaldım " Menü: Üst menü bağlantı kimliği ".

if (function_exists('menu_node_get_links')){  
   $node = node_load(intval(arg(1)));  
   if (isset($node->menu_node_links)){
      foreach($node->menu_node_links as $mlid=>$data){  
         return $mlid;
      }  
   }
}
0
cptstarling

Bu amaçla Düğüm Referansı kullanmayı düşündünüz mü?

  1. Görüntülemek istediğiniz içerik türüne bir düğüm referans alanı sağlayın.
  2. Bu alanı Görünüm'de bağlamsal filtre olarak kullanın (varsayılan değer: url'den içerik kimliği ).
  3. Bu görünüm görüntüsünü içeriğe bir blok olarak ekleyin. İçinde görüntülendiği düğüm, buna referansta bulunan düğümlerin bir üst öğesi olarak görülecektir.

Böylece, muhtemelen aradığınıza benzer bir sonuç elde edebilirsiniz.

0
cptstarling

sayı kuyruğ / Menü Node Views Şu güzel çözümümüz var:

  • 'Üst menü bağlantı kimliği' ile bağlamsal bir filtre ekleyin,
  • 'Varsayılan değeri sağla'yı seçin
  • 'özel php kodu' nu seçin
  • aşağıdaki kodu girin

    $menu_item = menu_get_active_trail();  
    $current_item = array_pop($menu_item);  
    $menu_item_plid = $current_item['plid'];  
    return $menu_item_plid;  
    
0
tostinni