it-swarm-tr.com

Yeni menü türü oluşturma, alanları tanımlama, metadata.xml

Özel bir com_tags/tags düzeni oluşturmak istiyorum, ancak menü öğesi için parent_id alanı tutmak gerekiyor.

Ne yaptım oluşturmak:

/templates/mytemplate/html/com_tags/tags/species.php
/templates/mytemplate/html/com_tags/tags/species.xml (copied from administrator/components/tags/config.xml)

Bu, menü türü açılır penceresinde bir "Tür" girişi gösterir, ancak özelleştirme alanlarının hiçbiri artık mevcut değildir. "Tüm etiketlerin listesi" girişinde parent_id alanına ihtiyacım var.

Kod hata ayıkladım ve görünüşe göre ihtiyacım var

/templates/mytemplate/html/com_tags/metadata.xml

bir tür "menü" girişi içermesi gereken görünüyor. Bunun nasıl biçimlendirilmesi gerektiğine dair bir örnek bulamıyorum.

Bu Akeeba yedeklemesinden bir örnek dosya https://github.com/akeeba/contactus/blob/master/component/frontend/views/item/metadata.xml ama nasıl ekleyeceğimi anlayamıyorum burada seçenekler?

1
jdog

Sorunuzu anlarsam, com_tags bileşeni için özel bir menü türü oluşturmaya çalışıyorsunuz ve menü yöneticisinde oluşturduğunuzda menü öğesinin kimliğini ayarlamanız gerekiyor.

Bu durumda config.xml dosyasını kopyalamamalısınız

Kopyalamalısın

joomlaRoot/components/com_tags/views/tags/default.xml 

üst kimlik alanları ve içinde tanımlanan parametreler vardır.

İsmi tür.xml olarak değiştirdiğinizden emin olun ve Joomla'nın bunun farklı bir düzen olduğunu bilmesi için başlık/seçenek metnini değiştirin.

Umarım bu yardımcı olur.

1
Mathew Lenning

Eğer doğru anlıyorum sonra başka bir seçenek var ve bu bir tür geçersiz kılma olmadan elde etmek zor olan normal şekilde "görmezden" ve geçersiz kılma sizin bilgi ayrı ayrı almak için bir php dosyası olduğu gerçeğini kullanın.

RL ile Itemid nasıl alınır ve JRoute'a aktarılır

Buradaki cevabım, menü öğesi kimliğini alarak belirli bir sayfaya bağlantı oluşturmak için aşağıdakileri gösterir.

$app = JFactory::getApplication(); 
$menu = $app->getMenu();
$menuItem = $menu->getItems( 'link', 'index.php?option=com_example&view=something', true );
echo JRoute::_('index.php?Itemid='.$menuItem->id);

Şimdi bu durumda $menuItem Aslında bu menü öğesiyle ilgili bilgileri içeren bir nesnedir.

yani.....

$app = JFactory::getApplication(); 
$menu = $app->getMenu();
$menuItem = $menu->getItems( 'link', 'index.php?option=com_example&view=something', true );
echo JRoute::_('index.php?Itemid='.$menuItem->parent_id);

Üst menü öğesine bir bağlantı almalısınız.

Ancak şu anki menü öğesine ihtiyacınız olabilir, bu nedenle bu satırı ayarlayarak:

$menuItem = $menu->getItems( 'link', 'index.php?option=com_example&view=something', true );

için:

$menuItem = $menu->getActive();

Yalnızca geçerli sayfanın üst öğesinin bağlantısını alabilmelisiniz. Deneme muhtemelen bunu daha da ileriye götürebilir ve $menu->getItems() kullanabileceğiniz birçok seçeneğe sahiptir (bununla ilgili iyi bir belge sayfası bulamamam rağmen).

1
Jordan Ramstad