Saya memiliki item menu untuk tampilan tertentu dalam komponen khusus. Terlampir pada item menu ini saya telah Template Style
memilih yang lain , bukan template standar. Mengakses tampilan melalui menu berfungsi dengan baik, karena melampirkan ke URL Itemid
.
Sekarang saya ingin menautkan, menggunakan JRoute, tampilan dengan yang lain, namun JRoute tidak menghasilkan URL yang diinginkan.
echo JRoute::_('index.php?option=com_example&view=reporting');
/index.php?option=com_example&view=reporting
JRoute
tidak akan menambahkan Itemid ke URL, menyebabkan gaya templat yang dipilih untuk item menu tidak berfungsi.
Apakah ada cara untuk "menghitung" Itemid (selain dari melakukan kueri dalam tabel jos_menu
pada kolom link
) dan melampirkannya ke JRoute?
joomla-2.5
jroute
Valentin Despa
sumber
sumber
Jawaban:
Berikut adalah teknik yang saya gunakan (tidak dapat mengingat di mana saya menemukannya).
Ini merupakan keajaiban bagi saya.
sumber
output dari JRoute akan tergantung pada apa yang Anda makan.
mungkin mengembalikan sesuatu selain
Bahkan jika Anda memiliki item menu kategori daftar blog untuk catid = 5, yang terakhir mungkin memberi Anda menu-url (Saya belum menguji url ini dengan tepat). Coba dengan parameter get yang berbeda untuk mendapatkan hasil yang berbeda (terkadang sangat salah, seperti kata @Fedik)
sumber
Kuncinya di sini adalah mengatur file komponen router.php Anda (yang harus ditemukan di folder root komponen Anda di ujung depan) dengan logika yang akan mencari dan memilih item menu yang sesuai. Saya ingin melihat ini terjadi secara otomatis, tetapi sejauh yang saya tahu ini bukan masalahnya.
Mungkin akan lebih baik untuk mengerjakan blok kode ini ke beberapa jenis fungsi pembantu yang dapat digunakan untuk secara otomatis menemukan item menu yang paling cocok untuk konten.
Berikut adalah kode yang telah saya gunakan di beberapa komponen khusus saya untuk mendapatkan item menu yang paling pas:
Semua ini agak berantakan (dan saya ingin perbaikan jika ada yang memilikinya!), Tapi itu menyelesaikan pekerjaan. Jika item menu saat ini adalah yang paling cocok, itu akan selalu tetap dengan itu.
Kalau tidak, ia akan menemukan kecocokan terbaik berdasarkan Nama komponen -> nama tampilan -> nama tata letak -> nilai id. Semakin jauh ke kanan cocok, semakin baik saya menganggap pertandingan!
sumber
Afaik JRoute akan mengambil yang aktif
Itemid
(dan juga yang aktifoption
) jika tidak ada yang disediakan. Jika itu tidak berhasil, itu berarti panggilan ke kode Anda datang tanpa Itemid untuk memulai. Jika demikian, hal termudah adalah menambahkan Itemid ke panggilan awal.Jika Anda perlu mencari item menu, saya tidak akan melakukan query langsung tetapi menggunakan JMenu sebagai gantinya.
sumber
JRoute::_('index.php?option=com_example&view=reporting&Itemid=10')
JRouter dapat kembali/current-path?view=reporting&Itemid=10
... apakah ada beberapa hal khusus?