Eu tenho um item de menu para uma exibição específica em um componente personalizado. Anexado a este item de menu, tenho outro Template Style
selecionado, não o modelo padrão. O acesso à visualização por meio do menu funciona bem, pois é anexado à URL Itemid
.
Agora eu quero vincular, usando o JRoute, uma visualização com outra, no entanto, o JRoute não está gerando a URL desejada.
echo JRoute::_('index.php?option=com_example&view=reporting');
/index.php?option=com_example&view=reporting
JRoute
não anexará o Itemid ao URL, fazendo com que o estilo de modelo selecionado para o item de menu não funcione.
Existe uma maneira de "calcular" o Itemid (além de fazer uma consulta na tabela jos_menu
na coluna link
) e anexá-lo ao JRoute?
joomla-2.5
jroute
Valentin Despa
fonte
fonte
Respostas:
Aqui está uma técnica que eu usei (não me lembro onde a encontrei).
Isso fez maravilhas para mim.
fonte
a saída do JRoute dependerá da sua alimentação.
pode retornar algo mais do que
De fato, se você tiver uma listagem de blog de categoria de item de menu para catid = 5, o último poderá fornecer o URL do menu (não testei esse URL exato). Tente com diferentes parâmetros de obtenção para obter resultados diferentes (às vezes muito errados, como disse o @Fedik)
fonte
A chave aqui é configurar o arquivo router.php dos componentes (que deve ser encontrado na pasta raiz do seu componente no front end) com uma lógica que irá procurar e selecionar o item de menu apropriado. Eu adoraria ver isso acontecer automaticamente, mas até onde eu sei, esse não é o caso.
Provavelmente, seria melhor trabalhar esse bloco de código em algum tipo de função auxiliar que possa ser usada para encontrar automaticamente o item de menu mais adequado ao conteúdo.
Aqui está o código que eu usei em vários dos meus componentes personalizados para obter o item de menu mais adequado:
Tudo isso é uma bagunça (e eu adoraria melhorias se alguém as tiver!), Mas faz o trabalho. Se o item de menu atual for a melhor correspondência, ele sempre permanecerá com isso.
Caso contrário, ele deve encontrar a melhor correspondência com base em Nome do componente -> nome da exibição -> nome do layout -> valor do ID. Quanto mais à direita corresponder, melhor considero a partida!
fonte
O Afaik JRoute assumirá o ativo
Itemid
(e também o ativooption
) se nenhum for fornecido. Se isso não funcionar, significa que a chamada para o seu código vem sem o Itemid, para começar. Nesse caso, o mais fácil seria adicionar o Itemid à chamada inicial.Se você precisar procurar o item de menu, eu não faria uma consulta direta, mas usaria o JMenu.
fonte
JRoute::_('index.php?option=com_example&view=reporting&Itemid=10')
JRouter pode retornar/current-path?view=reporting&Itemid=10
... há algumas coisas específicas?