it-swarm-id.com

Buat jenis menu baru, tentukan bidang, metadata.xml

Saya ingin membuat tata letak com_tags/tag khusus, namun saya harus menjaga field parent_id untuk item menu.

Apa yang telah saya lakukan adalah membuat:

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

Ini menunjukkan entri "Spesies" di popup jenis menu, namun tidak ada bidang penyesuaian yang ada lagi. Saya perlu bidang parent_id, yang ada di entri "Daftar semua tag".

Saya men-debug kode dan ternyata saya perlu

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

yang tampaknya perlu mengandung semacam entri "menu". Saya tidak dapat menemukan contoh bagaimana ini harus diformat.

Ini adalah contoh file dari cadangan Akeeba https://github.com/akeeba/contactus/blob/master/component/frontend/views/item/metadata.xml tetapi saya tidak tahu cara menambahkan pilihan di sini?

1
jdog

Jika saya memahami pertanyaan Anda, Anda mencoba membuat jenis menu khusus untuk komponen com_tags dan perlu mengatur id untuk item menu ketika Anda membuatnya di manajer menu.

Jika demikian, Anda tidak boleh menyalin config.xml

Anda harus menyalin

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

yang memiliki bidang untuk id induk, serta params yang ditentukan di dalamnya.

Pastikan untuk mengubah nama menjadi species.xml dan ubah judul/opsi teks sehingga Joomla tahu ini adalah tata letak yang berbeda.

Saya harap ini membantu.

1
Mathew Lenning

Jika saya mengerti dengan benar maka ada pilihan lain, dan itu adalah "mengabaikan" cara normal yang sulit dicapai tanpa semacam override dan menggunakan fakta bahwa override Anda adalah file php untuk mendapatkan informasi secara terpisah.

Cara mendapatkan Itemid dengan URL dan meneruskannya ke JRoute

Jawaban saya di sini menunjukkan yang berikut untuk membuat tautan ke halaman tertentu dengan mendapatkan ID item menu.

$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);

Sekarang dalam kasus ini $menuItem Sebenarnya adalah objek yang berisi informasi tentang item menu itu.

begitu.....

$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);

Seharusnya Anda mendapat tautan ke item menu induk.

Tetapi Anda mungkin hanya perlu item menu saat ini, jadi dengan menyesuaikan baris ini:

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

untuk:

$menuItem = $menu->getActive();

Anda seharusnya bisa mendapatkan tautan dari induk halaman saat ini saja. Bereksperimen mungkin dapat mengambil ini lebih jauh serta $menu->getItems() memiliki banyak opsi yang dapat Anda gunakan (walaupun saya tidak dapat menemukan halaman dokumentasi yang bagus di dalamnya).

1
Jordan Ramstad