Bir sınıflandırma menüsünü standart menü öğesinin alt menüsü olarak nasıl enjekte edebilirim?


12

Aşağıdakine benzer bir üst düzey yapıya sahip bir ana menüm var:

Home - Categories - Something Else - ... - Contact

Bu üst düzey bağlantıların her biri uygun bir düğüm sayfasına gider.

Kategoriler (çok düzeyli) için bir kelime var ve bu sınıflandırma terimlerini "Kategoriler" öğesinin altındaki bir alt menüde almak gerekir. Alt menünün kelime dağarcığı gibi büyümesi / küçültülmesi gerektiği için, öğeleri ana menüye sabit olarak kodlamaktan kaçınmak istiyorum.

Geçmişte taksonomi işlemlerine bağlanan ve belirli bir menünün alt öğelerini buna göre yöneten bunu gerçekleştirmek için aşırı ayrıntılı kod yazdım ( Taksonomi Menüsünün yaptıklarına çok benzer , ancak her biri için farklı bir menüye sahip olmak zorunda kalmadan) kelime).

Bu yöntem çalışırken, ideal değildir ve kesinlikle jenerik değildir. Bu kodu eski projeden yenisine kaldıramıyorum, makul miktarda özelleştirme gerektiriyor.

Bunun için 'standart', modül tabanlı bir çözüm olması gerektiğini hissetmem mümkün değil.

Bir grup farklı modülü bir arada kullanmak için bazı öneriler gördüm (hatta bazıları Views'a dayalı modülleri kullanmanızı önerir, garip bir şekilde). Herhangi bir öneriye açığım, ancak 1 veya 2'den fazla modül ve sabit kodlu, içeriğe özgü yapılandırma yükü içeriyorsa, bu durumda muhtemelen çok fazla yardımcı olmayacaktır.


1
Sanırım gördüm ... Benzer konu , menüde taksonomiye dayalı öğeler oluşturmak için kuralları kullanma hakkında fikir içerir, ancak bu da ideal olmaktan uzak görünüyor.
Mołot

Eğer doğru anladıysam, bu modülün benzeri görünüyor musunuz drupal.org/project/taxonomy_treemenu , güzel menü ile entegre olabilir ama D6
Bala

Gerçek menü öğelerine sahip olmanız gerekiyor mu veya oluşturulduğunda taksonomi ağacı terimlerinin menüye eklenmesi uygun mu?
rooby

Teşekkürler @Bala, yine de bir D7 çözümüne ihtiyacım var
Clive

1
Clive bir önerim var. Bildiğim gibi kelime adı dahil taksonomu menü oluşturmak ve daha sonra doğrudan oluşturulan menü içine doğrudan diğer menü bağlantıları ekleyebilirsiniz. Taksonomi öğeleri otomatik olarak güncellenebilir ... Çalışıp çalışmayacağını bilmiyorum, sadece deneyin.
milkovsky

Yanıtlar:


13

Seçenek a) Yanılmıyorsam, sadece Sınıflandırma Menünüzün nerede oluşturulacağını seçemezsiniz (Menü Konumu)? Bu ile alabilirsiniz düşünüyorum tek sorun , taksonomi her güncellendiğinde menüyü yeniden yapılandırmanız gerektiğini düşünüyorum

Seçenek b) Sitemde buna benzer bir şey yaptım, birincil menüme bir görünüm eklememe izin vermek için Menü Görünümleri modülünü kullandım .

Tüm sınıflandırma terimlerinizi bir blok görüntü olarak listeleyen yeni bir görünüm oluşturursanız, gerekirse görünümde ek filtreleme / değişiklik uygulayın (bunu yapamazsınız ancak örneğimde yapmak istedim). Ardından ana menünüze yeni bir bağlantı eklediğinizde, bağlantı yerine bir görünüm kullanmayı seçebilirsiniz. Oradan hangi görünümü kullanmak istediğinizi seçersiniz, üst olarak 'Kategori' menü öğesini seçin ve kaydedin (kaydettikten sonra modülün kendisinde bir hata gibi görünen menüde etkinleştirmeniz gerekir)

Bunun sizin için en iyi çözüm olduğunu garanti edemiyorum, ancak yeni test ettiğimde işe yaradı


1
Evet, oldukça aptal olduğum ortaya çıkıyor - Taksonomi Menüsü tam olarak bu işlevselliğe sahiptir (seçenek a). Karşılaştığım menü oldukça küçük ve kategoriler sık ​​sık değişmeyecek, bu yüzden yeniden oluşturma bir sorun değil. Sağlık kontrolü için çok teşekkürler
Clive

3

Menupoly , özel "menü ağacı kaynakları" için bir API'ya sahiptir. Ben gerçekten bu menü bağlantıları dışında bir şey için kullanmadım, bu yüzden yolda düzeltmek zorunda sorunları olabilir. Ama temel mimari orada.

