Mam element menu dla konkretnego widoku w komponencie niestandardowym. Załączony do tego elementu menu mam inny Template Style
wybrany, a nie standardowy szablon. Dostęp do widoku za pomocą menu działa dobrze, ponieważ jest on dołączany do adresu URL Itemid
.
Teraz chcę połączyć, używając JRoute, widok z innym, jednak JRoute nie generuje pożądanego adresu URL.
echo JRoute::_('index.php?option=com_example&view=reporting');
/index.php?option=com_example&view=reporting
JRoute
nie dołącza Itemid do adresu URL, co powoduje, że wybrany styl szablonu elementu menu nie działa.
Czy istnieje sposób na „obliczenie” Itemid (oprócz wykonania zapytania w tabeli jos_menu
w kolumnie link
) i dołączenie go do JRoute?
joomla-2.5
jroute
Valentin Despa
źródło
źródło
Odpowiedzi:
Oto technika, której użyłem (nie pamiętam, gdzie ją znalazłem).
To działało dla mnie cuda.
źródło
wyjście z JRoute będzie zależeć od tego, co go karmisz.
może zwrócić coś innego niż
W rzeczywistości, jeśli masz wpis na blogu kategorii pozycji menu dla catid = 5, ten ostatni może dać ci adres URL menu (nie przetestowałem tego dokładnego adresu URL). Spróbuj użyć różnych parametrów get, aby uzyskać różne wyniki (czasami bardzo źle, jak powiedział @Fedik)
źródło
Kluczem tutaj jest skonfigurowanie pliku router.php komponentów (który powinien znajdować się w folderze głównym komponentu na froncie) z logiką, która wyszuka i wybierze odpowiedni element menu. Chciałbym zobaczyć, jak to się dzieje automatycznie, ale o ile wiem, tak nie jest.
Prawdopodobnie najlepiej byłoby zastosować ten blok kodu w funkcji pomocniczej, której można użyć do automatycznego znalezienia najlepiej dopasowanego elementu menu dla treści.
Oto kod, którego użyłem w kilku moich niestandardowych komponentach, aby uzyskać najlepiej pasujący element menu:
Wszystko to jest trochę bałaganu (i chciałbym ulepszeń, jeśli ktoś je ma!), Ale wykonuje zadanie. Jeśli bieżący element menu jest najlepiej dopasowany, zawsze będzie się go trzymał.
W przeciwnym razie powinien znaleźć najlepsze dopasowanie na podstawie nazwy komponentu -> nazwa widoku -> nazwa układu -> wartość identyfikatora. Im bardziej pasuje do prawej, tym lepiej uważam dopasowanie!
źródło
Afaik JRoute weźmie aktywny
Itemid
(a także aktywnyoption
), jeśli nie zostanie podany. Jeśli to nie zadziała, oznacza to, że wywołanie twojego kodu przychodzi bez Itemid na początek. Jeśli tak, najłatwiej byłoby dodać Itemid do wywołania początkowego.Jeśli potrzebujesz wyszukać element menu, nie zrobiłbym bezpośredniego zapytania, ale zamiast tego użyłbym JMenu.
źródło
JRoute::_('index.php?option=com_example&view=reporting&Itemid=10')
JRouter może zwrócić/current-path?view=reporting&Itemid=10
... czy są jakieś konkretne rzeczy?