Bu rotaya giderseniz,

  • "Kategoriler" sayfasının ötesinde herhangi bir sınıflandırma terimi bağlantısı olmadan mevcut ana menünüzü kullanın.
  • Taksonomi ağacınızı bundan bağımsız olarak oluşturun.
  • Menu_link'lerini normal olarak getiren özel bir "menü ağacı kaynağı" yazın, ancak bir sınıflandırma terimi bulduğunda bunun yerine sınıflandırmadan alır.
    Dolayısıyla, bir şekilde "Kategoriler" bağlantısının taksonomiyle ilgili olduğunu tespit edebilmeniz gerekir.
  • Bir menü bağlantısı sınıflandırma ile ilgiliyse ve aynı zamanda düzenli bir alt menüye sahipse, iki tür çocuğu bir şekilde karıştırmanız gerekir.

Bu rota biraz işe yarayabilir, ancak diğerleri için yararlı olabilir ve muhtemelen sitenize özgü mantığınızdan daha zarif ve tekrar kullanılabilir.

Şu anda yalnızca bir sınıflandırma "menü ağacı kaynağı" bile mevcut değildir, bu yüzden karışık bir eklenti ile başlamadan önce makul bir ilk adım olabilir.


bu söyleniyor, Andrew Morris'in kabul ettiği cevap yeterince iyi olabilir. Ve bu benim için daha az iş anlamına geliyor :) Yine de yararlı bulabilecek herkes için bunu göndermek istedim.
donquixote

V. ilginç, teşekkürler. Kabul edilen cevap işi gayet iyi yapıyor ama kod çözümleri almakla da çok ilgileniyorum. Modüllerinizden birinin PSR-0 iyiliği üzerine kurulduğunu varsayabilir miyim? :)
Clive

Bu, PEAR'a benzeyen ancak sığ dizinlere sahip PHP 5.2 xautoload uyumluluk modunu kullanır. Yani, PSR onaylı değil. Bir gün PSR-0'a gidebilirim ..
donquixote

Her ne kadar PSR-X ile ilgileniyorum (ne yazık ki D8'e asla
girmeyebilir

2

Metro Menüler gereksiniminizi yapacak ve hatta dahili derilere sahip olacak ve güzel menüler gibi davranan kendi oluşturabilirsiniz. Bu modülle menüden veya sınıflandırmadan herhangi bir derinliğe sahip alt öğeler seçebilirsiniz ve bunu daha önce kullanmıyorum.

Dokunmatik ekranla uyumluluk (iPad, iPhone vb.).

resim açıklamasını buraya girin


2

Aynı şey için Om Maxi menü modülünü kullanabilirsiniz . Yöneticinin ek olarak istediğiniz blokları içeren menüler, görünümler, slayt gösterisi, menü, kullanıcı, hoş menüler, hızlı sekmeler ve tablolar, listeler, resimler, videolar vb. Özel bloklar oluşturmasına izin verir.

Sınıflandırma Menüsü'nü kullanarak ayrı bir menü oluşturabilir ve bu menüyü om maxi menüsü tarafından oluşturulan menüye alt bağlantılar olarak ekleyebilirsiniz.

Teşekkürler


2

Kısa bir süre önce bir ürün kategorisi menüsü için benzer bir şey yaptım. Bu sadece 1 seviye derinlik içindi, ancak daha fazla seviye göstermek için kolayca değiştirilebilir.

/**
 * Implements theme_menu_link().
 */
function THEME_menu_link__main_menu($variables) {

  $sub_menu = '';
  $element = $variables['element'];
  $menu_string = $element['#title'];

  if (module_load_include('inc','pathauto','pathauto') !== FALSE) {
    $menu_string =  pathauto_cleanstring($menu_string);
  }

  if ($menu_string == 'categories') {
    $sub_menu = get_categories_menu();
  }

  if ($sub_menu) {
    $element['#attributes']['class'][] = 'haschildren';
  }

  $output = l($element['#title'], $element['#href'], $element['#localized_options']);
  return '<li' . drupal_attributes($element['#attributes']) . '>' . $output . $sub_menu . "</li>\n";
}

function get_categories_menu() {

  $current_category = arg(2); // Get current category from path
  $volcab = taxonomy_vocabulary_machine_name_load('product-categories');
  $tree = taxonomy_get_tree($volcab->vid,0,1);

  $output = '<ul class="menu product-category">';
  foreach ($tree as $term) {
    $safe_term = pathauto_cleanstring($term->name);
    $class = ($current_category==$safe_term) ? ' class="active"' : '';
    $output .= '<li><a' . $class . ' href="/drupal//path/to/' . $safe_term . '">' . $term->name . '</a></li>';
  }
  $output .= '</ul>';

  return $output;
}

Get_category_menu işlevi bir blok olarak daha iyi durumdadır, ancak burada rahatlık için template.php dosyasında başka bir işlev olarak gösterilir.

Umarım yardımcı olur veya en azından bir çözüme doğru bir adımdır.

Paul

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.